| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 // of 'for-in' loops. | 302 // of 'for-in' loops. |
| 303 PreParser::Statement PreParser::ParseVariableDeclarations(bool accept_IN, | 303 PreParser::Statement PreParser::ParseVariableDeclarations(bool accept_IN, |
| 304 int* num_decl, | 304 int* num_decl, |
| 305 bool* ok) { | 305 bool* ok) { |
| 306 // VariableDeclarations :: | 306 // VariableDeclarations :: |
| 307 // ('var' | 'const') (Identifier ('=' AssignmentExpression)?)+[','] | 307 // ('var' | 'const') (Identifier ('=' AssignmentExpression)?)+[','] |
| 308 | 308 |
| 309 if (peek() == i::Token::VAR) { | 309 if (peek() == i::Token::VAR) { |
| 310 Consume(i::Token::VAR); | 310 Consume(i::Token::VAR); |
| 311 } else if (peek() == i::Token::CONST) { | 311 } else if (peek() == i::Token::CONST) { |
| 312 if (strict_mode()) { |
| 313 i::Scanner::Location location = scanner_->peek_location(); |
| 314 ReportMessageAt(location.beg_pos, location.end_pos, |
| 315 "strict_const", NULL); |
| 316 *ok = false; |
| 317 return Statement::Default(); |
| 318 } |
| 312 Consume(i::Token::CONST); | 319 Consume(i::Token::CONST); |
| 313 } else { | 320 } else { |
| 314 *ok = false; | 321 *ok = false; |
| 315 return Statement::Default(); | 322 return Statement::Default(); |
| 316 } | 323 } |
| 317 | 324 |
| 318 // The scope of a variable/const declared anywhere inside a function | 325 // The scope of a variable/const declared anywhere inside a function |
| 319 // is the entire function (ECMA-262, 3rd, 10.1.3, and 12.2). . | 326 // is the entire function (ECMA-262, 3rd, 10.1.3, and 12.2). . |
| 320 int nvars = 0; // the number of variables declared | 327 int nvars = 0; // the number of variables declared |
| 321 do { | 328 do { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 341 } | 348 } |
| 342 | 349 |
| 343 | 350 |
| 344 PreParser::Statement PreParser::ParseExpressionOrLabelledStatement(bool* ok) { | 351 PreParser::Statement PreParser::ParseExpressionOrLabelledStatement(bool* ok) { |
| 345 // ExpressionStatement | LabelledStatement :: | 352 // ExpressionStatement | LabelledStatement :: |
| 346 // Expression ';' | 353 // Expression ';' |
| 347 // Identifier ':' Statement | 354 // Identifier ':' Statement |
| 348 | 355 |
| 349 Expression expr = ParseExpression(true, CHECK_OK); | 356 Expression expr = ParseExpression(true, CHECK_OK); |
| 350 if (peek() == i::Token::COLON && expr.IsRawIdentifier()) { | 357 if (peek() == i::Token::COLON && expr.IsRawIdentifier()) { |
| 351 Consume(i::Token::COLON); | 358 if (!strict_mode() || !expr.AsIdentifier().IsFutureReserved()) { |
| 352 ParseStatement(ok); | 359 Consume(i::Token::COLON); |
| 353 return Statement::Default(); | 360 ParseStatement(ok); |
| 361 return Statement::Default(); |
| 362 } |
| 354 } | 363 } |
| 355 // Parsed expression statement. | 364 // Parsed expression statement. |
| 356 ExpectSemicolon(CHECK_OK); | 365 ExpectSemicolon(CHECK_OK); |
| 357 return Statement::ExpressionStatement(expr); | 366 return Statement::ExpressionStatement(expr); |
| 358 } | 367 } |
| 359 | 368 |
| 360 | 369 |
| 361 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { | 370 PreParser::Statement PreParser::ParseIfStatement(bool* ok) { |
| 362 // IfStatement :: | 371 // IfStatement :: |
| 363 // 'if' '(' Expression ')' Statement ('else' Statement)? | 372 // 'if' '(' Expression ')' Statement ('else' Statement)? |
| (...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1409 } | 1418 } |
| 1410 return result; | 1419 return result; |
| 1411 } | 1420 } |
| 1412 | 1421 |
| 1413 bool PreParser::peek_any_identifier() { | 1422 bool PreParser::peek_any_identifier() { |
| 1414 i::Token::Value next = peek(); | 1423 i::Token::Value next = peek(); |
| 1415 return next == i::Token::IDENTIFIER || | 1424 return next == i::Token::IDENTIFIER || |
| 1416 next == i::Token::FUTURE_RESERVED_WORD; | 1425 next == i::Token::FUTURE_RESERVED_WORD; |
| 1417 } | 1426 } |
| 1418 } } // v8::preparser | 1427 } } // v8::preparser |
| OLD | NEW |