OLD | NEW |
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/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/base/hashmap.h" | 10 #include "src/base/hashmap.h" |
(...skipping 1937 matching lines...) Loading... |
1948 ExpressionT name_expression = ParsePropertyName( | 1948 ExpressionT name_expression = ParsePropertyName( |
1949 name, &is_get, &is_set, &is_await, is_computed_name, classifier, | 1949 name, &is_get, &is_set, &is_await, is_computed_name, classifier, |
1950 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); | 1950 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
1951 | 1951 |
1952 if (fni_ != nullptr && !*is_computed_name) { | 1952 if (fni_ != nullptr && !*is_computed_name) { |
1953 this->PushLiteralName(fni_, *name); | 1953 this->PushLiteralName(fni_, *name); |
1954 } | 1954 } |
1955 | 1955 |
1956 if (!in_class && !is_generator) { | 1956 if (!in_class && !is_generator) { |
1957 DCHECK(!IsStaticMethod(method_kind)); | 1957 DCHECK(!IsStaticMethod(method_kind)); |
1958 | |
1959 if (peek() == Token::COLON) { | 1958 if (peek() == Token::COLON) { |
1960 // PropertyDefinition | 1959 // PropertyDefinition |
1961 // PropertyName ':' AssignmentExpression | 1960 // PropertyName ':' AssignmentExpression |
1962 if (!*is_computed_name) { | 1961 if (!*is_computed_name) { |
1963 checker->CheckProperty(name_token, kValueProperty, MethodKind::kNormal, | 1962 checker->CheckProperty(name_token, kValueProperty, MethodKind::kNormal, |
1964 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); | 1963 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
1965 } | 1964 } |
1966 Consume(Token::COLON); | 1965 Consume(Token::COLON); |
1967 int beg_pos = peek_position(); | 1966 int beg_pos = peek_position(); |
1968 ExpressionT value = this->ParseAssignmentExpression( | 1967 ExpressionT value = this->ParseAssignmentExpression( |
(...skipping 12 matching lines...) Loading... |
1981 // PropertyDefinition | 1980 // PropertyDefinition |
1982 // IdentifierReference | 1981 // IdentifierReference |
1983 // CoverInitializedName | 1982 // CoverInitializedName |
1984 // | 1983 // |
1985 // CoverInitializedName | 1984 // CoverInitializedName |
1986 // IdentifierReference Initializer? | 1985 // IdentifierReference Initializer? |
1987 if (classifier->duplicate_finder() != nullptr && | 1986 if (classifier->duplicate_finder() != nullptr && |
1988 scanner()->FindSymbol(classifier->duplicate_finder(), 1) != 0) { | 1987 scanner()->FindSymbol(classifier->duplicate_finder(), 1) != 0) { |
1989 classifier->RecordDuplicateFormalParameterError(scanner()->location()); | 1988 classifier->RecordDuplicateFormalParameterError(scanner()->location()); |
1990 } | 1989 } |
| 1990 |
| 1991 if (this->IsEvalOrArguments(*name) && is_strict(language_mode())) { |
| 1992 classifier->RecordBindingPatternError( |
| 1993 scanner()->location(), MessageTemplate::kStrictEvalArguments); |
| 1994 } |
| 1995 |
1991 if (name_token == Token::LET) { | 1996 if (name_token == Token::LET) { |
1992 classifier->RecordLetPatternError( | 1997 classifier->RecordLetPatternError( |
1993 scanner()->location(), MessageTemplate::kLetInLexicalBinding); | 1998 scanner()->location(), MessageTemplate::kLetInLexicalBinding); |
1994 } | 1999 } |
1995 if (is_await) { | 2000 if (is_await) { |
1996 if (is_async_function()) { | 2001 if (is_async_function()) { |
1997 classifier->RecordPatternError( | 2002 classifier->RecordPatternError( |
1998 Scanner::Location(next_beg_pos, next_end_pos), | 2003 Scanner::Location(next_beg_pos, next_end_pos), |
1999 MessageTemplate::kAwaitBindingIdentifier); | 2004 MessageTemplate::kAwaitBindingIdentifier); |
2000 } else { | 2005 } else { |
(...skipping 1727 matching lines...) Loading... |
3728 has_seen_constructor_ = true; | 3733 has_seen_constructor_ = true; |
3729 return; | 3734 return; |
3730 } | 3735 } |
3731 } | 3736 } |
3732 | 3737 |
3733 | 3738 |
3734 } // namespace internal | 3739 } // namespace internal |
3735 } // namespace v8 | 3740 } // namespace v8 |
3736 | 3741 |
3737 #endif // V8_PARSING_PARSER_BASE_H | 3742 #endif // V8_PARSING_PARSER_BASE_H |
OLD | NEW |