Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 75bfbe25ab84611b2a14a95be4f098cd17073728..8c19548240a23b137e19ee25d2b6615ef5b61ea7 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -756,6 +756,7 @@ Expression* ParserTraits::ThisExpression(Scope* scope, AstNodeFactory* factory, |
Variable::THIS, pos, pos + 4); |
} |
+ |
Expression* ParserTraits::SuperPropertyReference(Scope* scope, |
AstNodeFactory* factory, |
int pos) { |
@@ -786,6 +787,15 @@ Expression* ParserTraits::SuperCallReference(Scope* scope, |
} |
+Expression* ParserTraits::NewTargetExpression(Scope* scope, |
+ AstNodeFactory* factory, |
+ int pos) { |
+ return scope->NewUnresolved(factory, |
+ parser_->ast_value_factory()->new_target_string(), |
+ Variable::NORMAL, pos, pos + 10); |
arv (Not doing code reviews)
2015/06/08 19:56:44
Is there a way to get the length of "new.target" a
Dmitry Lomov (no reviews)
2015/06/09 09:57:23
Maybe add a constant?
|
+} |
+ |
+ |
Expression* ParserTraits::DefaultConstructor(bool call_super, Scope* scope, |
int pos, int end_pos) { |
return parser_->DefaultConstructor(call_super, scope, pos, end_pos); |
@@ -910,6 +920,7 @@ Parser::Parser(ParseInfo* info) |
set_allow_harmony_spreadcalls(FLAG_harmony_spreadcalls); |
set_allow_harmony_destructuring(FLAG_harmony_destructuring); |
set_allow_harmony_spread_arrays(FLAG_harmony_spread_arrays); |
+ set_allow_harmony_new_target(FLAG_harmony_new_target); |
set_allow_strong_mode(FLAG_strong_mode); |
for (int feature = 0; feature < v8::Isolate::kUseCounterFeatureCount; |
++feature) { |
@@ -4286,26 +4297,22 @@ PreParser::PreParseResult Parser::ParseLazyFunctionBodyWithPreParser( |
reusable_preparser_ = new PreParser(zone(), &scanner_, ast_value_factory(), |
NULL, stack_limit_); |
reusable_preparser_->set_allow_lazy(true); |
- reusable_preparser_->set_allow_natives(allow_natives()); |
- reusable_preparser_->set_allow_harmony_modules(allow_harmony_modules()); |
- reusable_preparser_->set_allow_harmony_arrow_functions( |
- allow_harmony_arrow_functions()); |
- reusable_preparser_->set_allow_harmony_classes(allow_harmony_classes()); |
- reusable_preparser_->set_allow_harmony_object_literals( |
- allow_harmony_object_literals()); |
- reusable_preparser_->set_allow_harmony_sloppy(allow_harmony_sloppy()); |
- reusable_preparser_->set_allow_harmony_unicode(allow_harmony_unicode()); |
- reusable_preparser_->set_allow_harmony_computed_property_names( |
- allow_harmony_computed_property_names()); |
- reusable_preparser_->set_allow_harmony_rest_params( |
- allow_harmony_rest_params()); |
- reusable_preparser_->set_allow_harmony_spreadcalls( |
- allow_harmony_spreadcalls()); |
- reusable_preparser_->set_allow_harmony_destructuring( |
- allow_harmony_destructuring()); |
- reusable_preparser_->set_allow_harmony_spread_arrays( |
- allow_harmony_spread_arrays()); |
- reusable_preparser_->set_allow_strong_mode(allow_strong_mode()); |
+#define SET_ALLOW(name) reusable_preparser_->set_allow_##name(allow_##name()); |
+ SET_ALLOW(natives); |
+ SET_ALLOW(harmony_modules); |
+ SET_ALLOW(harmony_arrow_functions); |
+ SET_ALLOW(harmony_classes); |
+ SET_ALLOW(harmony_object_literals); |
+ SET_ALLOW(harmony_sloppy); |
+ SET_ALLOW(harmony_unicode); |
+ SET_ALLOW(harmony_computed_property_names); |
+ SET_ALLOW(harmony_rest_params); |
+ SET_ALLOW(harmony_spreadcalls); |
+ SET_ALLOW(harmony_destructuring); |
+ SET_ALLOW(harmony_spread_arrays); |
+ SET_ALLOW(harmony_new_target); |
+ SET_ALLOW(strong_mode); |
+#undef SET_ALLOW |
} |
PreParser::PreParseResult result = reusable_preparser_->PreParseLazyFunction( |
language_mode(), function_state_->kind(), logger, bookmark); |