diff options
Diffstat (limited to 'deps/v8/src/scanner.cc')
-rwxr-xr-x | deps/v8/src/scanner.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/deps/v8/src/scanner.cc b/deps/v8/src/scanner.cc index f24af2ed2..7901b5d82 100755 --- a/deps/v8/src/scanner.cc +++ b/deps/v8/src/scanner.cc @@ -611,7 +611,7 @@ void Scanner::SeekForward(int pos) { } -bool Scanner::ScanEscape() { +void Scanner::ScanEscape() { uc32 c = c0_; Advance(); @@ -621,7 +621,7 @@ bool Scanner::ScanEscape() { if (IsCarriageReturn(c) && IsLineFeed(c0_)) Advance(); // Allow LF+CR newlines in multiline string literals. if (IsLineFeed(c) && IsCarriageReturn(c0_)) Advance(); - return true; + return; } switch (c) { @@ -635,13 +635,13 @@ bool Scanner::ScanEscape() { case 't' : c = '\t'; break; case 'u' : { c = ScanHexNumber(4); - if (c < 0) return false; + if (c < 0) c = 'u'; break; } case 'v' : c = '\v'; break; case 'x' : { c = ScanHexNumber(2); - if (c < 0) return false; + if (c < 0) c = 'x'; break; } case '0' : // fall through @@ -654,11 +654,10 @@ bool Scanner::ScanEscape() { case '7' : c = ScanOctalEscape(c, 2); 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. + // According to ECMA-262, 3rd, 7.8.4 (p 18ff) these + // should be illegal, but they are commonly handled + // as non-escaped characters by JS VMs. AddLiteralChar(c); - return true; } @@ -697,7 +696,8 @@ Token::Value Scanner::ScanString() { uc32 c = c0_; Advance(); if (c == '\\') { - if (c0_ < 0 || !ScanEscape()) return Token::ILLEGAL; + if (c0_ < 0) return Token::ILLEGAL; + ScanEscape(); } else { AddLiteralChar(c); } |