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

Side by Side Diff: src/preparser.h

Issue 1218803006: Add a flag for legacy const semantics (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add message tests Created 5 years, 5 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/parser.cc ('k') | src/preparser.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_PREPARSER_H 5 #ifndef V8_PREPARSER_H
6 #define V8_PREPARSER_H 6 #define V8_PREPARSER_H
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/bailout-reason.h" 10 #include "src/bailout-reason.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 allow_lazy_(false), 92 allow_lazy_(false),
93 allow_natives_(false), 93 allow_natives_(false),
94 allow_harmony_arrow_functions_(false), 94 allow_harmony_arrow_functions_(false),
95 allow_harmony_sloppy_(false), 95 allow_harmony_sloppy_(false),
96 allow_harmony_computed_property_names_(false), 96 allow_harmony_computed_property_names_(false),
97 allow_harmony_rest_params_(false), 97 allow_harmony_rest_params_(false),
98 allow_harmony_spreadcalls_(false), 98 allow_harmony_spreadcalls_(false),
99 allow_harmony_destructuring_(false), 99 allow_harmony_destructuring_(false),
100 allow_harmony_spread_arrays_(false), 100 allow_harmony_spread_arrays_(false),
101 allow_harmony_new_target_(false), 101 allow_harmony_new_target_(false),
102 allow_strong_mode_(false) {} 102 allow_strong_mode_(false),
103 allow_legacy_const_(true) {}
103 104
104 #define ALLOW_ACCESSORS(name) \ 105 #define ALLOW_ACCESSORS(name) \
105 bool allow_##name() const { return allow_##name##_; } \ 106 bool allow_##name() const { return allow_##name##_; } \
106 void set_allow_##name(bool allow) { allow_##name##_ = allow; } 107 void set_allow_##name(bool allow) { allow_##name##_ = allow; }
107 108
108 ALLOW_ACCESSORS(lazy); 109 ALLOW_ACCESSORS(lazy);
109 ALLOW_ACCESSORS(natives); 110 ALLOW_ACCESSORS(natives);
110 ALLOW_ACCESSORS(harmony_arrow_functions); 111 ALLOW_ACCESSORS(harmony_arrow_functions);
111 ALLOW_ACCESSORS(harmony_sloppy); 112 ALLOW_ACCESSORS(harmony_sloppy);
112 ALLOW_ACCESSORS(harmony_computed_property_names); 113 ALLOW_ACCESSORS(harmony_computed_property_names);
113 ALLOW_ACCESSORS(harmony_rest_params); 114 ALLOW_ACCESSORS(harmony_rest_params);
114 ALLOW_ACCESSORS(harmony_spreadcalls); 115 ALLOW_ACCESSORS(harmony_spreadcalls);
115 ALLOW_ACCESSORS(harmony_destructuring); 116 ALLOW_ACCESSORS(harmony_destructuring);
116 ALLOW_ACCESSORS(harmony_spread_arrays); 117 ALLOW_ACCESSORS(harmony_spread_arrays);
117 ALLOW_ACCESSORS(harmony_new_target); 118 ALLOW_ACCESSORS(harmony_new_target);
118 ALLOW_ACCESSORS(strong_mode); 119 ALLOW_ACCESSORS(strong_mode);
120 ALLOW_ACCESSORS(legacy_const);
119 #undef ALLOW_ACCESSORS 121 #undef ALLOW_ACCESSORS
120 122
121 bool allow_harmony_modules() const { return scanner()->HarmonyModules(); } 123 bool allow_harmony_modules() const { return scanner()->HarmonyModules(); }
122 bool allow_harmony_unicode() const { return scanner()->HarmonyUnicode(); } 124 bool allow_harmony_unicode() const { return scanner()->HarmonyUnicode(); }
123 125
124 void set_allow_harmony_modules(bool a) { scanner()->SetHarmonyModules(a); } 126 void set_allow_harmony_modules(bool a) { scanner()->SetHarmonyModules(a); }
125 void set_allow_harmony_unicode(bool a) { scanner()->SetHarmonyUnicode(a); } 127 void set_allow_harmony_unicode(bool a) { scanner()->SetHarmonyUnicode(a); }
126 128
127 protected: 129 protected:
128 enum AllowRestrictedIdentifiers { 130 enum AllowRestrictedIdentifiers {
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 return Token::Precedence(token); 486 return Token::Precedence(token);
485 } 487 }
486 488
487 typename Traits::Type::Factory* factory() { 489 typename Traits::Type::Factory* factory() {
488 return function_state_->factory(); 490 return function_state_->factory();
489 } 491 }
490 492
491 LanguageMode language_mode() { return scope_->language_mode(); } 493 LanguageMode language_mode() { return scope_->language_mode(); }
492 bool is_generator() const { return function_state_->is_generator(); } 494 bool is_generator() const { return function_state_->is_generator(); }
493 495
496 bool allow_const() {
497 return is_strict(language_mode()) || allow_legacy_const();
498 }
499
494 // Report syntax errors. 500 // Report syntax errors.
495 void ReportMessage(MessageTemplate::Template message, const char* arg = NULL, 501 void ReportMessage(MessageTemplate::Template message, const char* arg = NULL,
496 ParseErrorType error_type = kSyntaxError) { 502 ParseErrorType error_type = kSyntaxError) {
497 Scanner::Location source_location = scanner()->location(); 503 Scanner::Location source_location = scanner()->location();
498 Traits::ReportMessageAt(source_location, message, arg, error_type); 504 Traits::ReportMessageAt(source_location, message, arg, error_type);
499 } 505 }
500 506
501 void ReportMessageAt(Scanner::Location location, 507 void ReportMessageAt(Scanner::Location location,
502 MessageTemplate::Template message, 508 MessageTemplate::Template message,
503 ParseErrorType error_type = kSyntaxError) { 509 ParseErrorType error_type = kSyntaxError) {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 bool allow_natives_; 787 bool allow_natives_;
782 bool allow_harmony_arrow_functions_; 788 bool allow_harmony_arrow_functions_;
783 bool allow_harmony_sloppy_; 789 bool allow_harmony_sloppy_;
784 bool allow_harmony_computed_property_names_; 790 bool allow_harmony_computed_property_names_;
785 bool allow_harmony_rest_params_; 791 bool allow_harmony_rest_params_;
786 bool allow_harmony_spreadcalls_; 792 bool allow_harmony_spreadcalls_;
787 bool allow_harmony_destructuring_; 793 bool allow_harmony_destructuring_;
788 bool allow_harmony_spread_arrays_; 794 bool allow_harmony_spread_arrays_;
789 bool allow_harmony_new_target_; 795 bool allow_harmony_new_target_;
790 bool allow_strong_mode_; 796 bool allow_strong_mode_;
797 bool allow_legacy_const_;
791 }; 798 };
792 799
793 800
794 class PreParserIdentifier { 801 class PreParserIdentifier {
795 public: 802 public:
796 PreParserIdentifier() : type_(kUnknownIdentifier) {} 803 PreParserIdentifier() : type_(kUnknownIdentifier) {}
797 static PreParserIdentifier Default() { 804 static PreParserIdentifier Default() {
798 return PreParserIdentifier(kUnknownIdentifier); 805 return PreParserIdentifier(kUnknownIdentifier);
799 } 806 }
800 static PreParserIdentifier Eval() { 807 static PreParserIdentifier Eval() {
(...skipping 3160 matching lines...) Expand 10 before | Expand all | Expand 10 after
3961 *ok = false; 3968 *ok = false;
3962 return; 3969 return;
3963 } 3970 }
3964 has_seen_constructor_ = true; 3971 has_seen_constructor_ = true;
3965 return; 3972 return;
3966 } 3973 }
3967 } 3974 }
3968 } } // v8::internal 3975 } } // v8::internal
3969 3976
3970 #endif // V8_PREPARSER_H 3977 #endif // V8_PREPARSER_H
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | src/preparser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698