summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-07-19 21:04:23 +0200
committerBram Moolenaar <Bram@vim.org>2021-07-19 21:04:23 +0200
commitac2cd2b08f0fd15e9c3759da043e9b28da80dca8 (patch)
tree784f7dae2ebe9f5c70af4e4ab7fa7a543a36c56b
parent6106504e9edc8500131f7a36e59bc146f90180fa (diff)
downloadvim-git-ac2cd2b08f0fd15e9c3759da043e9b28da80dca8.tar.gz
patch 8.2.3185: Vim9: start of inline function found in comment linev8.2.3185
Problem: Vim9: start of inline function found in comment line. Solution: Do not check for inline function in comment line. (closes #8589)
-rw-r--r--src/testdir/test_vim9_expr.vim4
-rw-r--r--src/userfunc.c33
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 15 deletions
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index e7c08f4af..49109c7df 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -2075,6 +2075,10 @@ def Test_expr7_lambda_block()
})
assert_equal(['no', 'yes', 'no'], dll)
+ # ignored_inline(0, (_) => {
+ # echo 'body'
+ # })
+
sandbox var Safe = (nr: number): number => {
return nr + 7
}
diff --git a/src/userfunc.c b/src/userfunc.c
index 3dfa68097..79e711c0a 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -866,26 +866,29 @@ get_function_body(
}
}
- // Check for nested inline function.
- end = p + STRLEN(p) - 1;
- while (end > p && VIM_ISWHITE(*end))
- --end;
- if (end > p && *end == '{')
+ if (nesting_def[nesting] ? *p != '#' : *p != '"')
{
- --end;
+ // Not a comment line: check for nested inline function.
+ end = p + STRLEN(p) - 1;
while (end > p && VIM_ISWHITE(*end))
--end;
- if (end > p + 2 && end[-1] == '=' && end[0] == '>')
+ if (end > p && *end == '{')
{
- // found trailing "=> {", start of an inline function
- if (nesting == MAX_FUNC_NESTING - 1)
- emsg(_(e_function_nesting_too_deep));
- else
+ --end;
+ while (end > p && VIM_ISWHITE(*end))
+ --end;
+ if (end > p + 2 && end[-1] == '=' && end[0] == '>')
{
- ++nesting;
- nesting_def[nesting] = TRUE;
- nesting_inline[nesting] = TRUE;
- indent += 2;
+ // found trailing "=> {", start of an inline function
+ if (nesting == MAX_FUNC_NESTING - 1)
+ emsg(_(e_function_nesting_too_deep));
+ else
+ {
+ ++nesting;
+ nesting_def[nesting] = TRUE;
+ nesting_inline[nesting] = TRUE;
+ indent += 2;
+ }
}
}
}
diff --git a/src/version.c b/src/version.c
index c6e3fafc5..04354c2aa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3185,
+/**/
3184,
/**/
3183,