summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2023-11-04 09:42:46 +0100
committerChristian Brabandt <cb@256bit.org>2023-11-04 09:42:46 +0100
commit5a53925a6eea929118e5438685e9ebc16ae48aa2 (patch)
treee887d34223ac802be00b2231cb8aacee20b9e4b3 /src
parentce3b0136c6d9d09af41969d3dc9634f115505a32 (diff)
patch 9.0.2088: Vim9: still allows abstract static methodsv9.0.2088
Problem: Vim9: still allows abstract static methods (after v9.0.2084, v9.0.2085 and v9.0.2087) Solution: Disallow abstract static methods closes: #13479 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Diffstat (limited to 'src')
-rw-r--r--src/testdir/test_vim9_class.vim16
-rw-r--r--src/version.c2
-rw-r--r--src/vim9class.c14
3 files changed, 16 insertions, 16 deletions
diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim
index 65fa977d86..1f639e2b3f 100644
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -5607,15 +5607,13 @@ def Test_abstract_method()
v9.CheckSourceFailure(lines, 'E1371: Abstract must be followed by "def"', 3)
# Use a static abstract method
- # TODO: this does not fail, so skip it for now
-
- # lines =<< trim END
- # vim9script
- # abstract class A
- # abstract static def Foo(): number
- # endclass
- # END
- # v9.CheckSourceFailure(lines, 'E1371: Abstract must be followed by "def"', 3)
+ lines =<< trim END
+ vim9script
+ abstract class A
+ abstract static def Foo(): number
+ endclass
+ END
+ v9.CheckSourceFailure(lines, 'E1371: Abstract must be followed by "def"', 3)
# Type mismatch between abstract method and concrete method
lines =<< trim END
diff --git a/src/version.c b/src/version.c
index a47536170f..e45df160bd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2088,
+/**/
2087,
/**/
2086,
diff --git a/src/vim9class.c b/src/vim9class.c
index f709c1f04d..e9131fe3ba 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -1557,13 +1557,6 @@ early_ret:
break;
}
- p = skipwhite(pa + 8);
- if (STRNCMP(p, "def", 3) != 0 && STRNCMP(p, "static", 6) != 0)
- {
- emsg(_(e_abstract_must_be_followed_by_def));
- break;
- }
-
if (!is_class)
{
// "abstract" not supported in an interface
@@ -1577,6 +1570,13 @@ early_ret:
break;
}
+ p = skipwhite(pa + 8);
+ if (STRNCMP(p, "def", 3) != 0)
+ {
+ emsg(_(e_abstract_must_be_followed_by_def));
+ break;
+ }
+
abstract_method = TRUE;
}