| Index: runtime/vm/parser.cc
|
| diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
|
| index 29063788a885f149d9e0ee004e0e29e910e467f0..def0cfd583cb573064b429c24724fccc03f15323 100644
|
| --- a/runtime/vm/parser.cc
|
| +++ b/runtime/vm/parser.cc
|
| @@ -2144,7 +2144,7 @@ void Parser::ParseFormalParameter(bool allow_explicit_default_value,
|
|
|
| ASSERT(innermost_function().raw() == signature_function.raw());
|
| innermost_function_ = signature_function.parent_function();
|
| - signature_function.set_data(Object::Handle());
|
| + signature_function.set_data(Object::Handle(Z));
|
|
|
| Type& signature_type =
|
| Type::ZoneHandle(Z, signature_function.SignatureType());
|
| @@ -5481,6 +5481,12 @@ void Parser::ParseTypeParameters(bool parameterizing_class) {
|
| // Postpone resolution in order to avoid resolving the owner and its
|
| // type parameters, as they are not fully parsed yet.
|
| type_parameter_bound = ParseType(ClassFinalizer::kDoNotResolve);
|
| + if (!parameterizing_class) {
|
| + // TODO(regis): Resolve and finalize function type parameter bounds in
|
| + // class finalizer. For now, ignore parsed bounds to avoid unresolved
|
| + // bounds while writing snapshots.
|
| + type_parameter_bound = I->object_store()->object_type();
|
| + }
|
| } else {
|
| type_parameter_bound = I->object_store()->object_type();
|
| }
|
| @@ -5491,6 +5497,11 @@ void Parser::ParseTypeParameters(bool parameterizing_class) {
|
| type_parameter_name,
|
| type_parameter_bound,
|
| declaration_pos);
|
| + if (!parameterizing_class) {
|
| + // TODO(regis): Resolve and finalize function type parameter in
|
| + // class finalizer. For now, already mark as finalized.
|
| + type_parameter.SetIsFinalized();
|
| + }
|
| type_parameters_array.Add(
|
| &AbstractType::ZoneHandle(Z, type_parameter.raw()));
|
| if (FLAG_enable_mirrors && metadata_pos.IsReal()) {
|
|
|