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

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

Issue 1819123002: Remove support for legacy const, part 1 (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
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 #include <cmath> 5 #include <cmath>
6 6
7 #include "src/allocation.h" 7 #include "src/allocation.h"
8 #include "src/base/logging.h" 8 #include "src/base/logging.h"
9 #include "src/conversions-inl.h" 9 #include "src/conversions-inl.h"
10 #include "src/conversions.h" 10 #include "src/conversions.h"
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 : MessageTemplate::kSloppyFunction); 364 : MessageTemplate::kSloppyFunction);
365 *ok = false; 365 *ok = false;
366 return Statement::Default(); 366 return Statement::Default();
367 367
368 case Token::DEBUGGER: 368 case Token::DEBUGGER:
369 return ParseDebuggerStatement(ok); 369 return ParseDebuggerStatement(ok);
370 370
371 case Token::VAR: 371 case Token::VAR:
372 return ParseVariableStatement(kStatement, ok); 372 return ParseVariableStatement(kStatement, ok);
373 373
374 case Token::CONST:
375 // In ES6 CONST is not allowed as a Statement, only as a
376 // LexicalDeclaration, however we continue to allow it in sloppy mode for
377 // backwards compatibility.
378 if (is_sloppy(language_mode()) && allow_legacy_const()) {
379 return ParseVariableStatement(kStatement, ok);
380 }
381
382 // Fall through.
383 default: 374 default:
384 return ParseExpressionOrLabelledStatement(ok); 375 return ParseExpressionOrLabelledStatement(ok);
385 } 376 }
386 } 377 }
387 378
388 379
389 PreParser::Statement PreParser::ParseFunctionDeclaration(bool* ok) { 380 PreParser::Statement PreParser::ParseFunctionDeclaration(bool* ok) {
390 // FunctionDeclaration :: 381 // FunctionDeclaration ::
391 // 'function' Identifier '(' FormalParameterListopt ')' '{' FunctionBody '}' 382 // 'function' Identifier '(' FormalParameterListopt ')' '{' FunctionBody '}'
392 // GeneratorDeclaration :: 383 // GeneratorDeclaration ::
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // 477 //
487 // ConstDeclaration : const ConstBinding (',' ConstBinding)* ';' 478 // ConstDeclaration : const ConstBinding (',' ConstBinding)* ';'
488 // 479 //
489 // * It is a Syntax Error if the code that matches this production is not 480 // * It is a Syntax Error if the code that matches this production is not
490 // contained in extended code. 481 // contained in extended code.
491 // 482 //
492 // However disallowing const in sloppy mode will break compatibility with 483 // However disallowing const in sloppy mode will break compatibility with
493 // existing pages. Therefore we keep allowing const with the old 484 // existing pages. Therefore we keep allowing const with the old
494 // non-harmony semantics in sloppy mode. 485 // non-harmony semantics in sloppy mode.
495 Consume(Token::CONST); 486 Consume(Token::CONST);
496 if (is_strict(language_mode()) || 487 if (is_strict(language_mode()) || allow_harmony_sloppy()) {
497 (allow_harmony_sloppy() && !allow_legacy_const())) {
498 DCHECK(var_context != kStatement); 488 DCHECK(var_context != kStatement);
499 require_initializer = true; 489 require_initializer = true;
500 lexical = true; 490 lexical = true;
501 } 491 }
502 } else if (peek() == Token::LET && allow_let()) { 492 } else if (peek() == Token::LET && allow_let()) {
503 Consume(Token::LET); 493 Consume(Token::LET);
504 DCHECK(var_context != kStatement); 494 DCHECK(var_context != kStatement);
505 lexical = true; 495 lexical = true;
506 } else { 496 } else {
507 *ok = false; 497 *ok = false;
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 Expect(Token::RBRACE, CHECK_OK); 1146 Expect(Token::RBRACE, CHECK_OK);
1157 return PreParserExpression::Default(); 1147 return PreParserExpression::Default();
1158 } 1148 }
1159 } 1149 }
1160 1150
1161 #undef CHECK_OK 1151 #undef CHECK_OK
1162 1152
1163 1153
1164 } // namespace internal 1154 } // namespace internal
1165 } // namespace v8 1155 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698