Legacy octal escapes should not be allowed in template strings (#4227)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu
This commit is contained in:
@@ -1083,6 +1083,13 @@ lexer_parse_string (parser_context_t *context_p, /**< context */
|
||||
* converted to a character which has the same byte length. */
|
||||
if (*source_p >= LIT_CHAR_0 && *source_p <= LIT_CHAR_3)
|
||||
{
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (str_end_character == LIT_CHAR_GRAVE_ACCENT)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_TEMPLATE_STR_OCTAL_ESCAPE);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (context_p->status_flags & PARSER_IS_STRICT)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_OCTAL_ESCAPE_NOT_ALLOWED);
|
||||
|
||||
@@ -1003,6 +1003,12 @@ parser_error_to_string (parser_error_t error) /**< error code */
|
||||
{
|
||||
return "Octal escape sequences are not allowed in strict mode.";
|
||||
}
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
case PARSER_ERR_TEMPLATE_STR_OCTAL_ESCAPE:
|
||||
{
|
||||
return "Octal escape sequences are not allowed in template strings.";
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
case PARSER_ERR_STRICT_IDENT_NOT_ALLOWED:
|
||||
{
|
||||
return "Identifier name is reserved in strict mode.";
|
||||
|
||||
@@ -77,6 +77,9 @@ typedef enum
|
||||
PARSER_ERR_NEWLINE_NOT_ALLOWED, /**< newline is not allowed */
|
||||
PARSER_ERR_OCTAL_NUMBER_NOT_ALLOWED, /**< octal numbers are not allowed in strict mode */
|
||||
PARSER_ERR_OCTAL_ESCAPE_NOT_ALLOWED, /**< octal escape sequences are not allowed in strict mode */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
PARSER_ERR_TEMPLATE_STR_OCTAL_ESCAPE, /**< octal escape sequences are not allowed in template strings */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
PARSER_ERR_STRICT_IDENT_NOT_ALLOWED, /**< identifier name is reserved in strict mode */
|
||||
PARSER_ERR_EVAL_NOT_ALLOWED, /**< eval is not allowed here in strict mode */
|
||||
PARSER_ERR_ARGUMENTS_NOT_ALLOWED, /**< arguments is not allowed here in strict mode */
|
||||
|
||||
Reference in New Issue
Block a user