Problem: Using inline function is not properly tested.
Solution: Add test cases, esp. for errors. Minor code improvements.
INIT(= N_("E1171: Missing } after inline function"));
EXTERN char e_cannot_use_default_values_in_lambda[]
INIT(= N_("E1172: Cannot use default values in a lambda"));
+EXTERN char e_text_found_after_enddef_str[]
+ INIT(= N_("E1173: Text found after enddef: %s"));
return 'no'
})
assert_equal(['no', 'yes', 'no'], dll)
+
+ sandbox var Safe = (nr: number): number => {
+ return nr + 7
+ }
+ assert_equal(10, Safe(3))
END
CheckDefAndScriptSuccess(lines)
map([1, 2], (k, v) => { redrawt })
END
CheckDefAndScriptFailure(lines, 'E488')
+
+ lines =<< trim END
+ var Func = (nr: int) => {
+ echo nr
+ }
+ END
+ CheckDefAndScriptFailure(lines, 'E1010', 1)
+
+ lines =<< trim END
+ var Func = (nr: number): int => {
+ return nr
+ }
+ END
+ CheckDefAndScriptFailure(lines, 'E1010', 1)
+
+ lines =<< trim END
+ var Func = (nr: number): int => {
+ return nr
+ END
+ CheckDefAndScriptFailure(lines, 'E1171', 1) # line nr is function start
+
+ lines =<< trim END
+ vim9script
+ var Func = (nr: number): int => {
+ var ll =<< ENDIT
+ nothing
+ END
+ CheckScriptFailure(lines, 'E1145: Missing heredoc end marker: ENDIT', 2)
enddef
def NewLambdaWithComments(): func
enddef
END
CheckScriptFailure(lines, 'E1152:', 4)
+
+ lines =<< trim END
+ def Ok()
+ echo 'hello'
+ enddef | echo 'there'
+ def Bad()
+ echo 'hello'
+ enddef there
+ END
+ CheckScriptFailure(lines, 'E1173: Text found after enddef: there', 6)
enddef
def Test_missing_endfunc_enddef()
else if (line_arg != NULL && *skipwhite(line_arg) != NUL)
nextcmd = line_arg;
else if (*p != NUL && *p != (vim9_function ? '#' : '"')
- && p_verbose > 0
- && eap->cmdidx != CMD_block)
- give_warning2(eap->cmdidx == CMD_def
- ? (char_u *)_("W1001: Text found after :enddef: %s")
- : (char_u *)_("W22: Text found after :endfunction: %s"),
- p, TRUE);
- if (nextcmd != NULL)
+ && (vim9_function || p_verbose > 0))
+ {
+ if (eap->cmdidx == CMD_def)
+ semsg(_(e_text_found_after_enddef_str), p);
+ else
+ give_warning2((char_u *)
+ _("W22: Text found after :endfunction: %s"),
+ p, TRUE);
+ }
+ if (nextcmd != NULL && *skipwhite(nextcmd) != NUL)
{
// Another command follows. If the line came from "eap"
// we can simply point into it, otherwise we need to
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2645,
/**/
2644,
/**/