Index: src/parsing/parser-base.h |
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h |
index 1046a83cbb3159d1687191ce8ce9d68ae8749000..dc67e536c8e0eb76f9921bd712fa9fbc0ddb0e58 100644 |
--- a/src/parsing/parser-base.h |
+++ b/src/parsing/parser-base.h |
@@ -800,10 +800,6 @@ class ParserBase : public Traits { |
ExpressionT CheckAndRewriteReferenceExpression( |
ExpressionT expression, int beg_pos, int end_pos, |
MessageTemplate::Template message, bool* ok); |
- ExpressionT ClassifyAndRewriteReferenceExpression( |
- ExpressionClassifier* classifier, ExpressionT expression, int beg_pos, |
- int end_pos, MessageTemplate::Template message, |
- ParseErrorType type = kSyntaxError); |
ExpressionT CheckAndRewriteReferenceExpression( |
ExpressionT expression, int beg_pos, int end_pos, |
MessageTemplate::Template message, ParseErrorType type, bool* ok); |
@@ -2990,41 +2986,25 @@ typename ParserBase<Traits>::ExpressionT |
ParserBase<Traits>::CheckAndRewriteReferenceExpression( |
ExpressionT expression, int beg_pos, int end_pos, |
MessageTemplate::Template message, ParseErrorType type, bool* ok) { |
- ExpressionClassifier classifier(this); |
- ExpressionT result = ClassifyAndRewriteReferenceExpression( |
- &classifier, expression, beg_pos, end_pos, message, type); |
- ValidateExpression(&classifier, ok); |
- if (!*ok) return this->EmptyExpression(); |
- return result; |
-} |
- |
- |
-template <typename Traits> |
-typename ParserBase<Traits>::ExpressionT |
-ParserBase<Traits>::ClassifyAndRewriteReferenceExpression( |
- ExpressionClassifier* classifier, ExpressionT expression, int beg_pos, |
- int end_pos, MessageTemplate::Template message, ParseErrorType type) { |
- Scanner::Location location(beg_pos, end_pos); |
- if (this->IsIdentifier(expression)) { |
- if (is_strict(language_mode()) && |
- this->IsEvalOrArguments(this->AsIdentifier(expression))) { |
- classifier->RecordExpressionError( |
- location, MessageTemplate::kStrictEvalArguments, kSyntaxError); |
- return expression; |
- } |
+ if (this->IsIdentifier(expression) && is_strict(language_mode()) && |
+ this->IsEvalOrArguments(this->AsIdentifier(expression))) { |
+ ReportMessageAt(Scanner::Location(beg_pos, end_pos), |
+ MessageTemplate::kStrictEvalArguments, kSyntaxError); |
+ *ok = false; |
+ return this->EmptyExpression(); |
} |
if (expression->IsValidReferenceExpression()) { |
return expression; |
- } else if (expression->IsCall()) { |
+ } |
+ if (expression->IsCall()) { |
// If it is a call, make it a runtime error for legacy web compatibility. |
// Rewrite `expr' to `expr[throw ReferenceError]'. |
- int pos = location.beg_pos; |
- ExpressionT error = this->NewThrowReferenceError(message, pos); |
- return factory()->NewProperty(expression, error, pos); |
- } else { |
- classifier->RecordExpressionError(location, message, type); |
- return expression; |
+ ExpressionT error = this->NewThrowReferenceError(message, beg_pos); |
+ return factory()->NewProperty(expression, error, beg_pos); |
} |
+ ReportMessageAt(Scanner::Location(beg_pos, end_pos), message, type); |
+ *ok = false; |
+ return this->EmptyExpression(); |
} |