| Index: runtime/vm/class_finalizer.h
|
| ===================================================================
|
| --- runtime/vm/class_finalizer.h (revision 31085)
|
| +++ runtime/vm/class_finalizer.h (working copy)
|
| @@ -33,19 +33,19 @@
|
| kIgnore, // Type is ignored and replaced by dynamic.
|
| kDoNotResolve, // Type resolution is postponed.
|
| kResolveTypeParameters, // Resolve type parameters only.
|
| - kFinalize, // Type resolution and type finalization are
|
| - // required; replace a malformed type by dynamic.
|
| + kFinalize, // Type resolution and finalization are required.
|
| kCanonicalize, // Same as kFinalize, but with canonicalization.
|
| kCanonicalizeWellFormed // Error-free resolution, finalization, and
|
| - // canonicalization are required; a malformed
|
| - // type is marked as such.
|
| + // canonicalization are required.
|
| };
|
|
|
| // Finalize given type while parsing class cls.
|
| // Also canonicalize type if applicable.
|
| - static RawAbstractType* FinalizeType(const Class& cls,
|
| - const AbstractType& type,
|
| - FinalizationKind finalization);
|
| + static RawAbstractType* FinalizeType(
|
| + const Class& cls,
|
| + const AbstractType& type,
|
| + FinalizationKind finalization,
|
| + GrowableObjectArray* pending_types = NULL);
|
|
|
| // Allocate, finalize, and return a new malformed type as if it was declared
|
| // in class cls at the given token position.
|
| @@ -102,7 +102,8 @@
|
| const Function& factory);
|
|
|
| // Apply the mixin type to the mixin application class.
|
| - static void ApplyMixinType(const Class& mixin_app_class);
|
| + static void ApplyMixinType(const Class& mixin_app_class,
|
| + GrowableObjectArray* pending_types = NULL);
|
|
|
| private:
|
| static bool IsSuperCycleFree(const Class& cls);
|
| @@ -133,12 +134,14 @@
|
| const MixinAppType& mixin_app_type);
|
| static void ResolveSuperTypeAndInterfaces(const Class& cls,
|
| GrowableArray<intptr_t>* visited);
|
| - static void FinalizeTypeParameters(const Class& cls);
|
| + static void FinalizeTypeParameters(const Class& cls,
|
| + GrowableObjectArray* pending_types = NULL);
|
| static void FinalizeTypeArguments(const Class& cls,
|
| const AbstractTypeArguments& arguments,
|
| intptr_t num_uninitialized_arguments,
|
| - FinalizationKind finalization,
|
| - Error* bound_error);
|
| + Error* bound_error,
|
| + GrowableObjectArray* pending_types);
|
| + static void CheckTypeBounds(const Class& cls, const Type& type);
|
| static void CheckTypeArgumentBounds(const Class& cls,
|
| const AbstractTypeArguments& arguments,
|
| Error* bound_error);
|
|
|