119a1669fSBram Moolenaar"Tests for nested functions 219a1669fSBram Moolenaar" 3*8a01f969SBram Moolenaarfunc NestedFunc() 4*8a01f969SBram Moolenaar func! Func1() 519a1669fSBram Moolenaar let g:text .= 'Func1 ' 6*8a01f969SBram Moolenaar endfunc 719a1669fSBram Moolenaar call Func1() 8*8a01f969SBram Moolenaar func! s:func2() 919a1669fSBram Moolenaar let g:text .= 's:func2 ' 10*8a01f969SBram Moolenaar endfunc 1119a1669fSBram Moolenaar call s:func2() 12*8a01f969SBram Moolenaar func! s:_func3() 1319a1669fSBram Moolenaar let g:text .= 's:_func3 ' 14*8a01f969SBram Moolenaar endfunc 1519a1669fSBram Moolenaar call s:_func3() 1619a1669fSBram Moolenaar let fn = 'Func4' 17*8a01f969SBram Moolenaar func! {fn}() 1819a1669fSBram Moolenaar let g:text .= 'Func4 ' 19*8a01f969SBram Moolenaar endfunc 2019a1669fSBram Moolenaar call {fn}() 2119a1669fSBram Moolenaar let fn = 'func5' 22*8a01f969SBram Moolenaar func! s:{fn}() 2319a1669fSBram Moolenaar let g:text .= 's:func5' 24*8a01f969SBram Moolenaar endfunc 2519a1669fSBram Moolenaar call s:{fn}() 26*8a01f969SBram Moolenaarendfunc 2719a1669fSBram Moolenaar 28*8a01f969SBram Moolenaarfunc Test_nested_functions() 2919a1669fSBram Moolenaar let g:text = '' 3019a1669fSBram Moolenaar call NestedFunc() 3119a1669fSBram Moolenaar call assert_equal('Func1 s:func2 s:_func3 Func4 s:func5', g:text) 3219a1669fSBram Moolenaarendfunction 33*8a01f969SBram Moolenaar 34*8a01f969SBram Moolenaarfunc Test_nested_argument() 35*8a01f969SBram Moolenaar func g:X() 36*8a01f969SBram Moolenaar let g:Y = function('sort') 37*8a01f969SBram Moolenaar endfunc 38*8a01f969SBram Moolenaar let g:Y = function('sort') 39*8a01f969SBram Moolenaar echo g:Y([], g:X()) 40*8a01f969SBram Moolenaar delfunc g:X 41*8a01f969SBram Moolenaar unlet g:Y 42*8a01f969SBram Moolenaarendfunc 43