Index: runtime/lib/mirrors.cc |
=================================================================== |
--- runtime/lib/mirrors.cc (revision 32446) |
+++ runtime/lib/mirrors.cc (working copy) |
@@ -856,8 +856,8 @@ |
ASSERT(instantiator.IsFinalized()); |
ASSERT(!instantiator.IsMalformed()); |
- const AbstractTypeArguments& type_args = |
- AbstractTypeArguments::Handle(instantiator.arguments()); |
+ const TypeArguments& type_args = |
+ TypeArguments::Handle(instantiator.arguments()); |
Error& bound_error = Error::Handle(); |
AbstractType& result = |
AbstractType::Handle(type.InstantiateFrom(type_args, &bound_error)); |
@@ -1258,8 +1258,7 @@ |
const Array& result = Array::Handle(Array::New(num_params)); |
AbstractType& arg_type = AbstractType::Handle(); |
Instance& type_mirror = Instance::Handle(); |
- const AbstractTypeArguments& args = |
- AbstractTypeArguments::Handle(type.arguments()); |
+ const TypeArguments& args = TypeArguments::Handle(type.arguments()); |
// Handle argument lists that have been optimized away, because either no |
// arguments have been provided, or all arguments are dynamic. Return a list |
@@ -1750,8 +1749,7 @@ |
} |
ASSERT(!type.IsNull()); |
- AbstractTypeArguments& type_arguments = |
- AbstractTypeArguments::Handle(type.arguments()); |
+ TypeArguments& type_arguments = TypeArguments::Handle(type.arguments()); |
if (!type.IsInstantiated()) { |
// Must have been a declaration type. |
AbstractType& rare_type = AbstractType::Handle(klass.RareType()); |
@@ -1775,6 +1773,7 @@ |
ThrowInvokeError(bound_error); |
UNREACHABLE(); |
} |
+ redirect_type ^= redirect_type.Canonicalize(); |
} |
type = redirect_type.raw(); |