| Index: pkg/compiler/lib/src/resolution/type_resolver.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/type_resolver.dart b/pkg/compiler/lib/src/resolution/type_resolver.dart
|
| index 34e5cab4dc2d1a45624868171b19b9f6f5bf6edb..9cae7a8da80dd468e66c46cc16eaf8ed081c1994 100644
|
| --- a/pkg/compiler/lib/src/resolution/type_resolver.dart
|
| +++ b/pkg/compiler/lib/src/resolution/type_resolver.dart
|
| @@ -76,8 +76,8 @@ class TypeResolver {
|
| ResolutionDartType resolveTypeAnnotation(
|
| MappingVisitor visitor, TypeAnnotation node,
|
| {bool malformedIsError: false, bool deferredIsMalformed: true}) {
|
| - return _resolveTypeAnnotation(
|
| - visitor, node, const [], malformedIsError: malformedIsError,
|
| + return _resolveTypeAnnotation(visitor, node, const [],
|
| + malformedIsError: malformedIsError,
|
| deferredIsMalformed: deferredIsMalformed);
|
| }
|
|
|
| @@ -89,15 +89,12 @@ class TypeResolver {
|
| // `typedef F = Function(List<A> Function<A>(A x))`.
|
| //
|
| // They are resolved to `dynamic` until dart2js supports generic methods.
|
| - ResolutionDartType _resolveTypeAnnotation(
|
| - MappingVisitor visitor, TypeAnnotation node,
|
| - List<List<String>> visibleTypeParameterNames,
|
| + ResolutionDartType _resolveTypeAnnotation(MappingVisitor visitor,
|
| + TypeAnnotation node, List<List<String>> visibleTypeParameterNames,
|
| {bool malformedIsError: false, bool deferredIsMalformed: true}) {
|
| -
|
| if (node.asNominalTypeAnnotation() != null) {
|
| return resolveNominalTypeAnnotation(
|
| - visitor, node,
|
| - visibleTypeParameterNames,
|
| + visitor, node, visibleTypeParameterNames,
|
| malformedIsError: malformedIsError,
|
| deferredIsMalformed: deferredIsMalformed);
|
| }
|
| @@ -115,17 +112,15 @@ class TypeResolver {
|
| ///
|
| /// However, it does work with nested generalized function types:
|
| /// `foo(int Function(String) x)`.
|
| - _FormalsTypeResolutionResult _resolveFormalTypes(
|
| - MappingVisitor visitor, NodeList formals,
|
| - List<List<String>> visibleTypeParameterNames) {
|
| -
|
| + _FormalsTypeResolutionResult _resolveFormalTypes(MappingVisitor visitor,
|
| + NodeList formals, List<List<String>> visibleTypeParameterNames) {
|
| ResolutionDartType resolvePositionalType(VariableDefinitions node) {
|
| return _resolveTypeAnnotation(
|
| visitor, node.type, visibleTypeParameterNames);
|
| }
|
|
|
| - void fillNamedTypes(NodeList namedFormals,
|
| - List<String> names, List<ResolutionDartType> types) {
|
| + void fillNamedTypes(NodeList namedFormals, List<String> names,
|
| + List<ResolutionDartType> types) {
|
| List<Node> nodes = namedFormals.nodes.toList(growable: false);
|
|
|
| // Sort the named arguments first.
|
| @@ -134,8 +129,10 @@ class TypeResolver {
|
| VariableDefinitions b = node2;
|
| assert(a.definitions.nodes.tail.isEmpty);
|
| assert(b.definitions.nodes.tail.isEmpty);
|
| - return a.definitions.nodes.head.asIdentifier().source.compareTo(
|
| - b.definitions.nodes.head.asIdentifier().source);
|
| + return a.definitions.nodes.head
|
| + .asIdentifier()
|
| + .source
|
| + .compareTo(b.definitions.nodes.head.asIdentifier().source);
|
| });
|
|
|
| for (VariableDefinitions node in nodes) {
|
| @@ -159,7 +156,6 @@ class TypeResolver {
|
| requiredTypes.add(resolvePositionalType(link.head));
|
| }
|
|
|
| -
|
| List<ResolutionDartType> orderedTypes = const <ResolutionDartType>[];
|
| List<String> names = const <String>[];
|
| List<ResolutionDartType> namedTypes = const <ResolutionDartType>[];
|
| @@ -179,8 +175,8 @@ class TypeResolver {
|
| } else {
|
| orderedTypes = <ResolutionDartType>[];
|
| for (Link<Node> link = optionalFormals.nodes;
|
| - !link.isEmpty;
|
| - link = link.tail) {
|
| + !link.isEmpty;
|
| + link = link.tail) {
|
| orderedTypes.add(resolvePositionalType(link.head));
|
| }
|
| }
|
| @@ -190,24 +186,22 @@ class TypeResolver {
|
| }
|
|
|
| ResolutionFunctionType _resolveFunctionTypeAnnotation(MappingVisitor visitor,
|
| - FunctionTypeAnnotation node,
|
| - List<List<String>> visibleTypeParameterNames,
|
| + FunctionTypeAnnotation node, List<List<String>> visibleTypeParameterNames,
|
| {bool malformedIsError: false, bool deferredIsMalformed: true}) {
|
| -
|
| assert(visibleTypeParameterNames != null);
|
|
|
| if (node.typeParameters != null) {
|
| List<String> newTypeNames = node.typeParameters.map((TypeVariable node) {
|
| return node.name.asIdentifier().source;
|
| }).toList();
|
| - visibleTypeParameterNames =
|
| - visibleTypeParameterNames.toList()..add(newTypeNames);
|
| + visibleTypeParameterNames = visibleTypeParameterNames.toList()
|
| + ..add(newTypeNames);
|
| }
|
|
|
| ResolutionDartType returnType = node.returnType == null
|
| ? const ResolutionDynamicType()
|
| - : _resolveTypeAnnotation(visitor, node.returnType,
|
| - visibleTypeParameterNames);
|
| + : _resolveTypeAnnotation(
|
| + visitor, node.returnType, visibleTypeParameterNames);
|
| var formalTypes =
|
| _resolveFormalTypes(visitor, node.formals, visibleTypeParameterNames);
|
| var result = new ResolutionFunctionType.generalized(
|
| @@ -221,8 +215,7 @@ class TypeResolver {
|
| }
|
|
|
| ResolutionDartType resolveNominalTypeAnnotation(MappingVisitor visitor,
|
| - NominalTypeAnnotation node,
|
| - List<List<String>> visibleTypeParameterNames,
|
| + NominalTypeAnnotation node, List<List<String>> visibleTypeParameterNames,
|
| {bool malformedIsError: false, bool deferredIsMalformed: true}) {
|
| ResolutionRegistry registry = visitor.registry;
|
|
|
| @@ -231,9 +224,8 @@ class TypeResolver {
|
|
|
| ResolutionDartType checkNoTypeArguments(ResolutionDartType type) {
|
| List<ResolutionDartType> arguments = new List<ResolutionDartType>();
|
| - bool hasTypeArgumentMismatch = resolveTypeArguments(
|
| - visitor, node, const <ResolutionDartType>[], arguments,
|
| - visibleTypeParameterNames);
|
| + bool hasTypeArgumentMismatch = resolveTypeArguments(visitor, node,
|
| + const <ResolutionDartType>[], arguments, visibleTypeParameterNames);
|
| if (hasTypeArgumentMismatch) {
|
| return new MalformedType(
|
| new ErroneousElementX(MessageKind.TYPE_ARGUMENT_COUNT_MISMATCH,
|
| @@ -345,9 +337,8 @@ class TypeResolver {
|
| resolver.ensureClassWillBeResolvedInternal(cls);
|
| cls.computeType(resolution);
|
| List<ResolutionDartType> arguments = <ResolutionDartType>[];
|
| - bool hasTypeArgumentMismatch = resolveTypeArguments(
|
| - visitor, node, cls.typeVariables, arguments,
|
| - visibleTypeParameterNames);
|
| + bool hasTypeArgumentMismatch = resolveTypeArguments(visitor, node,
|
| + cls.typeVariables, arguments, visibleTypeParameterNames);
|
| if (hasTypeArgumentMismatch) {
|
| type = new BadInterfaceType(
|
| cls.declaration,
|
| @@ -369,9 +360,8 @@ class TypeResolver {
|
| typdef.ensureResolved(resolution);
|
| typdef.computeType(resolution);
|
| List<ResolutionDartType> arguments = <ResolutionDartType>[];
|
| - bool hasTypeArgumentMismatch = resolveTypeArguments(
|
| - visitor, node, typdef.typeVariables, arguments,
|
| - visibleTypeParameterNames);
|
| + bool hasTypeArgumentMismatch = resolveTypeArguments(visitor, node,
|
| + typdef.typeVariables, arguments, visibleTypeParameterNames);
|
| if (hasTypeArgumentMismatch) {
|
| type = new BadTypedefType(
|
| typdef,
|
|
|