diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-07-19 21:04:23 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-07-19 21:04:23 +0200 |
commit | ac2cd2b08f0fd15e9c3759da043e9b28da80dca8 (patch) | |
tree | 784f7dae2ebe9f5c70af4e4ab7fa7a543a36c56b | |
parent | 6106504e9edc8500131f7a36e59bc146f90180fa (diff) | |
download | vim-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.vim | 4 | ||||
-rw-r--r-- | src/userfunc.c | 33 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |