parser->node = node;
njs_parser_next(parser, njs_parser_template_literal);
- break;
+ return NJS_OK;
/* CoverParenthesizedExpressionAndArrowParameterList */
case NJS_TOKEN_OPEN_PARENTHESIS:
parser->target = temp;
+ token->text.start++;
+ token->text.length = 0;
+
njs_parser_next(parser, njs_parser_template_literal_string);
return NJS_OK;
parser->node = node;
- njs_lexer_consume_token(parser->lexer, 1);
-
njs_parser_next(parser, njs_parser_template_literal);
break;
c = *p++;
- if (c == '\\') {
+ switch (c) {
+ case '\\':
if (p == lexer->end) {
- break;
+ return NJS_ERROR;
}
p++;
escape = 1;
continue;
- }
- if (c == '`') {
+ case '`':
text->length = p - text->start - 1;
goto done;
- }
- if (c == '$') {
+ case '$':
if (p < lexer->end && *p == '{') {
p++;
text->length = p - text->start - 2;
goto done;
}
+
+ break;
+
+ case '\n':
+ parser->lexer->line++;
+ break;
}
}
"foo`That ${person} is a ${age}`;"),
njs_str("That is a Mike21") },
+ { njs_str("`\n`.length"),
+ njs_str("1") },
+
/* Strings. */
{ njs_str("var a = '0123456789' + '012345';"
njs_str("ReferenceError: \"a\" is not defined in 2\n"
" at main (:2)\n") },
+ { njs_str("\n`\n${Object}\n${a}`" ENTER),
+ njs_str("ReferenceError: \"a\" is not defined in 4\n"
+ " at main (:4)\n") },
+
{ njs_str("function log(v) {}\nlog({}\n.a\n.a)" ENTER),
njs_str("TypeError: cannot get property \"a\" of undefined\n"
" at main (:4)\n") },