Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 9cb92b3c535e79900d1782c689ac0966cef1d15b..cc9d9b83812ce26854d078d4cdb854f5249babf7 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -407,9 +407,8 @@ bool ParserTraits::IsConstructor(const AstRawString* identifier) const { |
bool ParserTraits::IsThisProperty(Expression* expression) { |
DCHECK(expression != NULL); |
Property* property = expression->AsProperty(); |
- return property != NULL && |
- property->obj()->AsVariableProxy() != NULL && |
- property->obj()->AsVariableProxy()->is_this(); |
+ return property != NULL && property->obj()->IsVariableProxy() && |
+ property->obj()->AsVariableProxy()->is_this(); |
} |
@@ -433,8 +432,7 @@ void ParserTraits::PushPropertyName(FuncNameInferrer* fni, |
void ParserTraits::CheckAssigningFunctionLiteralToProperty(Expression* left, |
Expression* right) { |
DCHECK(left != NULL); |
- if (left->AsProperty() != NULL && |
- right->AsFunctionLiteral() != NULL) { |
+ if (left->IsProperty() && right->IsFunctionLiteral()) { |
right->AsFunctionLiteral()->set_pretenure(); |
} |
} |
@@ -806,6 +804,8 @@ Parser::Parser(CompilationInfo* info, ParseInfo* parse_info) |
set_allow_harmony_templates(FLAG_harmony_templates); |
set_allow_harmony_sloppy(FLAG_harmony_sloppy); |
set_allow_harmony_unicode(FLAG_harmony_unicode); |
+ set_allow_harmony_computed_property_names( |
+ FLAG_harmony_computed_property_names); |
for (int feature = 0; feature < v8::Isolate::kUseCounterFeatureCount; |
++feature) { |
use_counts_[feature] = 0; |
@@ -3976,6 +3976,8 @@ PreParser::PreParseResult Parser::ParseLazyFunctionBodyWithPreParser( |
reusable_preparser_->set_allow_harmony_templates(allow_harmony_templates()); |
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()); |
} |
PreParser::PreParseResult result = |
reusable_preparser_->PreParseLazyFunction(strict_mode(), |
@@ -4035,8 +4037,11 @@ ClassLiteral* Parser::ParseClassLiteral(const AstRawString* name, |
if (fni_ != NULL) fni_->Enter(); |
const bool in_class = true; |
const bool is_static = false; |
- ObjectLiteral::Property* property = ParsePropertyDefinition( |
- NULL, in_class, is_static, &has_seen_constructor, CHECK_OK); |
+ bool is_computed_name = false; // Classes do not care about computed |
+ // property names here. |
+ ObjectLiteral::Property* property = |
+ ParsePropertyDefinition(NULL, in_class, is_static, &is_computed_name, |
+ &has_seen_constructor, CHECK_OK); |
if (has_seen_constructor && constructor == NULL) { |
constructor = GetPropertyValue(property); |