| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 #include <cmath> | 5 #include <cmath> |
| 6 | 6 |
| 7 #include "src/allocation.h" | 7 #include "src/allocation.h" |
| 8 #include "src/base/logging.h" | 8 #include "src/base/logging.h" |
| 9 #include "src/conversions-inl.h" | 9 #include "src/conversions-inl.h" |
| 10 #include "src/conversions.h" | 10 #include "src/conversions.h" |
| (...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 !IsFutureStrictReserved(expr.AsIdentifier())); | 693 !IsFutureStrictReserved(expr.AsIdentifier())); |
| 694 Consume(Token::COLON); | 694 Consume(Token::COLON); |
| 695 Statement statement = ParseStatement(ok); | 695 Statement statement = ParseStatement(ok); |
| 696 return statement.IsJumpStatement() ? Statement::Default() : statement; | 696 return statement.IsJumpStatement() ? Statement::Default() : statement; |
| 697 // Preparsing is disabled for extensions (because the extension details | 697 // Preparsing is disabled for extensions (because the extension details |
| 698 // aren't passed to lazily compiled functions), so we don't | 698 // aren't passed to lazily compiled functions), so we don't |
| 699 // accept "native function" in the preparser. | 699 // accept "native function" in the preparser. |
| 700 } | 700 } |
| 701 // Parsed expression statement. | 701 // Parsed expression statement. |
| 702 // Detect attempts at 'let' declarations in sloppy mode. | 702 // Detect attempts at 'let' declarations in sloppy mode. |
| 703 if (peek() == Token::IDENTIFIER && is_sloppy(language_mode()) && | 703 if (!allow_harmony_sloppy_let() && peek() == Token::IDENTIFIER && |
| 704 expr.IsIdentifier() && expr.AsIdentifier().IsLet()) { | 704 is_sloppy(language_mode()) && expr.IsIdentifier() && |
| 705 expr.AsIdentifier().IsLet()) { |
| 705 ReportMessage(MessageTemplate::kSloppyLexical, NULL); | 706 ReportMessage(MessageTemplate::kSloppyLexical, NULL); |
| 706 *ok = false; | 707 *ok = false; |
| 707 return Statement::Default(); | 708 return Statement::Default(); |
| 708 } | 709 } |
| 709 ExpectSemicolon(CHECK_OK); | 710 ExpectSemicolon(CHECK_OK); |
| 710 return Statement::ExpressionStatement(expr); | 711 return Statement::ExpressionStatement(expr); |
| 711 } | 712 } |
| 712 | 713 |
| 713 | 714 |
| 714 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { | 715 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 ParseExpression(true, CHECK_OK); | 954 ParseExpression(true, CHECK_OK); |
| 954 Expect(Token::RPAREN, CHECK_OK); | 955 Expect(Token::RPAREN, CHECK_OK); |
| 955 ParseSubStatement(CHECK_OK); | 956 ParseSubStatement(CHECK_OK); |
| 956 return Statement::Default(); | 957 return Statement::Default(); |
| 957 } | 958 } |
| 958 } | 959 } |
| 959 } | 960 } |
| 960 | 961 |
| 961 // Parsed initializer at this point. | 962 // Parsed initializer at this point. |
| 962 // Detect attempts at 'let' declarations in sloppy mode. | 963 // Detect attempts at 'let' declarations in sloppy mode. |
| 963 if (peek() == Token::IDENTIFIER && is_sloppy(language_mode()) && | 964 if (!allow_harmony_sloppy_let() && peek() == Token::IDENTIFIER && |
| 964 is_let_identifier_expression) { | 965 is_sloppy(language_mode()) && is_let_identifier_expression) { |
| 965 ReportMessage(MessageTemplate::kSloppyLexical, NULL); | 966 ReportMessage(MessageTemplate::kSloppyLexical, NULL); |
| 966 *ok = false; | 967 *ok = false; |
| 967 return Statement::Default(); | 968 return Statement::Default(); |
| 968 } | 969 } |
| 969 Expect(Token::SEMICOLON, CHECK_OK); | 970 Expect(Token::SEMICOLON, CHECK_OK); |
| 970 | 971 |
| 971 if (peek() != Token::SEMICOLON) { | 972 if (peek() != Token::SEMICOLON) { |
| 972 ParseExpression(true, CHECK_OK); | 973 ParseExpression(true, CHECK_OK); |
| 973 } | 974 } |
| 974 Expect(Token::SEMICOLON, CHECK_OK); | 975 Expect(Token::SEMICOLON, CHECK_OK); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1231 | 1232 |
| 1232 DCHECK(!spread_pos.IsValid()); | 1233 DCHECK(!spread_pos.IsValid()); |
| 1233 | 1234 |
| 1234 return Expression::Default(); | 1235 return Expression::Default(); |
| 1235 } | 1236 } |
| 1236 | 1237 |
| 1237 #undef CHECK_OK | 1238 #undef CHECK_OK |
| 1238 | 1239 |
| 1239 | 1240 |
| 1240 } } // v8::internal | 1241 } } // v8::internal |
| OLD | NEW |