mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.4871: Vim9: in :def function no error for misplaced range
Problem: Vim9: in :def function no error for using a range with a command that does not accept one. Solution: Check for the command to accept a range. (closes #10330)
This commit is contained in:
@@ -67,6 +67,29 @@ def Test_range_only()
|
|||||||
endif
|
endif
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
def Test_invalid_range()
|
||||||
|
var lines =<< trim END
|
||||||
|
:123 eval 1 + 2
|
||||||
|
END
|
||||||
|
v9.CheckDefAndScriptFailure(lines, 'E481:', 1)
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
:123 if true
|
||||||
|
endif
|
||||||
|
END
|
||||||
|
v9.CheckDefAndScriptFailure(lines, 'E481:', 1)
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
:123 echo 'yes'
|
||||||
|
END
|
||||||
|
v9.CheckDefAndScriptFailure(lines, 'E481:', 1)
|
||||||
|
|
||||||
|
lines =<< trim END
|
||||||
|
:123 cd there
|
||||||
|
END
|
||||||
|
v9.CheckDefAndScriptFailure(lines, 'E481:', 1)
|
||||||
|
enddef
|
||||||
|
|
||||||
let g:alist = [7]
|
let g:alist = [7]
|
||||||
let g:astring = 'text'
|
let g:astring = 'text'
|
||||||
let g:anumber = 123
|
let g:anumber = 123
|
||||||
|
@@ -746,6 +746,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
4871,
|
||||||
/**/
|
/**/
|
||||||
4870,
|
4870,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -3080,6 +3080,11 @@ compile_def_function(
|
|||||||
ea.forceit = TRUE;
|
ea.forceit = TRUE;
|
||||||
p = skipwhite(p + 1);
|
p = skipwhite(p + 1);
|
||||||
}
|
}
|
||||||
|
if ((ea.argt & EX_RANGE) == 0 && ea.addr_count > 0)
|
||||||
|
{
|
||||||
|
emsg(_(e_no_range_allowed));
|
||||||
|
goto erret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ea.cmdidx)
|
switch (ea.cmdidx)
|
||||||
|
Reference in New Issue
Block a user