aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval.c13
-rw-r--r--src/nvim/version.c2
-rw-r--r--test/functional/legacy/nested_function_spec.lua50
3 files changed, 57 insertions, 8 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 97d778327b..744fb13447 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -17580,15 +17580,14 @@ void ex_function(exarg_T *eap)
/* Check for defining a function inside this function. */
if (checkforcmd(&p, "function", 2)) {
- if (*p == '!')
+ if (*p == '!') {
p = skipwhite(p + 1);
+ }
p += eval_fname_script(p);
- if (ASCII_ISALPHA(*p)) {
- free(trans_function_name(&p, TRUE, 0, NULL));
- if (*skipwhite(p) == '(') {
- ++nesting;
- indent += 2;
- }
+ free(trans_function_name(&p, TRUE, 0, NULL));
+ if (*skipwhite(p) == '(') {
+ nesting++;
+ indent += 2;
}
}
diff --git a/src/nvim/version.c b/src/nvim/version.c
index f0f1db506d..513b03095b 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -189,7 +189,7 @@ static int included_patches[] = {
//552,
//551,
//550,
- //549,
+ 549,
//548 NA
547,
//546,
diff --git a/test/functional/legacy/nested_function_spec.lua b/test/functional/legacy/nested_function_spec.lua
new file mode 100644
index 0000000000..87371c8294
--- /dev/null
+++ b/test/functional/legacy/nested_function_spec.lua
@@ -0,0 +1,50 @@
+-- Tests for nested function.
+
+local helpers = require('test.functional.helpers')
+local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert
+local execute, expect, source = helpers.execute, helpers.expect, helpers.source
+
+describe('test_nested_function', function()
+ setup(clear)
+
+ it('is working', function()
+ insert([[
+ result:]])
+
+ source([[
+ :fu! NestedFunc()
+ : fu! Func1()
+ : $put ='Func1'
+ : endfunction
+ : call Func1()
+ : fu! s:func2()
+ : $put ='s:func2'
+ : endfunction
+ : call s:func2()
+ : fu! s:_func3()
+ : $put ='s:_func3'
+ : endfunction
+ : call s:_func3()
+ : let fn = 'Func4'
+ : fu! {fn}()
+ : $put ='Func4'
+ : endfunction
+ : call {fn}()
+ : let fn = 'func5'
+ : fu! s:{fn}()
+ : $put ='s:func5'
+ : endfunction
+ : call s:{fn}()
+ :endfunction]])
+ execute('call NestedFunc()')
+
+ -- Assert buffer contents.
+ expect([[
+ result:
+ Func1
+ s:func2
+ s:_func3
+ Func4
+ s:func5]])
+ end)
+end)