view src/testdir/test_nested_function.vim @ 10478:ea1beefcd664 v8.0.0132

commit https://github.com/vim/vim/commit/4c8980b717f73042f1d625ee255fa74eddb989ba Author: Bram Moolenaar <Bram@vim.org> Date: Sun Dec 11 15:24:48 2016 +0100 patch 8.0.0132 Problem: Test fails because of using :finish. Solution: Change to return.
author Christian Brabandt <cb@256bit.org>
date Sun, 11 Dec 2016 15:30:04 +0100
parents 14a82c6433be
children 89200fa1d174
line wrap: on
line source

"Tests for nested functions
"
func NestedFunc()
  func! Func1()
    let g:text .= 'Func1 '
  endfunc
  call Func1()
  func! s:func2()
    let g:text .= 's:func2 '
  endfunc
  call s:func2()
  func! s:_func3()
    let g:text .= 's:_func3 '
  endfunc
  call s:_func3()
  let fn = 'Func4'
  func! {fn}()
    let g:text .= 'Func4 '
  endfunc
  call {fn}()
  let fn = 'func5'
  func! s:{fn}()
    let g:text .= 's:func5'
  endfunc
  call s:{fn}()
endfunc

func Test_nested_functions()
  let g:text = ''
  call NestedFunc()
  call assert_equal('Func1 s:func2 s:_func3 Func4 s:func5', g:text)
endfunction

func Test_nested_argument()
  func g:X()
    let g:Y = function('sort')
  endfunc
  let g:Y = function('sort')
  echo g:Y([], g:X())
  delfunc g:X
  unlet g:Y
endfunc