| Index: runtime/vm/parser.cc
|
| ===================================================================
|
| --- runtime/vm/parser.cc (revision 32446)
|
| +++ runtime/vm/parser.cc (working copy)
|
| @@ -2838,7 +2838,7 @@
|
| ASSERT(current_class().raw() == func.Owner());
|
| params.AddReceiver(ReceiverType(current_class()), func.token_pos());
|
| } else if (func.IsFactory()) {
|
| - // The first parameter of a factory is the AbstractTypeArguments vector of
|
| + // The first parameter of a factory is the TypeArguments vector of
|
| // the type of the instance to be allocated.
|
| params.AddFinalParameter(
|
| TokenPos(),
|
| @@ -3106,7 +3106,7 @@
|
| const intptr_t formal_param_pos = TokenPos();
|
| method->params.Clear();
|
| // Static functions do not have a receiver.
|
| - // The first parameter of a factory is the AbstractTypeArguments vector of
|
| + // The first parameter of a factory is the TypeArguments vector of
|
| // the type of the instance to be allocated.
|
| if (!method->has_static || method->IsConstructor()) {
|
| method->params.AddReceiver(ReceiverType(current_class()), formal_param_pos);
|
| @@ -4447,7 +4447,7 @@
|
| }
|
|
|
|
|
| -RawAbstractTypeArguments* Parser::ParseTypeArguments(
|
| +RawTypeArguments* Parser::ParseTypeArguments(
|
| ClassFinalizer::FinalizationKind finalization) {
|
| TRACE_PARSER("ParseTypeArguments");
|
| if (CurrentToken() == Token::kLT) {
|
| @@ -5726,8 +5726,8 @@
|
| // Since the signature type is cached by the signature class, it may have
|
| // been finalized already.
|
| Type& signature_type = Type::Handle(signature_class.SignatureType());
|
| - AbstractTypeArguments& signature_type_arguments =
|
| - AbstractTypeArguments::Handle(signature_type.arguments());
|
| + TypeArguments& signature_type_arguments =
|
| + TypeArguments::Handle(signature_type.arguments());
|
|
|
| if (!signature_type.IsFinalized()) {
|
| signature_type ^= ClassFinalizer::FinalizeType(
|
| @@ -5841,7 +5841,7 @@
|
| // of int, double, String, or bool, then preset the field with the value and
|
| // perform the type check (in checked mode only) at finalization time.
|
| if (type.IsTypeParameter() ||
|
| - (type.arguments() != AbstractTypeArguments::null())) {
|
| + (type.arguments() != TypeArguments::null())) {
|
| // Type parameters are always resolved eagerly by the parser and never
|
| // resolved later by the class finalizer. Therefore, we know here that if
|
| // 'type' is not a type parameter (an unresolved type will not get resolved
|
| @@ -8702,7 +8702,7 @@
|
| }
|
| // A type parameter cannot be parameterized, so make the type
|
| // malformed if type arguments have previously been parsed.
|
| - if (!AbstractTypeArguments::Handle(type->arguments()).IsNull()) {
|
| + if (!TypeArguments::Handle(type->arguments()).IsNull()) {
|
| *type = ClassFinalizer::NewFinalizedMalformedType(
|
| Error::Handle(), // No previous error.
|
| script_,
|
| @@ -8745,8 +8745,8 @@
|
| }
|
| }
|
| // Resolve type arguments, if any.
|
| - const AbstractTypeArguments& arguments =
|
| - AbstractTypeArguments::Handle(type->arguments());
|
| + const TypeArguments& arguments = TypeArguments::Handle(type->arguments());
|
| + TypeArguments::Handle(type->arguments());
|
| if (!arguments.IsNull()) {
|
| const intptr_t num_arguments = arguments.Length();
|
| for (intptr_t i = 0; i < num_arguments; i++) {
|
| @@ -8924,7 +8924,7 @@
|
|
|
| RawObject* Parser::EvaluateConstConstructorCall(
|
| const Class& type_class,
|
| - const AbstractTypeArguments& type_arguments,
|
| + const TypeArguments& type_arguments,
|
| const Function& constructor,
|
| ArgumentListNode* arguments) {
|
| // Factories have one extra argument: the type arguments.
|
| @@ -8940,7 +8940,7 @@
|
| ErrorMsg("type must be constant in const constructor");
|
| }
|
| instance.SetTypeArguments(
|
| - AbstractTypeArguments::Handle(type_arguments.Canonicalize()));
|
| + TypeArguments::Handle(type_arguments.Canonicalize()));
|
| }
|
| arg_values.SetAt(0, instance);
|
| arg_values.SetAt(1, Smi::Handle(Smi::New(Function::kCtorPhaseAll)));
|
| @@ -9334,7 +9334,7 @@
|
| *type_name.ident,
|
| type_name.ident_pos);
|
| }
|
| - AbstractTypeArguments& type_arguments = AbstractTypeArguments::Handle(
|
| + TypeArguments& type_arguments = TypeArguments::Handle(
|
| isolate(), ParseTypeArguments(finalization));
|
| if (finalization == ClassFinalizer::kIgnore) {
|
| return Type::DynamicType();
|
| @@ -9353,11 +9353,12 @@
|
|
|
| void Parser::CheckConstructorCallTypeArguments(
|
| intptr_t pos, Function& constructor,
|
| - const AbstractTypeArguments& type_arguments) {
|
| + const TypeArguments& type_arguments) {
|
| if (!type_arguments.IsNull()) {
|
| const Class& constructor_class = Class::Handle(constructor.Owner());
|
| ASSERT(!constructor_class.IsNull());
|
| ASSERT(constructor_class.is_finalized());
|
| + ASSERT(type_arguments.IsCanonical());
|
| // Do not report the expected vs. actual number of type arguments, because
|
| // the type argument vector is flattened and raw types are allowed.
|
| if (type_arguments.Length() != constructor_class.NumTypeArguments()) {
|
| @@ -9373,7 +9374,7 @@
|
| // as one token of type Token::kINDEX.
|
| AstNode* Parser::ParseListLiteral(intptr_t type_pos,
|
| bool is_const,
|
| - const AbstractTypeArguments& type_arguments) {
|
| + const TypeArguments& type_arguments) {
|
| TRACE_PARSER("ParseListLiteral");
|
| ASSERT(type_pos >= 0);
|
| ASSERT(CurrentToken() == Token::kLBRACK || CurrentToken() == Token::kINDEX);
|
| @@ -9382,8 +9383,8 @@
|
| ConsumeToken();
|
|
|
| AbstractType& element_type = Type::ZoneHandle(Type::DynamicType());
|
| - AbstractTypeArguments& list_type_arguments =
|
| - AbstractTypeArguments::ZoneHandle(type_arguments.raw());
|
| + TypeArguments& list_type_arguments =
|
| + TypeArguments::ZoneHandle(type_arguments.raw());
|
| // If no type argument vector is provided, leave it as null, which is
|
| // equivalent to using dynamic as the type argument for the element type.
|
| if (!list_type_arguments.IsNull()) {
|
| @@ -9394,7 +9395,7 @@
|
| ASSERT(!element_type.IsMalformed()); // Would be mapped to dynamic.
|
| ASSERT(!element_type.IsMalbounded()); // No declared bound in List.
|
| if (element_type.IsDynamicType()) {
|
| - list_type_arguments = AbstractTypeArguments::null();
|
| + list_type_arguments = TypeArguments::null();
|
| } else if (is_const && !element_type.IsInstantiated()) {
|
| ErrorMsg(type_pos,
|
| "the type argument of a constant list literal cannot include "
|
| @@ -9407,7 +9408,7 @@
|
| "the element type");
|
| }
|
| // Ignore type arguments.
|
| - list_type_arguments = AbstractTypeArguments::null();
|
| + list_type_arguments = TypeArguments::null();
|
| }
|
| }
|
| ASSERT(list_type_arguments.IsNull() || (list_type_arguments.Length() == 1));
|
| @@ -9449,7 +9450,7 @@
|
| Array& const_list =
|
| Array::ZoneHandle(Array::New(element_list.length(), Heap::kOld));
|
| const_list.SetTypeArguments(
|
| - AbstractTypeArguments::Handle(list_type_arguments.Canonicalize()));
|
| + TypeArguments::Handle(list_type_arguments.Canonicalize()));
|
| Error& malformed_error = Error::Handle();
|
| for (int i = 0; i < element_list.length(); i++) {
|
| AstNode* elem = element_list[i];
|
| @@ -9492,8 +9493,8 @@
|
| // Make sure that the instantiator is captured.
|
| CaptureInstantiator();
|
| }
|
| - AbstractTypeArguments& factory_type_args =
|
| - AbstractTypeArguments::ZoneHandle(list_type_arguments.raw());
|
| + TypeArguments& factory_type_args =
|
| + TypeArguments::ZoneHandle(list_type_arguments.raw());
|
| // If the factory class extends other parameterized classes, adjust the
|
| // type argument vector.
|
| if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 1)) {
|
| @@ -9527,7 +9528,7 @@
|
|
|
| ConstructorCallNode* Parser::CreateConstructorCallNode(
|
| intptr_t token_pos,
|
| - const AbstractTypeArguments& type_arguments,
|
| + const TypeArguments& type_arguments,
|
| const Function& constructor,
|
| ArgumentListNode* arguments) {
|
| if (!type_arguments.IsNull() && !type_arguments.IsInstantiated()) {
|
| @@ -9567,7 +9568,7 @@
|
|
|
| AstNode* Parser::ParseMapLiteral(intptr_t type_pos,
|
| bool is_const,
|
| - const AbstractTypeArguments& type_arguments) {
|
| + const TypeArguments& type_arguments) {
|
| TRACE_PARSER("ParseMapLiteral");
|
| ASSERT(type_pos >= 0);
|
| ASSERT(CurrentToken() == Token::kLBRACE);
|
| @@ -9576,8 +9577,8 @@
|
|
|
| AbstractType& key_type = Type::ZoneHandle(Type::DynamicType());
|
| AbstractType& value_type = Type::ZoneHandle(Type::DynamicType());
|
| - AbstractTypeArguments& map_type_arguments =
|
| - AbstractTypeArguments::ZoneHandle(type_arguments.raw());
|
| + TypeArguments& map_type_arguments =
|
| + TypeArguments::ZoneHandle(type_arguments.raw());
|
| // If no type argument vector is provided, leave it as null, which is
|
| // equivalent to using dynamic as the type argument for the both key and value
|
| // types.
|
| @@ -9592,7 +9593,7 @@
|
| // No declared bounds in Map.
|
| ASSERT(!key_type.IsMalbounded() && !value_type.IsMalbounded());
|
| if (key_type.IsDynamicType() && value_type.IsDynamicType()) {
|
| - map_type_arguments = AbstractTypeArguments::null();
|
| + map_type_arguments = TypeArguments::null();
|
| } else if (is_const && !type_arguments.IsInstantiated()) {
|
| ErrorMsg(type_pos,
|
| "the type arguments of a constant map literal cannot include "
|
| @@ -9605,7 +9606,7 @@
|
| "the key type and the value type");
|
| }
|
| // Ignore type arguments.
|
| - map_type_arguments = AbstractTypeArguments::null();
|
| + map_type_arguments = TypeArguments::null();
|
| }
|
| }
|
| ASSERT(map_type_arguments.IsNull() || (map_type_arguments.Length() == 2));
|
| @@ -9688,7 +9689,7 @@
|
| (!arg->AsLiteralNode()->literal().IsNull() &&
|
| !arg->AsLiteralNode()->literal().IsInstanceOf(
|
| arg_type,
|
| - Object::null_abstract_type_arguments(),
|
| + Object::null_type_arguments(),
|
| &malformed_error))) {
|
| // If the failure is due to a malformed type error, display it.
|
| if (!malformed_error.IsNull()) {
|
| @@ -9750,8 +9751,8 @@
|
| // Make sure that the instantiator is captured.
|
| CaptureInstantiator();
|
| }
|
| - AbstractTypeArguments& factory_type_args =
|
| - AbstractTypeArguments::ZoneHandle(map_type_arguments.raw());
|
| + TypeArguments& factory_type_args =
|
| + TypeArguments::ZoneHandle(map_type_arguments.raw());
|
| // If the factory class extends other parameterized classes, adjust the
|
| // type argument vector.
|
| if (!factory_type_args.IsNull() && (factory_class.NumTypeArguments() > 2)) {
|
| @@ -9790,7 +9791,7 @@
|
| ConsumeToken();
|
| }
|
| const intptr_t type_pos = TokenPos();
|
| - AbstractTypeArguments& type_arguments = AbstractTypeArguments::Handle(
|
| + TypeArguments& type_arguments = TypeArguments::Handle(
|
| ParseTypeArguments(ClassFinalizer::kCanonicalize));
|
| // Malformed type arguments are mapped to dynamic, so we will not encounter
|
| // them here.
|
| @@ -9923,8 +9924,8 @@
|
| // Resolve the type and optional identifier to a constructor or factory.
|
| Class& type_class = Class::Handle(type.type_class());
|
| String& type_class_name = String::Handle(type_class.Name());
|
| - AbstractTypeArguments& type_arguments =
|
| - AbstractTypeArguments::ZoneHandle(type.arguments());
|
| + TypeArguments& type_arguments =
|
| + TypeArguments::ZoneHandle(type.arguments());
|
|
|
| // A constructor has an implicit 'this' parameter (instance to construct)
|
| // and a factory has an implicit 'this' parameter (type_arguments).
|
|
|