| 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 2975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2986 int pos = position(); | 2986 int pos = position(); |
| 2987 | 2987 |
| 2988 Block* try_block; | 2988 Block* try_block; |
| 2989 { | 2989 { |
| 2990 ReturnExprScope no_tail_calls(function_state_, | 2990 ReturnExprScope no_tail_calls(function_state_, |
| 2991 ReturnExprContext::kInsideTryBlock); | 2991 ReturnExprContext::kInsideTryBlock); |
| 2992 try_block = ParseBlock(NULL, CHECK_OK); | 2992 try_block = ParseBlock(NULL, CHECK_OK); |
| 2993 } | 2993 } |
| 2994 | 2994 |
| 2995 Token::Value tok = peek(); | 2995 Token::Value tok = peek(); |
| 2996 |
| 2996 bool catch_for_promise_reject = false; | 2997 bool catch_for_promise_reject = false; |
| 2998 if (allow_natives() && tok == Token::MOD) { |
| 2999 Consume(Token::MOD); |
| 3000 catch_for_promise_reject = true; |
| 3001 tok = peek(); |
| 3002 } |
| 3003 |
| 2997 if (tok != Token::CATCH && tok != Token::FINALLY) { | 3004 if (tok != Token::CATCH && tok != Token::FINALLY) { |
| 2998 if (allow_natives() && tok == Token::MOD) { | 3005 ReportMessage(MessageTemplate::kNoCatchOrFinally); |
| 2999 Consume(Token::MOD); | 3006 *ok = false; |
| 3000 catch_for_promise_reject = true; | 3007 return NULL; |
| 3001 tok = peek(); | |
| 3002 DCHECK_EQ(Token::CATCH, tok); | |
| 3003 } else { | |
| 3004 ReportMessage(MessageTemplate::kNoCatchOrFinally); | |
| 3005 *ok = false; | |
| 3006 return NULL; | |
| 3007 } | |
| 3008 } | 3008 } |
| 3009 | 3009 |
| 3010 Scope* catch_scope = NULL; | 3010 Scope* catch_scope = NULL; |
| 3011 Variable* catch_variable = NULL; | 3011 Variable* catch_variable = NULL; |
| 3012 Block* catch_block = NULL; | 3012 Block* catch_block = NULL; |
| 3013 TailCallExpressionList tail_call_expressions_in_catch_block(zone()); | 3013 TailCallExpressionList tail_call_expressions_in_catch_block(zone()); |
| 3014 if (tok == Token::CATCH) { | 3014 if (tok == Token::CATCH) { |
| 3015 Consume(Token::CATCH); | 3015 Consume(Token::CATCH); |
| 3016 | 3016 |
| 3017 Expect(Token::LPAREN, CHECK_OK); | 3017 Expect(Token::LPAREN, CHECK_OK); |
| (...skipping 4069 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7087 node->Print(Isolate::Current()); | 7087 node->Print(Isolate::Current()); |
| 7088 } | 7088 } |
| 7089 #endif // DEBUG | 7089 #endif // DEBUG |
| 7090 | 7090 |
| 7091 #undef CHECK_OK | 7091 #undef CHECK_OK |
| 7092 #undef CHECK_OK_VOID | 7092 #undef CHECK_OK_VOID |
| 7093 #undef CHECK_FAILED | 7093 #undef CHECK_FAILED |
| 7094 | 7094 |
| 7095 } // namespace internal | 7095 } // namespace internal |
| 7096 } // namespace v8 | 7096 } // namespace v8 |
| OLD | NEW |