summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-05-21 21:50:58 +0200
committerBram Moolenaar <Bram@vim.org>2020-05-21 21:50:58 +0200
commit74fae513f8032cfa9e129eedc33454f0bf68668b (patch)
tree9caa6ab90bd08c0cb28c7576f9c7d9a4be45b86a
parentfe81389d606ae79415d208207295f41a4375c580 (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.vim7
-rw-r--r--src/version.c2
-rw-r--r--src/vim9script.c6
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;