| 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
|
|
|