@@ -651,30 +651,55 @@ func Test_defer_throw()
651651 call assert_false (filereadable (' XDeleteTwo' ))
652652endfunc
653653
654- func Test_defer_quitall ()
654+ func Test_defer_quitall_func ()
655655 let lines = << trim END
656- vim9script
657656 func DeferLevelTwo ()
658- call writefile ([' text' ], ' XQuitallTwo ' , ' D' )
659- call writefile ([' quit' ], ' XQuitallThree ' , ' a' )
657+ call writefile ([' text' ], ' XQuitallFuncTwo ' , ' D' )
658+ call writefile ([' quit' ], ' XQuitallFuncThree ' , ' a' )
660659 qa !
661660 endfunc
662661
662+ func DeferLevelOne ()
663+ call writefile ([' text' ], ' XQuitalFunclOne' , ' D' )
664+ defer DeferLevelTwo ()
665+ endfunc
666+
667+ call DeferLevelOne ()
668+ END
669+ call writefile (lines , ' XdeferQuitallFunc' , ' D' )
670+ call system (GetVimCommand () .. ' -X -S XdeferQuitallFunc' )
671+ call assert_equal (0 , v: shell_error )
672+ call assert_false (filereadable (' XQuitallFuncOne' ))
673+ call assert_false (filereadable (' XQuitallFuncTwo' ))
674+ call assert_equal ([' quit' ], readfile (' XQuitallFuncThree' ))
675+
676+ call delete (' XQuitallFuncThree' )
677+ endfunc
678+
679+ func Test_defer_quitall_def ()
680+ let lines = << trim END
681+ vim9script
682+ def DeferLevelTwo ()
683+ call writefile ([' text' ], ' XQuitallDefTwo' , ' D' )
684+ call writefile ([' quit' ], ' XQuitallDefThree' , ' a' )
685+ qa !
686+ enddef
687+
663688 def DeferLevelOne ()
664- call writefile ([' text' ], ' XQuitallOne ' , ' D' )
665- call DeferLevelTwo ()
689+ call writefile ([' text' ], ' XQuitallDefOne ' , ' D' )
690+ defer DeferLevelTwo ()
666691 enddef
667692
668693 DeferLevelOne ()
669694 END
670- call writefile (lines , ' XdeferQuitall ' , ' D' )
671- let res = system (GetVimCommand () .. ' -X -S XdeferQuitall ' )
695+ call writefile (lines , ' XdeferQuitallDef ' , ' D' )
696+ call system (GetVimCommand () .. ' -X -S XdeferQuitallDef ' )
672697 call assert_equal (0 , v: shell_error )
673- call assert_false (filereadable (' XQuitallOne ' ))
674- call assert_false (filereadable (' XQuitallTwo ' ))
675- call assert_equal ([' quit' ], readfile (' XQuitallThree ' ))
698+ call assert_false (filereadable (' XQuitallDefOne ' ))
699+ call assert_false (filereadable (' XQuitallDefTwo ' ))
700+ call assert_equal ([' quit' ], readfile (' XQuitallDefThree ' ))
676701
677- call delete (' XQuitallThree ' )
702+ call delete (' XQuitallDefThree ' )
678703endfunc
679704
680705func Test_defer_quitall_in_expr_func ()
@@ -693,7 +718,7 @@ func Test_defer_quitall_in_expr_func()
693718 call Test_defer_in_funcref ()
694719 END
695720 call writefile (lines , ' XdeferQuitallExpr' , ' D' )
696- let res = system (GetVimCommand () .. ' -X -S XdeferQuitallExpr' )
721+ call system (GetVimCommand () .. ' -X -S XdeferQuitallExpr' )
697722 call assert_equal (0 , v: shell_error )
698723 call assert_false (filereadable (' Xentry0' ))
699724 call assert_false (filereadable (' Xentry1' ))
0 commit comments