| Index: runtime/vm/parser.cc
|
| ===================================================================
|
| --- runtime/vm/parser.cc (revision 19513)
|
| +++ runtime/vm/parser.cc (working copy)
|
| @@ -3462,7 +3462,7 @@
|
| const Class& anon_mixin_app_class =
|
| Class::Handle(mixin_application_type.type_class());
|
| mixin_application.set_super_type(
|
| - Type::Handle(anon_mixin_app_class.super_type()));
|
| + AbstractType::Handle(anon_mixin_app_class.super_type()));
|
| mixin_application.set_mixin(Type::Handle(anon_mixin_app_class.mixin()));
|
| const Array& interfaces = Array::Handle(anon_mixin_app_class.interfaces());
|
| mixin_application.set_interfaces(interfaces);
|
| @@ -3471,7 +3471,8 @@
|
| if (CurrentToken() == Token::kIMPLEMENTS) {
|
| Array& interfaces = Array::Handle();
|
| const intptr_t interfaces_pos = TokenPos();
|
| - const Type& super_type = Type::Handle(mixin_application.super_type());
|
| + Type& super_type = Type::Handle();
|
| + super_type ^= mixin_application.super_type();
|
| interfaces = ParseInterfaceList(super_type);
|
| AddInterfaces(interfaces_pos, mixin_application, interfaces);
|
| }
|
| @@ -9332,12 +9333,16 @@
|
| if (!redirect_type.IsMalformed() && !redirect_type.IsInstantiated()) {
|
| // The type arguments of the redirection type are instantiated from the
|
| // type arguments of the parsed type of the 'new' or 'const' expression.
|
| - redirect_type ^= redirect_type.InstantiateFrom(type_arguments);
|
| + Error& malformed_error = Error::Handle();
|
| + redirect_type ^= redirect_type.InstantiateFrom(type_arguments,
|
| + &malformed_error);
|
| + if (!malformed_error.IsNull()) {
|
| + redirect_type.set_malformed_error(malformed_error);
|
| + }
|
| }
|
| if (redirect_type.IsMalformed()) {
|
| if (is_const) {
|
| - const Error& error = Error::Handle(redirect_type.malformed_error());
|
| - ErrorMsg(error);
|
| + ErrorMsg(Error::Handle(redirect_type.malformed_error()));
|
| }
|
| return ThrowTypeError(redirect_type.token_pos(), redirect_type);
|
| }
|
|
|