Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/parsing/scanner.cc

Issue 2946953002: Revert of [parser] Forbid \08 in strict strings (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Features shared by parsing and pre-parsing scanners. 5 // Features shared by parsing and pre-parsing scanners.
6 6
7 #include "src/parsing/scanner.h" 7 #include "src/parsing/scanner.h"
8 8
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 1027 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 int nx = x * 8 + d; 1038 int nx = x * 8 + d;
1039 if (nx >= 256) break; 1039 if (nx >= 256) break;
1040 x = nx; 1040 x = nx;
1041 Advance<capture_raw>(); 1041 Advance<capture_raw>();
1042 } 1042 }
1043 // Anything except '\0' is an octal escape sequence, illegal in strict mode. 1043 // Anything except '\0' is an octal escape sequence, illegal in strict mode.
1044 // Remember the position of octal escape sequences so that an error 1044 // Remember the position of octal escape sequences so that an error
1045 // can be reported later (in strict mode). 1045 // can be reported later (in strict mode).
1046 // We don't report the error immediately, because the octal escape can 1046 // We don't report the error immediately, because the octal escape can
1047 // occur before the "use strict" directive. 1047 // occur before the "use strict" directive.
1048 if (c != '0' || i > 0 || c0_ == '8' || c0_ == '9') { 1048 if (c != '0' || i > 0) {
1049 octal_pos_ = Location(source_pos() - i - 1, source_pos() - 1); 1049 octal_pos_ = Location(source_pos() - i - 1, source_pos() - 1);
1050 octal_message_ = MessageTemplate::kStrictOctalEscape; 1050 octal_message_ = MessageTemplate::kStrictOctalEscape;
1051 } 1051 }
1052 return x; 1052 return x;
1053 } 1053 }
1054 1054
1055 1055
1056 Token::Value Scanner::ScanString() { 1056 Token::Value Scanner::ScanString() {
1057 uc32 quote = c0_; 1057 uc32 quote = c0_;
1058 Advance<false, false>(); // consume quote 1058 Advance<false, false>(); // consume quote
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
1820 // 2, reset the source to the desired position, 1820 // 2, reset the source to the desired position,
1821 source_->Seek(position); 1821 source_->Seek(position);
1822 // 3, re-scan, by scanning the look-ahead char + 1 token (next_). 1822 // 3, re-scan, by scanning the look-ahead char + 1 token (next_).
1823 c0_ = source_->Advance(); 1823 c0_ = source_->Advance();
1824 Next(); 1824 Next();
1825 DCHECK_EQ(next_.location.beg_pos, static_cast<int>(position)); 1825 DCHECK_EQ(next_.location.beg_pos, static_cast<int>(position));
1826 } 1826 }
1827 1827
1828 } // namespace internal 1828 } // namespace internal
1829 } // namespace v8 1829 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/cctest/test-parsing.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698