| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/parser.h" | 5 #include "vm/parser.h" |
| 6 #include "vm/flags.h" | 6 #include "vm/flags.h" |
| 7 | 7 |
| 8 #ifndef DART_PRECOMPILED_RUNTIME | 8 #ifndef DART_PRECOMPILED_RUNTIME |
| 9 | 9 |
| 10 #include "lib/invocation_mirror.h" | 10 #include "lib/invocation_mirror.h" |
| (...skipping 5044 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5055 // Parse the formal parameters of the function type. | 5055 // Parse the formal parameters of the function type. |
| 5056 CheckToken(Token::kLPAREN, "formal parameter list expected"); | 5056 CheckToken(Token::kLPAREN, "formal parameter list expected"); |
| 5057 ParamList func_params; | 5057 ParamList func_params; |
| 5058 | 5058 |
| 5059 // Add implicit closure object parameter. | 5059 // Add implicit closure object parameter. |
| 5060 func_params.AddFinalParameter( | 5060 func_params.AddFinalParameter( |
| 5061 TokenPos(), | 5061 TokenPos(), |
| 5062 &Symbols::ClosureParameter(), | 5062 &Symbols::ClosureParameter(), |
| 5063 &Object::dynamic_type()); | 5063 &Object::dynamic_type()); |
| 5064 | 5064 |
| 5065 // Mark the current class as a typedef class (by setting its signature |
| 5066 // function field to a non-null function) before parsing its formal parameters |
| 5067 // so that parsed function types are aware that their owner class is a |
| 5068 // typedef class. |
| 5069 Function& signature_function = |
| 5070 Function::Handle(Z, Function::NewSignatureFunction(function_type_alias, |
| 5071 alias_name_pos)); |
| 5072 // Set the signature function in the function type alias class. |
| 5073 function_type_alias.set_signature_function(signature_function); |
| 5074 |
| 5065 const bool no_explicit_default_values = false; | 5075 const bool no_explicit_default_values = false; |
| 5066 ParseFormalParameterList(no_explicit_default_values, false, &func_params); | 5076 ParseFormalParameterList(no_explicit_default_values, false, &func_params); |
| 5067 ExpectSemicolon(); | 5077 ExpectSemicolon(); |
| 5068 Function& signature_function = | |
| 5069 Function::Handle(Z, Function::NewSignatureFunction(function_type_alias, | |
| 5070 alias_name_pos)); | |
| 5071 signature_function.set_result_type(result_type); | 5078 signature_function.set_result_type(result_type); |
| 5072 AddFormalParamsToFunction(&func_params, signature_function); | 5079 AddFormalParamsToFunction(&func_params, signature_function); |
| 5073 | 5080 |
| 5074 // Set the signature function in the function type alias class. | |
| 5075 function_type_alias.set_signature_function(signature_function); | |
| 5076 | |
| 5077 if (FLAG_trace_parser) { | 5081 if (FLAG_trace_parser) { |
| 5078 OS::Print("TopLevel parsing function type alias '%s'\n", | 5082 OS::Print("TopLevel parsing function type alias '%s'\n", |
| 5079 String::Handle(Z, signature_function.Signature()).ToCString()); | 5083 String::Handle(Z, signature_function.Signature()).ToCString()); |
| 5080 } | 5084 } |
| 5081 // The alias should not be marked as finalized yet, since it needs to be | 5085 // The alias should not be marked as finalized yet, since it needs to be |
| 5082 // checked in the class finalizer for illegal self references. | 5086 // checked in the class finalizer for illegal self references. |
| 5083 ASSERT(!function_type_alias.is_finalized()); | 5087 ASSERT(!function_type_alias.is_finalized()); |
| 5084 pending_classes.Add(function_type_alias, Heap::kOld); | 5088 pending_classes.Add(function_type_alias, Heap::kOld); |
| 5085 if (FLAG_enable_mirrors && metadata_pos.IsReal()) { | 5089 if (FLAG_enable_mirrors && metadata_pos.IsReal()) { |
| 5086 library_.AddClassMetadata(function_type_alias, | 5090 library_.AddClassMetadata(function_type_alias, |
| (...skipping 9394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14481 const ArgumentListNode& function_args, | 14485 const ArgumentListNode& function_args, |
| 14482 const LocalVariable* temp_for_last_arg, | 14486 const LocalVariable* temp_for_last_arg, |
| 14483 bool is_super_invocation) { | 14487 bool is_super_invocation) { |
| 14484 UNREACHABLE(); | 14488 UNREACHABLE(); |
| 14485 return NULL; | 14489 return NULL; |
| 14486 } | 14490 } |
| 14487 | 14491 |
| 14488 } // namespace dart | 14492 } // namespace dart |
| 14489 | 14493 |
| 14490 #endif // DART_PRECOMPILED_RUNTIME | 14494 #endif // DART_PRECOMPILED_RUNTIME |
| OLD | NEW |