blob: 7e301ed33e4aec88443ab3004abe5f989da9e57c [file] [log] [blame]
Bram Moolenaar19a16692016-09-01 22:19:47 +02001"Tests for nested functions
2"
Bram Moolenaar8a01f962016-11-14 21:50:00 +01003func NestedFunc()
4 func! Func1()
Bram Moolenaar19a16692016-09-01 22:19:47 +02005 let g:text .= 'Func1 '
Bram Moolenaar8a01f962016-11-14 21:50:00 +01006 endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +02007 call Func1()
Bram Moolenaar8a01f962016-11-14 21:50:00 +01008 func! s:func2()
Bram Moolenaar19a16692016-09-01 22:19:47 +02009 let g:text .= 's:func2 '
Bram Moolenaar8a01f962016-11-14 21:50:00 +010010 endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +020011 call s:func2()
Bram Moolenaar8a01f962016-11-14 21:50:00 +010012 func! s:_func3()
Bram Moolenaar19a16692016-09-01 22:19:47 +020013 let g:text .= 's:_func3 '
Bram Moolenaar8a01f962016-11-14 21:50:00 +010014 endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +020015 call s:_func3()
16 let fn = 'Func4'
Bram Moolenaar8a01f962016-11-14 21:50:00 +010017 func! {fn}()
Bram Moolenaar19a16692016-09-01 22:19:47 +020018 let g:text .= 'Func4 '
Bram Moolenaar8a01f962016-11-14 21:50:00 +010019 endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +020020 call {fn}()
21 let fn = 'func5'
Bram Moolenaar8a01f962016-11-14 21:50:00 +010022 func! s:{fn}()
Bram Moolenaar19a16692016-09-01 22:19:47 +020023 let g:text .= 's:func5'
Bram Moolenaar8a01f962016-11-14 21:50:00 +010024 endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +020025 call s:{fn}()
Bram Moolenaar8a01f962016-11-14 21:50:00 +010026endfunc
Bram Moolenaar19a16692016-09-01 22:19:47 +020027
Bram Moolenaar8a01f962016-11-14 21:50:00 +010028func Test_nested_functions()
Bram Moolenaar19a16692016-09-01 22:19:47 +020029 let g:text = ''
30 call NestedFunc()
31 call assert_equal('Func1 s:func2 s:_func3 Func4 s:func5', g:text)
32endfunction
Bram Moolenaar8a01f962016-11-14 21:50:00 +010033
34func Test_nested_argument()
35 func g:X()
36 let g:Y = function('sort')
37 endfunc
38 let g:Y = function('sort')
39 echo g:Y([], g:X())
40 delfunc g:X
41 unlet g:Y
42endfunc