| Index: runtime/vm/class_finalizer.cc
|
| ===================================================================
|
| --- runtime/vm/class_finalizer.cc (revision 32446)
|
| +++ runtime/vm/class_finalizer.cc (working copy)
|
| @@ -402,8 +402,7 @@
|
| // If the target type refers to type parameters, substitute them with the
|
| // type arguments of the redirection type.
|
| if (!target_type.IsInstantiated()) {
|
| - const AbstractTypeArguments& type_args = AbstractTypeArguments::Handle(
|
| - type.arguments());
|
| + const TypeArguments& type_args = TypeArguments::Handle(type.arguments());
|
| Error& bound_error = Error::Handle();
|
| target_type ^= target_type.InstantiateFrom(type_args, &bound_error);
|
| if (bound_error.IsNull()) {
|
| @@ -461,8 +460,7 @@
|
| }
|
|
|
| // Resolve type arguments, if any.
|
| - const AbstractTypeArguments& arguments =
|
| - AbstractTypeArguments::Handle(type.arguments());
|
| + const TypeArguments& arguments = TypeArguments::Handle(type.arguments());
|
| if (!arguments.IsNull()) {
|
| const intptr_t num_arguments = arguments.Length();
|
| AbstractType& type_argument = AbstractType::Handle();
|
| @@ -531,7 +529,7 @@
|
| // same time. Canonicalization happens when pending types are processed.
|
| void ClassFinalizer::FinalizeTypeArguments(
|
| const Class& cls,
|
| - const AbstractTypeArguments& arguments,
|
| + const TypeArguments& arguments,
|
| intptr_t num_uninitialized_arguments,
|
| Error* bound_error,
|
| GrowableObjectArray* pending_types) {
|
| @@ -552,7 +550,7 @@
|
| cls, super_type, kFinalize, pending_types);
|
| cls.set_super_type(super_type);
|
| }
|
| - AbstractTypeArguments& super_type_args = AbstractTypeArguments::Handle(
|
| + TypeArguments& super_type_args = TypeArguments::Handle(
|
| super_type.arguments());
|
| // Offset of super type's type parameters in cls' type argument vector.
|
| const intptr_t super_offset = num_super_type_args - num_super_type_params;
|
| @@ -594,10 +592,9 @@
|
| // Replace a type argument that cannot be checked at compile time by a
|
| // BoundedType, thereby postponing the bound check to run time.
|
| // Return a bound error if a type argument is not within bound at compile time.
|
| -void ClassFinalizer::CheckTypeArgumentBounds(
|
| - const Class& cls,
|
| - const AbstractTypeArguments& arguments,
|
| - Error* bound_error) {
|
| +void ClassFinalizer::CheckTypeArgumentBounds(const Class& cls,
|
| + const TypeArguments& arguments,
|
| + Error* bound_error) {
|
| if (!cls.is_type_finalized()) {
|
| FinalizeUpperBounds(cls);
|
| }
|
| @@ -690,8 +687,7 @@
|
|
|
| void ClassFinalizer::CheckTypeBounds(const Class& cls, const Type& type) {
|
| ASSERT(type.IsFinalized());
|
| - AbstractTypeArguments& arguments =
|
| - AbstractTypeArguments::Handle(type.arguments());
|
| + TypeArguments& arguments = TypeArguments::Handle(type.arguments());
|
| if (arguments.IsNull()) {
|
| return;
|
| }
|
| @@ -830,8 +826,8 @@
|
| // Check the number of parsed type arguments, if any.
|
| // Specifying no type arguments indicates a raw type, which is not an error.
|
| // However, type parameter bounds are checked below, even for a raw type.
|
| - AbstractTypeArguments& arguments =
|
| - AbstractTypeArguments::Handle(parameterized_type.arguments());
|
| + TypeArguments& arguments =
|
| + TypeArguments::Handle(parameterized_type.arguments());
|
| if (!arguments.IsNull() && (arguments.Length() != num_type_parameters)) {
|
| // Wrong number of type arguments. The type is mapped to the raw type.
|
| if (FLAG_error_on_bad_type) {
|
| @@ -844,7 +840,7 @@
|
| }
|
| // Make the type raw and continue without reporting any error.
|
| // A static warning should have been reported.
|
| - arguments = AbstractTypeArguments::null();
|
| + arguments = TypeArguments::null();
|
| parameterized_type.set_arguments(arguments);
|
| }
|
|
|
| @@ -963,7 +959,7 @@
|
| if (FLAG_trace_type_finalization) {
|
| OS::Print("Done finalizing type '%s' with %" Pd " type args: %s\n",
|
| String::Handle(parameterized_type.Name()).ToCString(),
|
| - parameterized_type.arguments() == AbstractTypeArguments::null() ?
|
| + parameterized_type.arguments() == TypeArguments::null() ?
|
| 0 : num_type_arguments,
|
| parameterized_type.ToCString());
|
| }
|
| @@ -1050,8 +1046,8 @@
|
| const intptr_t num_type_params = cls.NumTypeParameters();
|
| TypeParameter& type_param = TypeParameter::Handle();
|
| AbstractType& bound = AbstractType::Handle();
|
| - const AbstractTypeArguments& type_params =
|
| - AbstractTypeArguments::Handle(cls.type_parameters());
|
| + const TypeArguments& type_params =
|
| + TypeArguments::Handle(cls.type_parameters());
|
| ASSERT((type_params.IsNull() && (num_type_params == 0)) ||
|
| (type_params.Length() == num_type_params));
|
| // In a first pass, resolve all bounds. This guarantees that finalization
|
| @@ -1069,8 +1065,8 @@
|
| const intptr_t num_type_params = cls.NumTypeParameters();
|
| TypeParameter& type_param = TypeParameter::Handle();
|
| AbstractType& bound = AbstractType::Handle();
|
| - const AbstractTypeArguments& type_params =
|
| - AbstractTypeArguments::Handle(cls.type_parameters());
|
| + const TypeArguments& type_params =
|
| + TypeArguments::Handle(cls.type_parameters());
|
| ASSERT((type_params.IsNull() && (num_type_params == 0)) ||
|
| (type_params.Length() == num_type_params));
|
| for (intptr_t i = 0; i < num_type_params; i++) {
|
| @@ -1191,7 +1187,7 @@
|
| if (!error.IsNull() ||
|
| (!type.IsDynamicType() &&
|
| !const_value.IsInstanceOf(type,
|
| - AbstractTypeArguments::Handle(),
|
| + Object::null_type_arguments(),
|
| &error))) {
|
| if (FLAG_error_on_bad_type) {
|
| const AbstractType& const_value_type = AbstractType::Handle(
|
| @@ -1386,7 +1382,7 @@
|
| // CloneMixinAppTypeParameters decorates class S&M with type parameters T` and
|
| // T, and use them as type arguments in S<T`> and M<T>.
|
| void ClassFinalizer::CloneMixinAppTypeParameters(const Class& mixin_app_class) {
|
| - ASSERT(mixin_app_class.type_parameters() == AbstractTypeArguments::null());
|
| + ASSERT(mixin_app_class.type_parameters() == TypeArguments::null());
|
| Isolate* isolate = Isolate::Current();
|
| const AbstractType& super_type = AbstractType::Handle(isolate,
|
| mixin_app_class.super_type());
|
| @@ -1664,7 +1660,7 @@
|
| // the mixin class typedef.
|
| const Type& generic_mixin_type = Type::Handle(isolate,
|
| Type::New(Class::Handle(isolate, aliased_mixin_type.type_class()),
|
| - Object::null_abstract_type_arguments(),
|
| + Object::null_type_arguments(),
|
| aliased_mixin_type.token_pos()));
|
| inserted_class.set_mixin(generic_mixin_type);
|
| // The interface will be set in CloneMixinAppTypeParameters.
|
| @@ -1714,8 +1710,8 @@
|
| ASSERT(inserted_class.NumTypeParameters() ==
|
| (num_super_type_params + num_aliased_mixin_type_params));
|
| // The aliased_mixin_type may be raw.
|
| - const AbstractTypeArguments& mixin_class_super_type_args =
|
| - AbstractTypeArguments::Handle(isolate,
|
| + const TypeArguments& mixin_class_super_type_args =
|
| + TypeArguments::Handle(isolate,
|
| AbstractType::Handle(isolate, mixin_class.super_type()).arguments());
|
| TypeArguments& new_mixin_type_args = TypeArguments::Handle(isolate);
|
| if ((num_aliased_mixin_type_params > 0) &&
|
| @@ -2224,8 +2220,7 @@
|
| !IsAliasCycleFree(type_class, visited)) {
|
| return false;
|
| }
|
| - const AbstractTypeArguments& type_args = AbstractTypeArguments::Handle(
|
| - type.arguments());
|
| + const TypeArguments& type_args = TypeArguments::Handle(type.arguments());
|
| if (!type_args.IsNull()) {
|
| AbstractType& type_arg = AbstractType::Handle();
|
| for (intptr_t i = 0; i < type_args.Length(); i++) {
|
| @@ -2261,8 +2256,8 @@
|
| // Check the bounds of this signature type.
|
| const intptr_t num_type_params = cls.NumTypeParameters();
|
| TypeParameter& type_param = TypeParameter::Handle();
|
| - const AbstractTypeArguments& type_params =
|
| - AbstractTypeArguments::Handle(cls.type_parameters());
|
| + const TypeArguments& type_params =
|
| + TypeArguments::Handle(cls.type_parameters());
|
| ASSERT((type_params.IsNull() && (num_type_params == 0)) ||
|
| (type_params.Length() == num_type_params));
|
| for (intptr_t i = 0; i < num_type_params; i++) {
|
| @@ -2329,8 +2324,7 @@
|
| const GrowableObjectArray& collected_args) {
|
| ASSERT(type.HasResolvedTypeClass());
|
| Class& type_class = Class::Handle(type.type_class());
|
| - AbstractTypeArguments& type_args =
|
| - AbstractTypeArguments::Handle(type.arguments());
|
| + TypeArguments& type_args = TypeArguments::Handle(type.arguments());
|
| const intptr_t num_type_parameters = type_class.NumTypeParameters();
|
| const intptr_t num_type_arguments =
|
| type_args.IsNull() ? 0 : type_args.Length();
|
| @@ -2444,7 +2438,7 @@
|
| mixin_app_class.set_super_type(mixin_super_type);
|
| mixin_type_class = mixin_type.type_class();
|
| generic_mixin_type = Type::New(mixin_type_class,
|
| - Object::null_abstract_type_arguments(),
|
| + Object::null_type_arguments(),
|
| mixin_type.token_pos());
|
| mixin_app_class.set_mixin(generic_mixin_type);
|
| mixin_app_class.set_is_synthesized_class();
|
| @@ -2462,7 +2456,7 @@
|
| // the next mixin application class. It is however too early to provide the
|
| // correct super type arguments. We use the raw type for now.
|
| mixin_super_type = Type::New(mixin_app_class,
|
| - Object::null_abstract_type_arguments(),
|
| + Object::null_type_arguments(),
|
| mixin_type.token_pos());
|
| }
|
| AbstractType& type_arg = AbstractType::Handle();
|
| @@ -2755,7 +2749,7 @@
|
| // Make the type raw, since it may not be possible to
|
| // properly finalize its type arguments.
|
| type.set_type_class(Class::Handle(Object::dynamic_class()));
|
| - type.set_arguments(Object::null_abstract_type_arguments());
|
| + type.set_arguments(Object::null_type_arguments());
|
| if (!type.IsFinalized()) {
|
| type.SetIsFinalized();
|
| // Do not canonicalize malformed types, since they may not be resolved.
|
|
|