diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-05-12 11:05:40 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-05-12 11:05:40 +0100 |
commit | d0132f4862342eebe6d8e7a9096adf956ba6588b (patch) | |
tree | 35f8e608d149f904667565c92917b105e020f150 | |
parent | 9af2bc075169e14fd06ed967d28eac7206d21f36 (diff) |
patch 8.2.4940: some code is never usedv8.2.4940
Problem: Some code is never used.
Solution: Remove dead code. Add a few more test cases.
-rw-r--r-- | src/proto/vim9expr.pro | 2 | ||||
-rw-r--r-- | src/testdir/test_vim9_builtin.vim | 5 | ||||
-rw-r--r-- | src/testdir/test_vim9_expr.vim | 15 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9compile.c | 2 | ||||
-rw-r--r-- | src/vim9expr.c | 22 |
6 files changed, 32 insertions, 16 deletions
diff --git a/src/proto/vim9expr.pro b/src/proto/vim9expr.pro index aa8450902d..233cfa2267 100644 --- a/src/proto/vim9expr.pro +++ b/src/proto/vim9expr.pro @@ -2,7 +2,7 @@ int generate_ppconst(cctx_T *cctx, ppconst_T *ppconst); void clear_ppconst(ppconst_T *ppconst); int compile_member(int is_slice, int *keeping_dict, cctx_T *cctx); -int compile_load_scriptvar(cctx_T *cctx, char_u *name, char_u *start, char_u **end, int error); +int compile_load_scriptvar(cctx_T *cctx, char_u *name, char_u *start, char_u **end); int compile_load(char_u **arg, char_u *end_arg, cctx_T *cctx, int is_expr, int error); char_u *to_name_end(char_u *arg, int use_namespace); char_u *to_name_const_end(char_u *arg); diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 3405d9e53e..6fc7d0619c 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -4083,6 +4083,11 @@ def Test_substitute() assert_equal("4", substitute("3", '\d', '\=str2nr(submatch(0)) + 1', 'g')) END v9.CheckDefAndScriptSuccess(lines) + + lines =<< trim END + assert_equal("4", substitute("3", '\d', '\="text" x', 'g')) + END + v9.CheckDefAndScriptFailure(lines, 'E488: Trailing characters: x') enddef def Test_swapinfo() diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim index bbe39d1b4d..9807b6c364 100644 --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -2695,6 +2695,21 @@ def Test_expr8funcref() Test() END v9.CheckScriptSuccess(lines) + + # using funcref in legacy script + lines =<< trim END + def s:Refme(): string + return 'yes' + enddef + + def TestFunc() + var TheRef = s:Refme + assert_equal('yes', TheRef()) + enddef + + call TestFunc() + END + v9.CheckScriptSuccess(lines) enddef let g:test_space_dict = {'': 'empty', ' ': 'space'} diff --git a/src/version.c b/src/version.c index 304adc5f41..9c33c3f361 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4940, +/**/ 4939, /**/ 4938, diff --git a/src/vim9compile.c b/src/vim9compile.c index 8ab4e2957d..3eae14aec0 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -1140,7 +1140,7 @@ generate_loadvar( break; case dest_script: compile_load_scriptvar(cctx, - name + (name[1] == ':' ? 2 : 0), NULL, NULL, TRUE); + name + (name[1] == ':' ? 2 : 0), NULL, NULL); break; case dest_env: // Include $ in the name here diff --git a/src/vim9expr.c b/src/vim9expr.c index 36a3695e92..a200a87951 100644 --- a/src/vim9expr.c +++ b/src/vim9expr.c @@ -140,9 +140,8 @@ compile_member(int is_slice, int *keeping_dict, cctx_T *cctx) typep->type_curr = &t_any; typep->type_decl = &t_any; } - if (may_generate_2STRING(-1, FALSE, cctx) == FAIL) - return FAIL; - if (generate_instr_drop(cctx, ISN_MEMBER, 1) == FAIL) + if (may_generate_2STRING(-1, FALSE, cctx) == FAIL + || generate_instr_drop(cctx, ISN_MEMBER, 1) == FAIL) return FAIL; if (keeping_dict != NULL) *keeping_dict = TRUE; @@ -246,8 +245,7 @@ compile_load_scriptvar( cctx_T *cctx, char_u *name, // variable NUL terminated char_u *start, // start of variable - char_u **end, // end of variable, may be NULL - int error) // when TRUE may give error + char_u **end) // end of variable, may be NULL { scriptitem_T *si; int idx; @@ -368,14 +366,10 @@ compile_load_scriptvar( return OK; } - if (idx == -1 || si->sn_version != SCRIPT_VERSION_VIM9) - // variable is not in sn_var_vals: old style script. - return generate_OLDSCRIPT(cctx, ISN_LOADS, name, current_sctx.sc_sid, + // Can only get here if we know "name" is a script variable and not in a + // Vim9 script (variable is not in sn_var_vals): old style script. + return generate_OLDSCRIPT(cctx, ISN_LOADS, name, current_sctx.sc_sid, &t_any); - - if (error) - semsg(_(e_item_not_found_str), name); - return FAIL; } static int @@ -462,7 +456,7 @@ compile_load( res = generate_funcref(cctx, name, FALSE); else res = compile_load_scriptvar(cctx, name, - NULL, &end, error); + NULL, &end); break; case 'g': if (vim_strchr(name, AUTOLOAD_CHAR) == NULL) { @@ -538,7 +532,7 @@ compile_load( // already exists in a Vim9 script or when it's imported. if (script_var_exists(*arg, len, cctx, NULL) == OK || find_imported(name, 0, FALSE) != NULL) - res = compile_load_scriptvar(cctx, name, *arg, &end, FALSE); + res = compile_load_scriptvar(cctx, name, *arg, &end); // When evaluating an expression and the name starts with an // uppercase letter it can be a user defined function. |