| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 int beg_loc = scanner().location().beg_pos; | 649 int beg_loc = scanner().location().beg_pos; |
| 650 ParseSourceElements(body, Token::EOS, info->is_eval(), true, &ok); | 650 ParseSourceElements(body, Token::EOS, info->is_eval(), true, &ok); |
| 651 if (ok && !top_scope_->is_classic_mode()) { | 651 if (ok && !top_scope_->is_classic_mode()) { |
| 652 CheckOctalLiteral(beg_loc, scanner().location().end_pos, &ok); | 652 CheckOctalLiteral(beg_loc, scanner().location().end_pos, &ok); |
| 653 } | 653 } |
| 654 | 654 |
| 655 if (ok && is_extended_mode()) { | 655 if (ok && is_extended_mode()) { |
| 656 CheckConflictingVarDeclarations(top_scope_, &ok); | 656 CheckConflictingVarDeclarations(top_scope_, &ok); |
| 657 } | 657 } |
| 658 | 658 |
| 659 if (ok && info->parse_restriction() == ONLY_SINGLE_FUNCTION_LITERAL) { |
| 660 if (body->length() != 1 || |
| 661 !body->at(0)->IsExpressionStatement() || |
| 662 !body->at(0)->AsExpressionStatement()-> |
| 663 expression()->IsFunctionLiteral()) { |
| 664 ReportMessage("unable_to_parse", Vector<const char*>::empty()); |
| 665 ok = false; |
| 666 } |
| 667 } |
| 668 |
| 659 if (ok) { | 669 if (ok) { |
| 660 result = factory()->NewFunctionLiteral( | 670 result = factory()->NewFunctionLiteral( |
| 661 no_name, | 671 no_name, |
| 662 top_scope_, | 672 top_scope_, |
| 663 body, | 673 body, |
| 664 function_state.materialized_literal_count(), | 674 function_state.materialized_literal_count(), |
| 665 function_state.expected_property_count(), | 675 function_state.expected_property_count(), |
| 666 function_state.handler_count(), | 676 function_state.handler_count(), |
| 667 function_state.only_simple_this_property_assignments(), | 677 function_state.only_simple_this_property_assignments(), |
| 668 function_state.this_property_assignments(), | 678 function_state.this_property_assignments(), |
| (...skipping 5263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5932 ASSERT(info->isolate()->has_pending_exception()); | 5942 ASSERT(info->isolate()->has_pending_exception()); |
| 5933 } else { | 5943 } else { |
| 5934 result = parser.ParseProgram(); | 5944 result = parser.ParseProgram(); |
| 5935 } | 5945 } |
| 5936 } | 5946 } |
| 5937 info->SetFunction(result); | 5947 info->SetFunction(result); |
| 5938 return (result != NULL); | 5948 return (result != NULL); |
| 5939 } | 5949 } |
| 5940 | 5950 |
| 5941 } } // namespace v8::internal | 5951 } } // namespace v8::internal |
| OLD | NEW |