diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-11-04 09:42:46 +0100 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-11-04 09:42:46 +0100 |
commit | 5a53925a6eea929118e5438685e9ebc16ae48aa2 (patch) | |
tree | e887d34223ac802be00b2231cb8aacee20b9e4b3 /src | |
parent | ce3b0136c6d9d09af41969d3dc9634f115505a32 (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.vim | 16 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9class.c | 14 |
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; } |