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 #include "src/parsing/parser.h" | 5 #include "src/parsing/parser.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
9 #include "src/ast/ast-expression-rewriter.h" | 9 #include "src/ast/ast-expression-rewriter.h" |
10 #include "src/ast/ast-expression-visitor.h" | 10 #include "src/ast/ast-expression-visitor.h" |
(...skipping 1368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1379 // IdentifierName | 1379 // IdentifierName |
1380 // IdentifierName 'as' IdentifierName | 1380 // IdentifierName 'as' IdentifierName |
1381 | 1381 |
1382 Expect(Token::LBRACE, CHECK_OK); | 1382 Expect(Token::LBRACE, CHECK_OK); |
1383 | 1383 |
1384 Token::Value name_tok; | 1384 Token::Value name_tok; |
1385 while ((name_tok = peek()) != Token::RBRACE) { | 1385 while ((name_tok = peek()) != Token::RBRACE) { |
1386 // Keep track of the first reserved word encountered in case our | 1386 // Keep track of the first reserved word encountered in case our |
1387 // caller needs to report an error. | 1387 // caller needs to report an error. |
1388 if (!reserved_loc->IsValid() && | 1388 if (!reserved_loc->IsValid() && |
1389 !Token::IsIdentifier(name_tok, STRICT, false)) { | 1389 !Token::IsIdentifier(name_tok, STRICT, false, true)) { |
1390 *reserved_loc = scanner()->location(); | 1390 *reserved_loc = scanner()->location(); |
1391 } | 1391 } |
1392 const AstRawString* local_name = ParseIdentifierName(CHECK_OK); | 1392 const AstRawString* local_name = ParseIdentifierName(CHECK_OK); |
1393 const AstRawString* export_name = NULL; | 1393 const AstRawString* export_name = NULL; |
1394 if (CheckContextualKeyword(CStrVector("as"))) { | 1394 if (CheckContextualKeyword(CStrVector("as"))) { |
1395 export_name = ParseIdentifierName(CHECK_OK); | 1395 export_name = ParseIdentifierName(CHECK_OK); |
1396 } | 1396 } |
1397 if (export_name == NULL) { | 1397 if (export_name == NULL) { |
1398 export_name = local_name; | 1398 export_name = local_name; |
1399 } | 1399 } |
(...skipping 30 matching lines...) Expand all Loading... |
1430 new (zone()) ZoneList<ImportDeclaration*>(1, zone()); | 1430 new (zone()) ZoneList<ImportDeclaration*>(1, zone()); |
1431 while (peek() != Token::RBRACE) { | 1431 while (peek() != Token::RBRACE) { |
1432 const AstRawString* import_name = ParseIdentifierName(CHECK_OK); | 1432 const AstRawString* import_name = ParseIdentifierName(CHECK_OK); |
1433 const AstRawString* local_name = import_name; | 1433 const AstRawString* local_name = import_name; |
1434 // In the presence of 'as', the left-side of the 'as' can | 1434 // In the presence of 'as', the left-side of the 'as' can |
1435 // be any IdentifierName. But without 'as', it must be a valid | 1435 // be any IdentifierName. But without 'as', it must be a valid |
1436 // BindingIdentifier. | 1436 // BindingIdentifier. |
1437 if (CheckContextualKeyword(CStrVector("as"))) { | 1437 if (CheckContextualKeyword(CStrVector("as"))) { |
1438 local_name = ParseIdentifierName(CHECK_OK); | 1438 local_name = ParseIdentifierName(CHECK_OK); |
1439 } | 1439 } |
1440 if (!Token::IsIdentifier(scanner()->current_token(), STRICT, false)) { | 1440 if (!Token::IsIdentifier(scanner()->current_token(), STRICT, false, true)) { |
1441 *ok = false; | 1441 *ok = false; |
1442 ReportMessage(MessageTemplate::kUnexpectedReserved); | 1442 ReportMessage(MessageTemplate::kUnexpectedReserved); |
1443 return NULL; | 1443 return NULL; |
1444 } else if (IsEvalOrArguments(local_name)) { | 1444 } else if (IsEvalOrArguments(local_name)) { |
1445 *ok = false; | 1445 *ok = false; |
1446 ReportMessage(MessageTemplate::kStrictEvalArguments); | 1446 ReportMessage(MessageTemplate::kStrictEvalArguments); |
1447 return NULL; | 1447 return NULL; |
1448 } else if (is_strong(language_mode()) && IsUndefined(local_name)) { | 1448 } else if (is_strong(language_mode()) && IsUndefined(local_name)) { |
1449 *ok = false; | 1449 *ok = false; |
1450 ReportMessage(MessageTemplate::kStrongUndefined); | 1450 ReportMessage(MessageTemplate::kStrongUndefined); |
(...skipping 5449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6900 new_body->statements()->Add(loop->body(), zone); | 6900 new_body->statements()->Add(loop->body(), zone); |
6901 new_body->statements()->Add(set_completion_normal, zone); | 6901 new_body->statements()->Add(set_completion_normal, zone); |
6902 | 6902 |
6903 loop->set_body(new_body); | 6903 loop->set_body(new_body); |
6904 return final_loop; | 6904 return final_loop; |
6905 } | 6905 } |
6906 | 6906 |
6907 | 6907 |
6908 } // namespace internal | 6908 } // namespace internal |
6909 } // namespace v8 | 6909 } // namespace v8 |
OLD | NEW |