summaryrefslogtreecommitdiff
path: root/deps/v8/src/scanner.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/scanner.cc')
-rwxr-xr-xdeps/v8/src/scanner.cc18
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);
}