Mercurial > vim
comparison src/testdir/test_vim9_script.vim @ 25078:eac6e5a94e9d v8.2.3076
patch 8.2.3076: Vim9: using try in catch block causes a hang
Commit: https://github.com/vim/vim/commit/3f987b59173926420998ca92eb71688ee3e4a3e3
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jun 30 12:02:24 2021 +0200
patch 8.2.3076: Vim9: using try in catch block causes a hang
Problem: Vim9: using try in catch block causes a hang.
Solution: Save and restore the ec_in_catch flag. (closes https://github.com/vim/vim/issues/8478)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 30 Jun 2021 12:15:04 +0200 |
parents | ffc3e1164652 |
children | 146c9720e563 |
comparison
equal
deleted
inserted
replaced
25077:3438b2048ba7 | 25078:eac6e5a94e9d |
---|---|
601 endtry | 601 endtry |
602 END | 602 END |
603 CheckScriptSuccess(lines) | 603 CheckScriptSuccess(lines) |
604 assert_match('E808: Number or Float required', g:caught) | 604 assert_match('E808: Number or Float required', g:caught) |
605 unlet g:caught | 605 unlet g:caught |
606 enddef | |
607 | |
608 def Test_try_in_catch() | |
609 var lines =<< trim END | |
610 vim9script | |
611 var seq = [] | |
612 def DoIt() | |
613 try | |
614 seq->add('throw 1') | |
615 eval [][0] | |
616 seq->add('notreached') | |
617 catch | |
618 seq->add('catch') | |
619 try | |
620 seq->add('throw 2') | |
621 eval [][0] | |
622 seq->add('notreached') | |
623 catch /nothing/ | |
624 seq->add('notreached') | |
625 endtry | |
626 seq->add('done') | |
627 endtry | |
628 enddef | |
629 DoIt() | |
630 assert_equal(['throw 1', 'catch', 'throw 2', 'done'], seq) | |
631 END | |
606 enddef | 632 enddef |
607 | 633 |
608 " :while at the very start of a function that :continue jumps to | 634 " :while at the very start of a function that :continue jumps to |
609 def TryContinueFunc() | 635 def TryContinueFunc() |
610 while g:Count < 2 | 636 while g:Count < 2 |