mirror of
https://github.com/neovim/neovim.git
synced 2025-09-15 07:48:18 +00:00
vim-patch:8.1.1828: not strict enough checking syntax of method invocation
Problem: Not strict enough checking syntax of method invocation.
Solution: Check there is no white space inside ->method(.
5184132ec0
This commit is contained in:
@@ -1053,12 +1053,19 @@ For methods that are also available as global functions this is the same as: >
|
||||
name(expr8 [, args])
|
||||
There can also be methods specifically for the type of "expr8".
|
||||
|
||||
"->name(" must not contain white space. There can be white space before "->"
|
||||
and after the "(".
|
||||
|
||||
This allows for chaining, using the type that the method returns: >
|
||||
This allows for chaining, passing the value that one method returns to the
|
||||
next method: >
|
||||
mylist->filter(filterexpr)->map(mapexpr)->sort()->join()
|
||||
<
|
||||
*E274*
|
||||
"->name(" must not contain white space. There can be white space before the
|
||||
"->" and after the "(", thus you can split the lines like this: >
|
||||
mylist
|
||||
\ ->filter(filterexpr)
|
||||
\ ->map(mapexpr)
|
||||
\ ->sort()
|
||||
\ ->join()
|
||||
<
|
||||
|
||||
*expr9*
|
||||
number
|
||||
|
@@ -4134,6 +4134,11 @@ static int eval_method(char_u **const arg, typval_T *const rettv,
|
||||
EMSG2(_(e_missingparen), name);
|
||||
}
|
||||
ret = FAIL;
|
||||
} else if (ascii_iswhite((*arg)[-1])) {
|
||||
if (verbose) {
|
||||
EMSG(_("E274: No white space allowed before parenthesis"));
|
||||
}
|
||||
ret = FAIL;
|
||||
} else {
|
||||
ret = eval_func(arg, name, len, rettv, evaluate, &base);
|
||||
}
|
||||
|
@@ -118,4 +118,14 @@ func Test_method_funcref()
|
||||
delfunc Concat
|
||||
endfunc
|
||||
|
||||
func Test_method_syntax()
|
||||
eval [1, 2, 3] ->sort( )
|
||||
eval [1, 2, 3]
|
||||
\ ->sort(
|
||||
\ )
|
||||
call assert_fails('eval [1, 2, 3]-> sort()', 'E260:')
|
||||
call assert_fails('eval [1, 2, 3]->sort ()', 'E274:')
|
||||
call assert_fails('eval [1, 2, 3]-> sort ()', 'E260:')
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Reference in New Issue
Block a user