comparison src/testdir/test_vim9_func.vim @ 26323:3841da4eac23 v8.2.3692

patch 8.2.3692: Vim9: cannot use :func inside a :def function Commit: https://github.com/vim/vim/commit/38453528c3372293d70c8e85471a6188749ff331 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Nov 28 22:00:12 2021 +0000 patch 8.2.3692: Vim9: cannot use :func inside a :def function Problem: Vim9: cannot use :func inside a :def function. Solution: Make it work.
author Bram Moolenaar <Bram@vim.org>
date Sun, 28 Nov 2021 23:15:03 +0100
parents 9e5e331828da
children a926ccd92ae1
comparison
equal deleted inserted replaced
26322:931db05edfa7 26323:3841da4eac23
584 END 584 END
585 CheckScriptFailure(lines, 'E488:', 3) 585 CheckScriptFailure(lines, 'E488:', 3)
586 enddef 586 enddef
587 587
588 def Test_nested_function() 588 def Test_nested_function()
589 def Nested(arg: string): string 589 def NestedDef(arg: string): string
590 return 'nested ' .. arg 590 return 'nested ' .. arg
591 enddef 591 enddef
592 Nested('function')->assert_equal('nested function') 592 NestedDef(':def')->assert_equal('nested :def')
593
594 func NestedFunc(arg)
595 return 'nested ' .. a:arg
596 endfunc
597 NestedFunc(':func')->assert_equal('nested :func')
593 598
594 CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:') 599 CheckDefFailure(['def Nested()', 'enddef', 'Nested(66)'], 'E118:')
595 CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:') 600 CheckDefFailure(['def Nested(arg: string)', 'enddef', 'Nested()'], 'E119:')
596 601
597 CheckDefFailure(['func Nested()', 'endfunc'], 'E1086:')
598 CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:') 602 CheckDefFailure(['def s:Nested()', 'enddef'], 'E1075:')
599 CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:') 603 CheckDefFailure(['def b:Nested()', 'enddef'], 'E1075:')
600 604
601 var lines =<< trim END 605 var lines =<< trim END
602 def Outer() 606 def Outer()
686 vim9script 690 vim9script
687 def Outer() 691 def Outer()
688 def g:Inner(): string 692 def g:Inner(): string
689 return 'inner' 693 return 'inner'
690 enddef 694 enddef
695 enddef
696 defcompile
697 Outer()
698 g:Inner()->assert_equal('inner')
699 delfunc g:Inner
700 Outer()
701 g:Inner()->assert_equal('inner')
702 delfunc g:Inner
703 Outer()
704 g:Inner()->assert_equal('inner')
705 delfunc g:Inner
706 END
707 CheckScriptSuccess(lines)
708
709 lines =<< trim END
710 vim9script
711 def Outer()
712 func g:Inner()
713 return 'inner'
714 endfunc
691 enddef 715 enddef
692 defcompile 716 defcompile
693 Outer() 717 Outer()
694 g:Inner()->assert_equal('inner') 718 g:Inner()->assert_equal('inner')
695 delfunc g:Inner 719 delfunc g:Inner