| Index: pkg/analyzer2dart/lib/src/identifier_semantics.dart
|
| diff --git a/pkg/analyzer2dart/lib/src/identifier_semantics.dart b/pkg/analyzer2dart/lib/src/identifier_semantics.dart
|
| index 70747cf7852d851eae3f38d32812c2606ad32097..d78a9395f29c8f4c3f4dbbb75fd7341886e6ea28 100644
|
| --- a/pkg/analyzer2dart/lib/src/identifier_semantics.dart
|
| +++ b/pkg/analyzer2dart/lib/src/identifier_semantics.dart
|
| @@ -59,10 +59,11 @@ class AccessKind {
|
| const AccessKind._('STATIC_PROPERTY');
|
|
|
| /**
|
| - * The destination of the access is a toplevel class.
|
| + * The destination of the access is a toplevel class, function typedef, mixin
|
| + * application, or the built-in type "dynamic".
|
| */
|
| - static const AccessKind TOPLEVEL_CLASS =
|
| - const AccessKind._('TOPLEVEL_CLASS');
|
| + static const AccessKind TOPLEVEL_TYPE =
|
| + const AccessKind._('TOPLEVEL_TYPE');
|
|
|
| /**
|
| * The destination of the access is a type parameter of the enclosing class.
|
| @@ -167,8 +168,8 @@ class AccessSemantics {
|
| : kind = AccessKind.STATIC_PROPERTY,
|
| target = null;
|
|
|
| - AccessSemantics.toplevelClass(this.identifier, this.element)
|
| - : kind = AccessKind.TOPLEVEL_CLASS,
|
| + AccessSemantics.toplevelType(this.identifier, this.element)
|
| + : kind = AccessKind.TOPLEVEL_TYPE,
|
| classElement = null,
|
| isInvoke = false,
|
| target = null;
|
| @@ -379,8 +380,9 @@ class AccessSemanticsVisitor extends RecursiveAstVisitor<AccessSemantics> {
|
| }
|
| } else if (rhsElement is FunctionElement) {
|
| return new AccessSemantics.staticMethod(rhs, rhsElement, null);
|
| - } else if (rhsElement is ClassElement) {
|
| - return new AccessSemantics.toplevelClass(rhs, rhsElement);
|
| + } else if (rhsElement is ClassElement ||
|
| + rhsElement is FunctionTypeAliasElement) {
|
| + return new AccessSemantics.toplevelType(rhs, rhsElement);
|
| } else {
|
| return new AccessSemantics.dynamic(rhs, null);
|
| }
|
| @@ -480,8 +482,10 @@ class AccessSemanticsVisitor extends RecursiveAstVisitor<AccessSemantics> {
|
| staticElement.enclosingElement);
|
| } else if (staticElement is TypeParameterElement) {
|
| return new AccessSemantics.typeParameter(node, staticElement);
|
| - } else if (staticElement is ClassElement) {
|
| - return new AccessSemantics.toplevelClass(node, staticElement);
|
| + } else if (staticElement is ClassElement ||
|
| + staticElement is FunctionTypeAliasElement ||
|
| + staticElement is DynamicElementImpl) {
|
| + return new AccessSemantics.toplevelType(node, staticElement);
|
| }
|
| return new AccessSemantics.dynamic(node, null);
|
| }
|
|
|