diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-05-21 21:50:58 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-05-21 21:50:58 +0200 |
commit | 74fae513f8032cfa9e129eedc33454f0bf68668b (patch) | |
tree | 9caa6ab90bd08c0cb28c7576f9c7d9a4be45b86a | |
parent | fe81389d606ae79415d208207295f41a4375c580 (diff) |
patch 8.2.0806: using "func!" after vim9script gives confusing errorv8.2.0806
Problem: using "func!" after vim9script gives confusing error.
Solution: Give E477. (closes #6107)
-rw-r--r-- | src/testdir/test_vim9_script.vim | 7 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 6 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 22166fcb90..cc313285a5 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -136,7 +136,7 @@ def Test_assignment_dict() let dict2: dict<number> = #{one: 1, two: 2} let dict3: dict<string> = #{key: 'value'} let dict4: dict<any> = #{one: 1, two: '2'} - let dict5: dict<blob> = #{one: 0z01, tw: 0z02} + let dict5: dict<blob> = #{one: 0z01, two: 0z02} call CheckDefExecFailure(['let dd = {}', 'dd[""] = 6'], 'E713:') @@ -1721,6 +1721,11 @@ def Test_vim9_comment_not_compiled() 'dsearch /pat/#comment', 'bwipe!', ], 'E488:') + + CheckScriptFailure([ + 'vim9script', + 'func! SomeFunc()', + ], 'E477:') enddef def Test_finish() diff --git a/src/version.c b/src/version.c index c112f7d47d..d36fa4a2a1 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 */ /**/ + 806, +/**/ 805, /**/ 804, diff --git a/src/vim9script.c b/src/vim9script.c index e213d61f1d..76650f8998 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -84,6 +84,12 @@ ex_vim9script(exarg_T *eap) { int lnum_start = SOURCING_LNUM - 1; + if (*p == '!') + { + emsg(_(e_nobang)); + break; + } + // Handle :function and :def by calling def_function(). // It will read upto the matching :endded or :endfunction. eap->cmdidx = *line == 'f' ? CMD_function : CMD_def; |