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 1889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1900 Traits::RewriteNonPattern(&computed_name_classifier, CHECK_OK); | 1900 Traits::RewriteNonPattern(&computed_name_classifier, CHECK_OK); |
1901 classifier->Accumulate(&computed_name_classifier, | 1901 classifier->Accumulate(&computed_name_classifier, |
1902 ExpressionClassifier::ExpressionProductions); | 1902 ExpressionClassifier::ExpressionProductions); |
1903 Expect(Token::RBRACK, CHECK_OK); | 1903 Expect(Token::RBRACK, CHECK_OK); |
1904 return expression; | 1904 return expression; |
1905 } | 1905 } |
1906 | 1906 |
1907 default: | 1907 default: |
1908 *name = ParseIdentifierName(CHECK_OK); | 1908 *name = ParseIdentifierName(CHECK_OK); |
1909 scanner()->IsGetOrSet(is_get, is_set); | 1909 scanner()->IsGetOrSet(is_get, is_set); |
1910 if (this->IsAwait(*name)) { | 1910 if (this->IsAwait(*name)) { |
adamk
2016/08/05 22:29:29
I actually don't know why we handle this here inst
lpy
2016/08/09 01:01:47
Done.
| |
1911 *is_await = true; | 1911 *is_await = true; |
1912 } else if (this->IsEval(*name)) { | |
adamk
2016/08/05 22:29:29
What about "arguments"?
Is there a reason check h
lpy
2016/08/09 01:01:47
My understanding is when parsing the property name
| |
1913 classifier->RecordStrictModeFormalParameterError( | |
adamk
2016/08/05 22:29:29
Not clear on why this is an error in sloppy mode.
| |
1914 scanner()->location(), MessageTemplate::kStrictEvalArguments); | |
1915 if (is_strict(language_mode())) { | |
1916 classifier->RecordBindingPatternError( | |
1917 scanner()->location(), MessageTemplate::kStrictEvalArguments); | |
1918 } | |
1912 } | 1919 } |
1913 break; | 1920 break; |
1914 } | 1921 } |
1915 | 1922 |
1916 uint32_t index; | 1923 uint32_t index; |
1917 return this->IsArrayIndex(*name, &index) | 1924 return this->IsArrayIndex(*name, &index) |
1918 ? factory()->NewNumberLiteral(index, pos) | 1925 ? factory()->NewNumberLiteral(index, pos) |
1919 : factory()->NewStringLiteral(*name, pos); | 1926 : factory()->NewStringLiteral(*name, pos); |
1920 } | 1927 } |
1921 | 1928 |
(...skipping 1771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3693 has_seen_constructor_ = true; | 3700 has_seen_constructor_ = true; |
3694 return; | 3701 return; |
3695 } | 3702 } |
3696 } | 3703 } |
3697 | 3704 |
3698 | 3705 |
3699 } // namespace internal | 3706 } // namespace internal |
3700 } // namespace v8 | 3707 } // namespace v8 |
3701 | 3708 |
3702 #endif // V8_PARSING_PARSER_BASE_H | 3709 #endif // V8_PARSING_PARSER_BASE_H |
OLD | NEW |