Index: src/parsing/scanner.cc |
diff --git a/src/parsing/scanner.cc b/src/parsing/scanner.cc |
index bfb5e03d68457841d0bb4e72b5632e7b97a77324..346ca676835d6c1f15c66dac16c1098bfe79fcf3 100644 |
--- a/src/parsing/scanner.cc |
+++ b/src/parsing/scanner.cc |
@@ -948,16 +948,12 @@ bool Scanner::ScanEscape() { |
break; |
} |
- // According to ECMA-262, section 7.8.4, characters not covered by the |
- // above cases should be illegal, but they are commonly handled as |
- // non-escaped characters by JS VMs. |
+ // Other escaped characters are interpreted as their non-escaped version. |
AddLiteralChar(c); |
return true; |
} |
-// Octal escapes of the forms '\0xx' and '\xxx' are not a part of |
-// ECMA-262. Other JS VMs support them. |
template <bool capture_raw> |
uc32 Scanner::ScanOctalEscape(uc32 c, int length) { |
uc32 x = c - '0'; |
@@ -1069,8 +1065,10 @@ Token::Value Scanner::ScanTemplateSpan() { |
AddRawLiteralChar('\n'); |
} |
} |
- } else if (!ScanEscape<capture_raw, in_template_literal>()) { |
- return Token::ILLEGAL; |
+ } else { |
+ // For templates, invalid escape sequence checking is handled in the |
+ // parser. |
+ ScanEscape<capture_raw, in_template_literal>(); |
} |
} else if (c < 0) { |
// Unterminated template literal |