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 | 6 |
7 #include "lib/invocation_mirror.h" | 7 #include "lib/invocation_mirror.h" |
8 #include "platform/utils.h" | 8 #include "platform/utils.h" |
9 #include "vm/ast_transformer.h" | 9 #include "vm/ast_transformer.h" |
10 #include "vm/bootstrap.h" | 10 #include "vm/bootstrap.h" |
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
937 const Function& fake_function = Function::ZoneHandle(Function::New( | 937 const Function& fake_function = Function::ZoneHandle(Function::New( |
938 Symbols::At(), | 938 Symbols::At(), |
939 RawFunction::kRegularFunction, | 939 RawFunction::kRegularFunction, |
940 true, // is_static | 940 true, // is_static |
941 false, // is_const | 941 false, // is_const |
942 false, // is_abstract | 942 false, // is_abstract |
943 false, // is_external | 943 false, // is_external |
944 false, // is_native | 944 false, // is_native |
945 cls, | 945 cls, |
946 token_pos)); | 946 token_pos)); |
| 947 fake_function.set_is_debuggable(false); |
947 ParsedFunction* parsed_function = | 948 ParsedFunction* parsed_function = |
948 new ParsedFunction(isolate, fake_function); | 949 new ParsedFunction(isolate, fake_function); |
949 Parser parser(script, parsed_function, token_pos); | 950 Parser parser(script, parsed_function, token_pos); |
950 parser.set_current_class(cls); | 951 parser.set_current_class(cls); |
951 | 952 |
952 RawObject* metadata = parser.EvaluateMetadata(); | 953 RawObject* metadata = parser.EvaluateMetadata(); |
953 return metadata; | 954 return metadata; |
954 } else { | 955 } else { |
955 Error& error = Error::Handle(isolate); | 956 Error& error = Error::Handle(isolate); |
956 error = isolate->object_store()->sticky_error(); | 957 error = isolate->object_store()->sticky_error(); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1075 false, // !external | 1076 false, // !external |
1076 false, // !native | 1077 false, // !native |
1077 Class::Handle(field.owner()), | 1078 Class::Handle(field.owner()), |
1078 field.token_pos())); | 1079 field.token_pos())); |
1079 initializer.set_result_type(AbstractType::Handle(isolate, field.type())); | 1080 initializer.set_result_type(AbstractType::Handle(isolate, field.type())); |
1080 // Static initializer functions are hidden from the user. | 1081 // Static initializer functions are hidden from the user. |
1081 // Since they are only executed once, we avoid optimizing | 1082 // Since they are only executed once, we avoid optimizing |
1082 // and inlining them. After the field is initialized, the | 1083 // and inlining them. After the field is initialized, the |
1083 // compiler can eliminate the call to the static initializer. | 1084 // compiler can eliminate the call to the static initializer. |
1084 initializer.set_is_visible(false); | 1085 initializer.set_is_visible(false); |
| 1086 initializer.set_is_debuggable(false); |
1085 initializer.SetIsOptimizable(false); | 1087 initializer.SetIsOptimizable(false); |
1086 initializer.set_is_inlinable(false); | 1088 initializer.set_is_inlinable(false); |
1087 | 1089 |
1088 ParsedFunction* parsed_function = new ParsedFunction(isolate, initializer); | 1090 ParsedFunction* parsed_function = new ParsedFunction(isolate, initializer); |
1089 Parser parser(script, parsed_function, field.token_pos()); | 1091 Parser parser(script, parsed_function, field.token_pos()); |
1090 | 1092 |
1091 SequenceNode* body = parser.ParseStaticInitializer(); | 1093 SequenceNode* body = parser.ParseStaticInitializer(); |
1092 parsed_function->SetNodeSequence(body); | 1094 parsed_function->SetNodeSequence(body); |
1093 parsed_function->set_default_parameter_values(Object::null_array()); | 1095 parsed_function->set_default_parameter_values(Object::null_array()); |
1094 | 1096 |
(...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1640 Function::New(*parameter.name, | 1642 Function::New(*parameter.name, |
1641 RawFunction::kSignatureFunction, | 1643 RawFunction::kSignatureFunction, |
1642 /* is_static = */ false, | 1644 /* is_static = */ false, |
1643 /* is_const = */ false, | 1645 /* is_const = */ false, |
1644 /* is_abstract = */ false, | 1646 /* is_abstract = */ false, |
1645 /* is_external = */ false, | 1647 /* is_external = */ false, |
1646 /* is_native = */ false, | 1648 /* is_native = */ false, |
1647 current_class(), | 1649 current_class(), |
1648 parameter.name_pos)); | 1650 parameter.name_pos)); |
1649 signature_function.set_result_type(result_type); | 1651 signature_function.set_result_type(result_type); |
| 1652 signature_function.set_is_debuggable(false); |
1650 AddFormalParamsToFunction(&func_params, signature_function); | 1653 AddFormalParamsToFunction(&func_params, signature_function); |
1651 const String& signature = String::Handle(I, | 1654 const String& signature = String::Handle(I, |
1652 signature_function.Signature()); | 1655 signature_function.Signature()); |
1653 // Lookup the signature class, i.e. the class whose name is the signature. | 1656 // Lookup the signature class, i.e. the class whose name is the signature. |
1654 // We only lookup in the current library, but not in its imports, and only | 1657 // We only lookup in the current library, but not in its imports, and only |
1655 // create a new canonical signature class if it does not exist yet. | 1658 // create a new canonical signature class if it does not exist yet. |
1656 Class& signature_class = Class::ZoneHandle(I, | 1659 Class& signature_class = Class::ZoneHandle(I, |
1657 library_.LookupLocalClass(signature)); | 1660 library_.LookupLocalClass(signature)); |
1658 if (signature_class.IsNull()) { | 1661 if (signature_class.IsNull()) { |
1659 signature_class = Class::NewSignatureClass(signature, | 1662 signature_class = Class::NewSignatureClass(signature, |
(...skipping 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3122 } | 3125 } |
3123 } | 3126 } |
3124 | 3127 |
3125 RawFunction::AsyncModifier func_modifier = ParseFunctionModifier(); | 3128 RawFunction::AsyncModifier func_modifier = ParseFunctionModifier(); |
3126 func.set_modifier(func_modifier); | 3129 func.set_modifier(func_modifier); |
3127 | 3130 |
3128 OpenBlock(); // Open a nested scope for the outermost function block. | 3131 OpenBlock(); // Open a nested scope for the outermost function block. |
3129 | 3132 |
3130 Function& async_closure = Function::ZoneHandle(I); | 3133 Function& async_closure = Function::ZoneHandle(I); |
3131 if (func.IsAsyncFunction() && !func.is_async_closure()) { | 3134 if (func.IsAsyncFunction() && !func.is_async_closure()) { |
| 3135 // The code of an async function is synthesized. Disable debugging. |
| 3136 func.set_is_debuggable(false); |
3132 async_closure = OpenAsyncFunction(func.token_pos()); | 3137 async_closure = OpenAsyncFunction(func.token_pos()); |
3133 } else if (func.is_async_closure()) { | 3138 } else if (func.is_async_closure()) { |
| 3139 // The closure containing the body of an async function is debuggable. |
| 3140 ASSERT(func.is_debuggable()); |
3134 OpenAsyncClosure(); | 3141 OpenAsyncClosure(); |
3135 } | 3142 } |
3136 | 3143 |
3137 BoolScope allow_await(&this->await_is_keyword_, | 3144 BoolScope allow_await(&this->await_is_keyword_, |
3138 func.IsAsyncFunction() || func.is_async_closure()); | 3145 func.IsAsyncFunction() || func.is_async_closure()); |
3139 intptr_t end_token_pos = 0; | 3146 intptr_t end_token_pos = 0; |
3140 if (CurrentToken() == Token::kLBRACE) { | 3147 if (CurrentToken() == Token::kLBRACE) { |
3141 ConsumeToken(); | 3148 ConsumeToken(); |
3142 if (String::Handle(I, func.name()).Equals(Symbols::EqualOperator())) { | 3149 if (String::Handle(I, func.name()).Equals(Symbols::EqualOperator())) { |
3143 const Class& owner = Class::Handle(I, func.Owner()); | 3150 const Class& owner = Class::Handle(I, func.Owner()); |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3767 getter = Function::New(getter_name, | 3774 getter = Function::New(getter_name, |
3768 RawFunction::kImplicitStaticFinalGetter, | 3775 RawFunction::kImplicitStaticFinalGetter, |
3769 field->has_static, | 3776 field->has_static, |
3770 field->has_const, | 3777 field->has_const, |
3771 /* is_abstract = */ false, | 3778 /* is_abstract = */ false, |
3772 /* is_external = */ false, | 3779 /* is_external = */ false, |
3773 /* is_native = */ false, | 3780 /* is_native = */ false, |
3774 current_class(), | 3781 current_class(), |
3775 field->name_pos); | 3782 field->name_pos); |
3776 getter.set_result_type(*field->type); | 3783 getter.set_result_type(*field->type); |
| 3784 getter.set_is_debuggable(false); |
3777 members->AddFunction(getter); | 3785 members->AddFunction(getter); |
3778 } | 3786 } |
3779 } | 3787 } |
3780 | 3788 |
3781 // For instance fields, we create implicit getter and setter methods. | 3789 // For instance fields, we create implicit getter and setter methods. |
3782 if (!field->has_static) { | 3790 if (!field->has_static) { |
3783 String& getter_name = String::Handle(I, | 3791 String& getter_name = String::Handle(I, |
3784 Field::GetterSymbol(*field->name)); | 3792 Field::GetterSymbol(*field->name)); |
3785 getter = Function::New(getter_name, RawFunction::kImplicitGetter, | 3793 getter = Function::New(getter_name, RawFunction::kImplicitGetter, |
3786 field->has_static, | 3794 field->has_static, |
3787 field->has_final, | 3795 field->has_final, |
3788 /* is_abstract = */ false, | 3796 /* is_abstract = */ false, |
3789 /* is_external = */ false, | 3797 /* is_external = */ false, |
3790 /* is_native = */ false, | 3798 /* is_native = */ false, |
3791 current_class(), | 3799 current_class(), |
3792 field->name_pos); | 3800 field->name_pos); |
3793 ParamList params; | 3801 ParamList params; |
3794 ASSERT(current_class().raw() == getter.Owner()); | 3802 ASSERT(current_class().raw() == getter.Owner()); |
3795 params.AddReceiver(ReceiverType(current_class()), field->name_pos); | 3803 params.AddReceiver(ReceiverType(current_class()), field->name_pos); |
3796 getter.set_result_type(*field->type); | 3804 getter.set_result_type(*field->type); |
| 3805 getter.set_is_debuggable(false); |
3797 AddFormalParamsToFunction(¶ms, getter); | 3806 AddFormalParamsToFunction(¶ms, getter); |
3798 members->AddFunction(getter); | 3807 members->AddFunction(getter); |
3799 if (!field->has_final) { | 3808 if (!field->has_final) { |
3800 // Build a setter accessor for non-const fields. | 3809 // Build a setter accessor for non-const fields. |
3801 String& setter_name = String::Handle(I, | 3810 String& setter_name = String::Handle(I, |
3802 Field::SetterSymbol(*field->name)); | 3811 Field::SetterSymbol(*field->name)); |
3803 setter = Function::New(setter_name, RawFunction::kImplicitSetter, | 3812 setter = Function::New(setter_name, RawFunction::kImplicitSetter, |
3804 field->has_static, | 3813 field->has_static, |
3805 field->has_final, | 3814 field->has_final, |
3806 /* is_abstract = */ false, | 3815 /* is_abstract = */ false, |
3807 /* is_external = */ false, | 3816 /* is_external = */ false, |
3808 /* is_native = */ false, | 3817 /* is_native = */ false, |
3809 current_class(), | 3818 current_class(), |
3810 field->name_pos); | 3819 field->name_pos); |
3811 ParamList params; | 3820 ParamList params; |
3812 ASSERT(current_class().raw() == setter.Owner()); | 3821 ASSERT(current_class().raw() == setter.Owner()); |
3813 params.AddReceiver(ReceiverType(current_class()), field->name_pos); | 3822 params.AddReceiver(ReceiverType(current_class()), field->name_pos); |
3814 params.AddFinalParameter(TokenPos(), | 3823 params.AddFinalParameter(TokenPos(), |
3815 &Symbols::Value(), | 3824 &Symbols::Value(), |
3816 field->type); | 3825 field->type); |
3817 setter.set_result_type(Type::Handle(I, Type::VoidType())); | 3826 setter.set_result_type(Type::Handle(I, Type::VoidType())); |
| 3827 setter.set_is_debuggable(false); |
3818 AddFormalParamsToFunction(¶ms, setter); | 3828 AddFormalParamsToFunction(¶ms, setter); |
3819 members->AddFunction(setter); | 3829 members->AddFunction(setter); |
3820 } | 3830 } |
3821 } | 3831 } |
3822 | 3832 |
3823 if (CurrentToken() != Token::kCOMMA) { | 3833 if (CurrentToken() != Token::kCOMMA) { |
3824 break; | 3834 break; |
3825 } | 3835 } |
3826 ConsumeToken(); | 3836 ConsumeToken(); |
3827 field->name_pos = this->TokenPos(); | 3837 field->name_pos = this->TokenPos(); |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4407 getter = Function::New(getter_name, | 4417 getter = Function::New(getter_name, |
4408 RawFunction::kImplicitGetter, | 4418 RawFunction::kImplicitGetter, |
4409 /* is_static = */ false, | 4419 /* is_static = */ false, |
4410 /* is_const = */ true, | 4420 /* is_const = */ true, |
4411 /* is_abstract = */ false, | 4421 /* is_abstract = */ false, |
4412 /* is_external = */ false, | 4422 /* is_external = */ false, |
4413 /* is_native = */ false, | 4423 /* is_native = */ false, |
4414 cls, | 4424 cls, |
4415 cls.token_pos()); | 4425 cls.token_pos()); |
4416 getter.set_result_type(int_type); | 4426 getter.set_result_type(int_type); |
| 4427 getter.set_is_debuggable(false); |
4417 ParamList params; | 4428 ParamList params; |
4418 params.AddReceiver(&dynamic_type, cls.token_pos()); | 4429 params.AddReceiver(&dynamic_type, cls.token_pos()); |
4419 AddFormalParamsToFunction(¶ms, getter); | 4430 AddFormalParamsToFunction(¶ms, getter); |
4420 enum_members.AddFunction(getter); | 4431 enum_members.AddFunction(getter); |
4421 | 4432 |
4422 GrowableObjectArray& enum_names = GrowableObjectArray::Handle(I, | 4433 GrowableObjectArray& enum_names = GrowableObjectArray::Handle(I, |
4423 GrowableObjectArray::New(8, Heap::kOld)); | 4434 GrowableObjectArray::New(8, Heap::kOld)); |
4424 const String& name_prefix = | 4435 const String& name_prefix = |
4425 String::Handle(String::Concat(enum_name, Symbols::Dot())); | 4436 String::Handle(String::Concat(enum_name, Symbols::Dot())); |
4426 | 4437 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4553 Function::New(ctor_name, | 4564 Function::New(ctor_name, |
4554 RawFunction::kConstructor, | 4565 RawFunction::kConstructor, |
4555 /* is_static = */ false, | 4566 /* is_static = */ false, |
4556 /* is_const = */ false, | 4567 /* is_const = */ false, |
4557 /* is_abstract = */ false, | 4568 /* is_abstract = */ false, |
4558 /* is_external = */ false, | 4569 /* is_external = */ false, |
4559 /* is_native = */ false, | 4570 /* is_native = */ false, |
4560 cls, | 4571 cls, |
4561 cls.token_pos())); | 4572 cls.token_pos())); |
4562 ctor.set_end_token_pos(ctor.token_pos()); | 4573 ctor.set_end_token_pos(ctor.token_pos()); |
| 4574 ctor.set_is_debuggable(false); |
4563 if (library_.is_dart_scheme() && library_.IsPrivate(ctor_name)) { | 4575 if (library_.is_dart_scheme() && library_.IsPrivate(ctor_name)) { |
4564 ctor.set_is_visible(false); | 4576 ctor.set_is_visible(false); |
4565 } | 4577 } |
4566 | 4578 |
4567 ParamList params; | 4579 ParamList params; |
4568 // Add implicit 'this' parameter. | 4580 // Add implicit 'this' parameter. |
4569 const AbstractType* receiver_type = ReceiverType(cls); | 4581 const AbstractType* receiver_type = ReceiverType(cls); |
4570 params.AddReceiver(receiver_type, cls.token_pos()); | 4582 params.AddReceiver(receiver_type, cls.token_pos()); |
4571 // Add implicit parameter for construction phase. | 4583 // Add implicit parameter for construction phase. |
4572 params.AddFinalParameter(cls.token_pos(), | 4584 params.AddFinalParameter(cls.token_pos(), |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4789 Function::New(*alias_name, | 4801 Function::New(*alias_name, |
4790 RawFunction::kSignatureFunction, | 4802 RawFunction::kSignatureFunction, |
4791 /* is_static = */ false, | 4803 /* is_static = */ false, |
4792 /* is_const = */ false, | 4804 /* is_const = */ false, |
4793 /* is_abstract = */ false, | 4805 /* is_abstract = */ false, |
4794 /* is_external = */ false, | 4806 /* is_external = */ false, |
4795 /* is_native = */ false, | 4807 /* is_native = */ false, |
4796 function_type_alias, | 4808 function_type_alias, |
4797 alias_name_pos)); | 4809 alias_name_pos)); |
4798 signature_function.set_result_type(result_type); | 4810 signature_function.set_result_type(result_type); |
| 4811 signature_function.set_is_debuggable(false); |
4799 AddFormalParamsToFunction(&func_params, signature_function); | 4812 AddFormalParamsToFunction(&func_params, signature_function); |
4800 | 4813 |
4801 // Patch the signature function in the signature class. | 4814 // Patch the signature function in the signature class. |
4802 function_type_alias.PatchSignatureFunction(signature_function); | 4815 function_type_alias.PatchSignatureFunction(signature_function); |
4803 | 4816 |
4804 const String& signature = String::Handle(I, | 4817 const String& signature = String::Handle(I, |
4805 signature_function.Signature()); | 4818 signature_function.Signature()); |
4806 if (FLAG_trace_parser) { | 4819 if (FLAG_trace_parser) { |
4807 OS::Print("TopLevel parsing function type alias '%s'\n", | 4820 OS::Print("TopLevel parsing function type alias '%s'\n", |
4808 signature.ToCString()); | 4821 signature.ToCString()); |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5130 getter = Function::New(getter_name, | 5143 getter = Function::New(getter_name, |
5131 RawFunction::kImplicitStaticFinalGetter, | 5144 RawFunction::kImplicitStaticFinalGetter, |
5132 is_static, | 5145 is_static, |
5133 is_const, | 5146 is_const, |
5134 /* is_abstract = */ false, | 5147 /* is_abstract = */ false, |
5135 /* is_external = */ false, | 5148 /* is_external = */ false, |
5136 /* is_native = */ false, | 5149 /* is_native = */ false, |
5137 current_class(), | 5150 current_class(), |
5138 name_pos); | 5151 name_pos); |
5139 getter.set_result_type(type); | 5152 getter.set_result_type(type); |
| 5153 getter.set_is_debuggable(false); |
5140 top_level->functions.Add(getter); | 5154 top_level->functions.Add(getter); |
5141 } | 5155 } |
5142 } else if (is_final) { | 5156 } else if (is_final) { |
5143 ReportError(name_pos, "missing initializer for final or const variable"); | 5157 ReportError(name_pos, "missing initializer for final or const variable"); |
5144 } | 5158 } |
5145 | 5159 |
5146 if (CurrentToken() == Token::kCOMMA) { | 5160 if (CurrentToken() == Token::kCOMMA) { |
5147 ConsumeToken(); | 5161 ConsumeToken(); |
5148 } else if (CurrentToken() == Token::kSEMICOLON) { | 5162 } else if (CurrentToken() == Token::kSEMICOLON) { |
5149 ConsumeToken(); | 5163 ConsumeToken(); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5252 is_static, | 5266 is_static, |
5253 /* is_const = */ false, | 5267 /* is_const = */ false, |
5254 /* is_abstract = */ false, | 5268 /* is_abstract = */ false, |
5255 is_external, | 5269 is_external, |
5256 is_native, | 5270 is_native, |
5257 current_class(), | 5271 current_class(), |
5258 decl_begin_pos)); | 5272 decl_begin_pos)); |
5259 func.set_result_type(result_type); | 5273 func.set_result_type(result_type); |
5260 func.set_end_token_pos(function_end_pos); | 5274 func.set_end_token_pos(function_end_pos); |
5261 func.set_modifier(func_modifier); | 5275 func.set_modifier(func_modifier); |
5262 if (is_native && library_.is_dart_scheme() && library_.IsPrivate(func_name)) { | 5276 if (is_native) { |
5263 func.set_is_visible(false); | 5277 func.set_is_debuggable(false); |
| 5278 if (library_.is_dart_scheme() && library_.IsPrivate(func_name)) { |
| 5279 func.set_is_visible(false); |
| 5280 } |
5264 } | 5281 } |
5265 AddFormalParamsToFunction(¶ms, func); | 5282 AddFormalParamsToFunction(¶ms, func); |
5266 top_level->functions.Add(func); | 5283 top_level->functions.Add(func); |
5267 if (!is_patch) { | 5284 if (!is_patch) { |
5268 library_.AddObject(func, func_name); | 5285 library_.AddObject(func, func_name); |
5269 } else { | 5286 } else { |
5270 library_.ReplaceObject(func, func_name); | 5287 library_.ReplaceObject(func, func_name); |
5271 } | 5288 } |
5272 if (metadata_pos >= 0) { | 5289 if (metadata_pos >= 0) { |
5273 library_.AddFunctionMetadata(func, metadata_pos); | 5290 library_.AddFunctionMetadata(func, metadata_pos); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5392 is_static, | 5409 is_static, |
5393 /* is_const = */ false, | 5410 /* is_const = */ false, |
5394 /* is_abstract = */ false, | 5411 /* is_abstract = */ false, |
5395 is_external, | 5412 is_external, |
5396 is_native, | 5413 is_native, |
5397 current_class(), | 5414 current_class(), |
5398 decl_begin_pos)); | 5415 decl_begin_pos)); |
5399 func.set_result_type(result_type); | 5416 func.set_result_type(result_type); |
5400 func.set_end_token_pos(accessor_end_pos); | 5417 func.set_end_token_pos(accessor_end_pos); |
5401 func.set_modifier(func_modifier); | 5418 func.set_modifier(func_modifier); |
5402 if (is_native && library_.is_dart_scheme() && | 5419 if (is_native) { |
5403 library_.IsPrivate(accessor_name)) { | 5420 func.set_is_debuggable(false); |
5404 func.set_is_visible(false); | 5421 if (library_.is_dart_scheme() && library_.IsPrivate(accessor_name)) { |
| 5422 func.set_is_visible(false); |
| 5423 } |
5405 } | 5424 } |
5406 AddFormalParamsToFunction(¶ms, func); | 5425 AddFormalParamsToFunction(¶ms, func); |
5407 top_level->functions.Add(func); | 5426 top_level->functions.Add(func); |
5408 if (!is_patch) { | 5427 if (!is_patch) { |
5409 library_.AddObject(func, accessor_name); | 5428 library_.AddObject(func, accessor_name); |
5410 } else { | 5429 } else { |
5411 library_.ReplaceObject(func, accessor_name); | 5430 library_.ReplaceObject(func, accessor_name); |
5412 } | 5431 } |
5413 if (metadata_pos >= 0) { | 5432 if (metadata_pos >= 0) { |
5414 library_.AddFunctionMetadata(func, metadata_pos); | 5433 library_.AddFunctionMetadata(func, metadata_pos); |
(...skipping 6786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12201 void Parser::SkipQualIdent() { | 12220 void Parser::SkipQualIdent() { |
12202 ASSERT(IsIdentifier()); | 12221 ASSERT(IsIdentifier()); |
12203 ConsumeToken(); | 12222 ConsumeToken(); |
12204 if (CurrentToken() == Token::kPERIOD) { | 12223 if (CurrentToken() == Token::kPERIOD) { |
12205 ConsumeToken(); // Consume the kPERIOD token. | 12224 ConsumeToken(); // Consume the kPERIOD token. |
12206 ExpectIdentifier("identifier expected after '.'"); | 12225 ExpectIdentifier("identifier expected after '.'"); |
12207 } | 12226 } |
12208 } | 12227 } |
12209 | 12228 |
12210 } // namespace dart | 12229 } // namespace dart |
OLD | NEW |