| 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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   343                        is_generator ? FunctionKind::kGeneratorFunction |   343                        is_generator ? FunctionKind::kGeneratorFunction | 
|   344                                     : FunctionKind::kNormalFunction, |   344                                     : FunctionKind::kNormalFunction, | 
|   345                        pos, FunctionLiteral::DECLARATION, |   345                        pos, FunctionLiteral::DECLARATION, | 
|   346                        FunctionLiteral::NORMAL_ARITY, CHECK_OK); |   346                        FunctionLiteral::NORMAL_ARITY, CHECK_OK); | 
|   347   return Statement::FunctionDeclaration(); |   347   return Statement::FunctionDeclaration(); | 
|   348 } |   348 } | 
|   349  |   349  | 
|   350  |   350  | 
|   351 PreParser::Statement PreParser::ParseClassDeclaration(bool* ok) { |   351 PreParser::Statement PreParser::ParseClassDeclaration(bool* ok) { | 
|   352   Expect(Token::CLASS, CHECK_OK); |   352   Expect(Token::CLASS, CHECK_OK); | 
 |   353   if (!allow_harmony_sloppy() && strict_mode() == SLOPPY) { | 
 |   354     ReportMessage("sloppy_lexical"); | 
 |   355     *ok = false; | 
 |   356     return Statement::Default(); | 
 |   357   } | 
 |   358  | 
|   353   int pos = position(); |   359   int pos = position(); | 
|   354   bool is_strict_reserved = false; |   360   bool is_strict_reserved = false; | 
|   355   Identifier name = |   361   Identifier name = | 
|   356       ParseIdentifierOrStrictReservedWord(&is_strict_reserved, CHECK_OK); |   362       ParseIdentifierOrStrictReservedWord(&is_strict_reserved, CHECK_OK); | 
|   357   ParseClassLiteral(name, scanner()->location(), is_strict_reserved, pos, |   363   ParseClassLiteral(name, scanner()->location(), is_strict_reserved, pos, | 
|   358                     CHECK_OK); |   364                     CHECK_OK); | 
|   359   return Statement::Default(); |   365   return Statement::Default(); | 
|   360 } |   366 } | 
|   361  |   367  | 
|   362  |   368  | 
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   505     Consume(Token::COLON); |   511     Consume(Token::COLON); | 
|   506     return ParseStatement(ok); |   512     return ParseStatement(ok); | 
|   507     // Preparsing is disabled for extensions (because the extension details |   513     // Preparsing is disabled for extensions (because the extension details | 
|   508     // aren't passed to lazily compiled functions), so we don't |   514     // aren't passed to lazily compiled functions), so we don't | 
|   509     // accept "native function" in the preparser. |   515     // accept "native function" in the preparser. | 
|   510   } |   516   } | 
|   511   // Parsed expression statement. |   517   // Parsed expression statement. | 
|   512   // Detect attempts at 'let' declarations in sloppy mode. |   518   // Detect attempts at 'let' declarations in sloppy mode. | 
|   513   if (peek() == Token::IDENTIFIER && strict_mode() == SLOPPY && |   519   if (peek() == Token::IDENTIFIER && strict_mode() == SLOPPY && | 
|   514       expr.IsIdentifier() && expr.AsIdentifier().IsLet()) { |   520       expr.IsIdentifier() && expr.AsIdentifier().IsLet()) { | 
|   515     ReportMessage("lexical_strict_mode", NULL); |   521     ReportMessage("sloppy_lexical", NULL); | 
|   516     *ok = false; |   522     *ok = false; | 
|   517     return Statement::Default(); |   523     return Statement::Default(); | 
|   518   } |   524   } | 
|   519   ExpectSemicolon(CHECK_OK); |   525   ExpectSemicolon(CHECK_OK); | 
|   520   return Statement::ExpressionStatement(expr); |   526   return Statement::ExpressionStatement(expr); | 
|   521 } |   527 } | 
|   522  |   528  | 
|   523  |   529  | 
|   524 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { |   530 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { | 
|   525   // IfStatement :: |   531   // IfStatement :: | 
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   726         ParseStatement(CHECK_OK); |   732         ParseStatement(CHECK_OK); | 
|   727         return Statement::Default(); |   733         return Statement::Default(); | 
|   728       } |   734       } | 
|   729     } |   735     } | 
|   730   } |   736   } | 
|   731  |   737  | 
|   732   // Parsed initializer at this point. |   738   // Parsed initializer at this point. | 
|   733   // Detect attempts at 'let' declarations in sloppy mode. |   739   // Detect attempts at 'let' declarations in sloppy mode. | 
|   734   if (peek() == Token::IDENTIFIER && strict_mode() == SLOPPY && |   740   if (peek() == Token::IDENTIFIER && strict_mode() == SLOPPY && | 
|   735       is_let_identifier_expression) { |   741       is_let_identifier_expression) { | 
|   736     ReportMessage("lexical_strict_mode", NULL); |   742     ReportMessage("sloppy_lexical", NULL); | 
|   737     *ok = false; |   743     *ok = false; | 
|   738     return Statement::Default(); |   744     return Statement::Default(); | 
|   739   } |   745   } | 
|   740   Expect(Token::SEMICOLON, CHECK_OK); |   746   Expect(Token::SEMICOLON, CHECK_OK); | 
|   741  |   747  | 
|   742   if (peek() != Token::SEMICOLON) { |   748   if (peek() != Token::SEMICOLON) { | 
|   743     ParseExpression(true, CHECK_OK); |   749     ParseExpression(true, CHECK_OK); | 
|   744   } |   750   } | 
|   745   Expect(Token::SEMICOLON, CHECK_OK); |   751   Expect(Token::SEMICOLON, CHECK_OK); | 
|   746  |   752  | 
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   991   Expect(Token::RBRACE, CHECK_OK); |   997   Expect(Token::RBRACE, CHECK_OK); | 
|   992  |   998  | 
|   993   return Expression::Default(); |   999   return Expression::Default(); | 
|   994 } |  1000 } | 
|   995  |  1001  | 
|   996  |  1002  | 
|   997 PreParser::Expression PreParser::ParseV8Intrinsic(bool* ok) { |  1003 PreParser::Expression PreParser::ParseV8Intrinsic(bool* ok) { | 
|   998   // CallRuntime :: |  1004   // CallRuntime :: | 
|   999   //   '%' Identifier Arguments |  1005   //   '%' Identifier Arguments | 
|  1000   Expect(Token::MOD, CHECK_OK); |  1006   Expect(Token::MOD, CHECK_OK); | 
|  1001   if (!allow_natives_syntax()) { |  1007   if (!allow_natives()) { | 
|  1002     *ok = false; |  1008     *ok = false; | 
|  1003     return Expression::Default(); |  1009     return Expression::Default(); | 
|  1004   } |  1010   } | 
|  1005   // Allow "eval" or "arguments" for backward compatibility. |  1011   // Allow "eval" or "arguments" for backward compatibility. | 
|  1006   ParseIdentifier(kAllowEvalOrArguments, CHECK_OK); |  1012   ParseIdentifier(kAllowEvalOrArguments, CHECK_OK); | 
|  1007   ParseArguments(ok); |  1013   ParseArguments(ok); | 
|  1008  |  1014  | 
|  1009   return Expression::Default(); |  1015   return Expression::Default(); | 
|  1010 } |  1016 } | 
|  1011  |  1017  | 
|  1012 #undef CHECK_OK |  1018 #undef CHECK_OK | 
|  1013  |  1019  | 
|  1014  |  1020  | 
|  1015 } }  // v8::internal |  1021 } }  // v8::internal | 
| OLD | NEW |