From cf2610c82b64b1785af0804916789295cae45e93 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 14 May 2023 19:59:59 +0100 Subject: patch 9.0.1556: Vim9: error for missing "return" after "throw" Problem: Vim9: error for missing "return" after "throw". Solution: Set had_return flag for "throw". (closes #12262) --- src/testdir/test_vim9_func.vim | 13 +++++++++++++ src/version.c | 2 ++ src/vim9compile.c | 1 + 3 files changed, 16 insertions(+) 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 @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1556, /**/ 1555, /**/ 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: -- cgit v1.2.1