diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-05-14 19:59:59 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-05-14 19:59:59 +0100 |
commit | cf2610c82b64b1785af0804916789295cae45e93 (patch) | |
tree | 8e233fcfa61259b8ce883530fe8c9c7766a04ab8 | |
parent | b7398fe41c9e1e731d058105a34158871ee83e3f (diff) | |
download | vim-git-cf2610c82b64b1785af0804916789295cae45e93.tar.gz |
patch 9.0.1556: Vim9: error for missing "return" after "throw"v9.0.1556
Problem: Vim9: error for missing "return" after "throw".
Solution: Set had_return flag for "throw". (closes #12262)
-rw-r--r-- | src/testdir/test_vim9_func.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 2965afac8..ffb8de48d 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -488,6 +488,19 @@ def Test_missing_return() 'enddef'], 'E1095:') enddef +def Test_not_missing_return() + var lines =<< trim END + def Funky(): number + if false + return 0 + endif + throw 'Error' + enddef + defcompile + END + v9.CheckScriptSuccess(lines) +enddef + def Test_return_bool() var lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c index 292f2285f..c0c1ca0d9 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1556, +/**/ 1555, /**/ 1554, diff --git a/src/vim9compile.c b/src/vim9compile.c index 477f5eed7..b894c6f29 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3611,6 +3611,7 @@ compile_def_function( break; case CMD_throw: line = compile_throw(p, &cctx); + cctx.ctx_had_return = TRUE; break; case CMD_eval: |