patch 9.1.0989: Vim9: Whitespace after the final enum value causes a syntax error
Problem: Vim9: Whitespace after the final enum value causes a syntax
error
Solution: Fix parsing to allow whitespace after the final enum value.
(Doug Kearns)
closes: #16383
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_codestyle.vim b/src/testdir/test_codestyle.vim
index 83f52ef..51c1209 100644
--- a/src/testdir/test_codestyle.vim
+++ b/src/testdir/test_codestyle.vim
@@ -85,6 +85,7 @@
&& fname !~ 'test_let.vim'
&& fname !~ 'test_tagjump.vim'
&& fname !~ 'test_vim9_cmd.vim'
+ && fname !~ 'test_vim9_enum.vim'
cursor(1, 1)
var lnum = search(
fname =~ 'test_vim9_assign.vim' ? '[^=]\s$'
diff --git a/src/testdir/test_vim9_enum.vim b/src/testdir/test_vim9_enum.vim
index a5fb26f..74eb468 100644
--- a/src/testdir/test_vim9_enum.vim
+++ b/src/testdir/test_vim9_enum.vim
@@ -908,6 +908,18 @@
END
v9.CheckSourceSuccess(lines)
+ lines =<< trim END
+ vim9script
+ enum Car # cars
+ # before enum
+ Honda(), # honda
+ # before enum
+ Ford() # ford
+ endenum
+ assert_equal(1, Car.Ford.ordinal)
+ END
+ v9.CheckSourceSuccess(lines)
+
# Test for using an unsupported comment
lines =<< trim END
vim9script
@@ -921,6 +933,29 @@
v9.CheckSourceFailure(lines, 'E1170: Cannot use #{ to start a comment', 4)
enddef
+" Test trailing whitespace after enum values
+def Test_enum_whitespace()
+ var lines =<< trim END
+ vim9script
+ enum Car
+ Honda,
+ Ford
+ endenum
+ defcompile
+ END
+ v9.CheckSourceSuccess(lines)
+
+ lines =<< trim END
+ vim9script
+ enum Car
+ Honda(),
+ Ford()
+ endenum
+ defcompile
+ END
+ v9.CheckSourceSuccess(lines)
+enddef
+
" Test string() with enums
def Test_enum_string()
var lines =<< trim END
diff --git a/src/version.c b/src/version.c
index 987aa9b..99f4103 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 989,
+/**/
988,
/**/
987,
diff --git a/src/vim9class.c b/src/vim9class.c
index 22db751..7c7700b 100644
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -1623,6 +1623,8 @@
}
}
+ p = skipwhite(p);
+
if (*p != NUL && *p != '#')
{
if (did_emsg == did_emsg_before)