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

Side by Side Diff: src/parsing/parser-base.h

Issue 2621173002: Remove --harmony-async-await runtime flag (Closed)
Patch Set: Update test ref Created 3 years, 11 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 | « src/parsing/parser.cc ('k') | test/cctest/test-api.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #ifndef V8_PARSING_PARSER_BASE_H 5 #ifndef V8_PARSING_PARSER_BASE_H
6 #define V8_PARSING_PARSER_BASE_H 6 #define V8_PARSING_PARSER_BASE_H
7 7
8 #include "src/ast/ast.h" 8 #include "src/ast/ast.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 zone_(zone), 208 zone_(zone),
209 classifier_(nullptr), 209 classifier_(nullptr),
210 scanner_(scanner), 210 scanner_(scanner),
211 stack_overflow_(false), 211 stack_overflow_(false),
212 default_eager_compile_hint_(FunctionLiteral::kShouldLazyCompile), 212 default_eager_compile_hint_(FunctionLiteral::kShouldLazyCompile),
213 function_literal_id_(0), 213 function_literal_id_(0),
214 allow_natives_(false), 214 allow_natives_(false),
215 allow_tailcalls_(false), 215 allow_tailcalls_(false),
216 allow_harmony_do_expressions_(false), 216 allow_harmony_do_expressions_(false),
217 allow_harmony_function_sent_(false), 217 allow_harmony_function_sent_(false),
218 allow_harmony_async_await_(false),
219 allow_harmony_restrictive_generators_(false), 218 allow_harmony_restrictive_generators_(false),
220 allow_harmony_trailing_commas_(false), 219 allow_harmony_trailing_commas_(false),
221 allow_harmony_class_fields_(false), 220 allow_harmony_class_fields_(false),
222 allow_harmony_object_spread_(false) {} 221 allow_harmony_object_spread_(false) {}
223 222
224 #define ALLOW_ACCESSORS(name) \ 223 #define ALLOW_ACCESSORS(name) \
225 bool allow_##name() const { return allow_##name##_; } \ 224 bool allow_##name() const { return allow_##name##_; } \
226 void set_allow_##name(bool allow) { allow_##name##_ = allow; } 225 void set_allow_##name(bool allow) { allow_##name##_ = allow; }
227 226
228 ALLOW_ACCESSORS(natives); 227 ALLOW_ACCESSORS(natives);
229 ALLOW_ACCESSORS(tailcalls); 228 ALLOW_ACCESSORS(tailcalls);
230 ALLOW_ACCESSORS(harmony_do_expressions); 229 ALLOW_ACCESSORS(harmony_do_expressions);
231 ALLOW_ACCESSORS(harmony_function_sent); 230 ALLOW_ACCESSORS(harmony_function_sent);
232 ALLOW_ACCESSORS(harmony_async_await);
233 ALLOW_ACCESSORS(harmony_restrictive_generators); 231 ALLOW_ACCESSORS(harmony_restrictive_generators);
234 ALLOW_ACCESSORS(harmony_trailing_commas); 232 ALLOW_ACCESSORS(harmony_trailing_commas);
235 ALLOW_ACCESSORS(harmony_class_fields); 233 ALLOW_ACCESSORS(harmony_class_fields);
236 ALLOW_ACCESSORS(harmony_object_spread); 234 ALLOW_ACCESSORS(harmony_object_spread);
237 235
238 #undef ALLOW_ACCESSORS 236 #undef ALLOW_ACCESSORS
239 237
240 uintptr_t stack_limit() const { return stack_limit_; } 238 uintptr_t stack_limit() const { return stack_limit_; }
241 239
242 void set_stack_limit(uintptr_t stack_limit) { stack_limit_ = stack_limit; } 240 void set_stack_limit(uintptr_t stack_limit) { stack_limit_ = stack_limit; }
(...skipping 1205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 bool stack_overflow_; 1446 bool stack_overflow_;
1449 1447
1450 FunctionLiteral::EagerCompileHint default_eager_compile_hint_; 1448 FunctionLiteral::EagerCompileHint default_eager_compile_hint_;
1451 1449
1452 int function_literal_id_; 1450 int function_literal_id_;
1453 1451
1454 bool allow_natives_; 1452 bool allow_natives_;
1455 bool allow_tailcalls_; 1453 bool allow_tailcalls_;
1456 bool allow_harmony_do_expressions_; 1454 bool allow_harmony_do_expressions_;
1457 bool allow_harmony_function_sent_; 1455 bool allow_harmony_function_sent_;
1458 bool allow_harmony_async_await_;
1459 bool allow_harmony_restrictive_generators_; 1456 bool allow_harmony_restrictive_generators_;
1460 bool allow_harmony_trailing_commas_; 1457 bool allow_harmony_trailing_commas_;
1461 bool allow_harmony_class_fields_; 1458 bool allow_harmony_class_fields_;
1462 bool allow_harmony_object_spread_; 1459 bool allow_harmony_object_spread_;
1463 1460
1464 friend class DiscardableZoneScope; 1461 friend class DiscardableZoneScope;
1465 }; 1462 };
1466 1463
1467 template <typename Impl> 1464 template <typename Impl>
1468 ParserBase<Impl>::FunctionState::FunctionState( 1465 ParserBase<Impl>::FunctionState::FunctionState(
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 1732
1736 case Token::NULL_LITERAL: 1733 case Token::NULL_LITERAL:
1737 case Token::TRUE_LITERAL: 1734 case Token::TRUE_LITERAL:
1738 case Token::FALSE_LITERAL: 1735 case Token::FALSE_LITERAL:
1739 case Token::SMI: 1736 case Token::SMI:
1740 case Token::NUMBER: 1737 case Token::NUMBER:
1741 BindingPatternUnexpectedToken(); 1738 BindingPatternUnexpectedToken();
1742 return impl()->ExpressionFromLiteral(Next(), beg_pos); 1739 return impl()->ExpressionFromLiteral(Next(), beg_pos);
1743 1740
1744 case Token::ASYNC: 1741 case Token::ASYNC:
1745 if (allow_harmony_async_await() && 1742 if (!scanner()->HasAnyLineTerminatorAfterNext() &&
1746 !scanner()->HasAnyLineTerminatorAfterNext() &&
1747 PeekAhead() == Token::FUNCTION) { 1743 PeekAhead() == Token::FUNCTION) {
1748 Consume(Token::ASYNC); 1744 Consume(Token::ASYNC);
1749 return ParseAsyncFunctionLiteral(CHECK_OK); 1745 return ParseAsyncFunctionLiteral(CHECK_OK);
1750 } 1746 }
1751 // CoverCallExpressionAndAsyncArrowHead 1747 // CoverCallExpressionAndAsyncArrowHead
1752 *is_async = true; 1748 *is_async = true;
1753 /* falls through */ 1749 /* falls through */
1754 case Token::IDENTIFIER: 1750 case Token::IDENTIFIER:
1755 case Token::LET: 1751 case Token::LET:
1756 case Token::STATIC: 1752 case Token::STATIC:
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
2040 DCHECK(!*is_computed_name); 2036 DCHECK(!*is_computed_name);
2041 2037
2042 *is_generator = Check(Token::MUL); 2038 *is_generator = Check(Token::MUL);
2043 if (*is_generator) { 2039 if (*is_generator) {
2044 *kind = PropertyKind::kMethodProperty; 2040 *kind = PropertyKind::kMethodProperty;
2045 } 2041 }
2046 2042
2047 Token::Value token = peek(); 2043 Token::Value token = peek();
2048 int pos = peek_position(); 2044 int pos = peek_position();
2049 2045
2050 if (allow_harmony_async_await() && !*is_generator && token == Token::ASYNC && 2046 if (!*is_generator && token == Token::ASYNC &&
2051 !scanner()->HasAnyLineTerminatorAfterNext()) { 2047 !scanner()->HasAnyLineTerminatorAfterNext()) {
2052 Consume(Token::ASYNC); 2048 Consume(Token::ASYNC);
2053 token = peek(); 2049 token = peek();
2054 if (SetPropertyKindFromToken(token, kind)) { 2050 if (SetPropertyKindFromToken(token, kind)) {
2055 *name = impl()->GetSymbol(); // TODO(bakkot) specialize on 'async' 2051 *name = impl()->GetSymbol(); // TODO(bakkot) specialize on 'async'
2056 impl()->PushLiteralName(*name); 2052 impl()->PushLiteralName(*name);
2057 return factory()->NewStringLiteral(*name, pos); 2053 return factory()->NewStringLiteral(*name, pos);
2058 } 2054 }
2059 *kind = PropertyKind::kMethodProperty; 2055 *kind = PropertyKind::kMethodProperty;
2060 *is_async = true; 2056 *is_async = true;
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
2664 return ParseYieldExpression(accept_IN, ok); 2660 return ParseYieldExpression(accept_IN, ok);
2665 } 2661 }
2666 2662
2667 FuncNameInferrer::State fni_state(fni_); 2663 FuncNameInferrer::State fni_state(fni_);
2668 Checkpoint checkpoint(this); 2664 Checkpoint checkpoint(this);
2669 ExpressionClassifier arrow_formals_classifier( 2665 ExpressionClassifier arrow_formals_classifier(
2670 this, classifier()->duplicate_finder()); 2666 this, classifier()->duplicate_finder());
2671 2667
2672 Scope::Snapshot scope_snapshot(scope()); 2668 Scope::Snapshot scope_snapshot(scope());
2673 2669
2674 bool is_async = allow_harmony_async_await() && peek() == Token::ASYNC && 2670 bool is_async = peek() == Token::ASYNC &&
2675 !scanner()->HasAnyLineTerminatorAfterNext() && 2671 !scanner()->HasAnyLineTerminatorAfterNext() &&
2676 IsValidArrowFormalParametersStart(PeekAhead()); 2672 IsValidArrowFormalParametersStart(PeekAhead());
2677 2673
2678 bool parenthesized_formals = peek() == Token::LPAREN; 2674 bool parenthesized_formals = peek() == Token::LPAREN;
2679 if (!is_async && !parenthesized_formals) { 2675 if (!is_async && !parenthesized_formals) {
2680 ArrowFormalParametersUnexpectedToken(); 2676 ArrowFormalParametersUnexpectedToken();
2681 } 2677 }
2682 2678
2683 // Parse a simple, faster sub-grammar (primary expression) if it's evident 2679 // Parse a simple, faster sub-grammar (primary expression) if it's evident
2684 // that we have only a trivial expression to parse. 2680 // that we have only a trivial expression to parse.
(...skipping 1861 matching lines...) Expand 10 before | Expand all | Expand 10 after
4546 return ParseClassDeclaration(nullptr, false, ok); 4542 return ParseClassDeclaration(nullptr, false, ok);
4547 case Token::VAR: 4543 case Token::VAR:
4548 case Token::CONST: 4544 case Token::CONST:
4549 return ParseVariableStatement(kStatementListItem, nullptr, ok); 4545 return ParseVariableStatement(kStatementListItem, nullptr, ok);
4550 case Token::LET: 4546 case Token::LET:
4551 if (IsNextLetKeyword()) { 4547 if (IsNextLetKeyword()) {
4552 return ParseVariableStatement(kStatementListItem, nullptr, ok); 4548 return ParseVariableStatement(kStatementListItem, nullptr, ok);
4553 } 4549 }
4554 break; 4550 break;
4555 case Token::ASYNC: 4551 case Token::ASYNC:
4556 if (allow_harmony_async_await() && PeekAhead() == Token::FUNCTION && 4552 if (PeekAhead() == Token::FUNCTION &&
4557 !scanner()->HasAnyLineTerminatorAfterNext()) { 4553 !scanner()->HasAnyLineTerminatorAfterNext()) {
4558 Consume(Token::ASYNC); 4554 Consume(Token::ASYNC);
4559 return ParseAsyncFunctionDeclaration(nullptr, false, ok); 4555 return ParseAsyncFunctionDeclaration(nullptr, false, ok);
4560 } 4556 }
4561 /* falls through */ 4557 /* falls through */
4562 default: 4558 default:
4563 break; 4559 break;
4564 } 4560 }
4565 return ParseStatement(nullptr, kAllowLabelledFunctionStatement, ok); 4561 return ParseStatement(nullptr, kAllowLabelledFunctionStatement, ok);
4566 } 4562 }
(...skipping 966 matching lines...) Expand 10 before | Expand all | Expand 10 after
5533 has_seen_constructor_ = true; 5529 has_seen_constructor_ = true;
5534 return; 5530 return;
5535 } 5531 }
5536 } 5532 }
5537 5533
5538 5534
5539 } // namespace internal 5535 } // namespace internal
5540 } // namespace v8 5536 } // namespace v8
5541 5537
5542 #endif // V8_PARSING_PARSER_BASE_H 5538 #endif // V8_PARSING_PARSER_BASE_H
OLDNEW
« no previous file with comments | « src/parsing/parser.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698