Index: compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
diff --git a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
index d9a28b777df87740b7dc81a40afb74aaca5b658d..f99cd9ecaceb8ba689a034b6115fb091aae61431 100644 |
--- a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
+++ b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
@@ -180,8 +180,7 @@ public class MemberBuilder { |
return Elements.constructorFromMethodNode( |
method, node.getPropertyName(), (ClassElement) currentHolder, (ClassElement) element); |
} else { |
- topLevelContext.internalError(node, |
- "Library prefixes not implemented yet"); |
+ // Nothing else is valid. Already warned in getMethodKind(). |
return getTypeProvider().getDynamicType().getElement(); |
} |
} |
@@ -387,12 +386,17 @@ public class MemberBuilder { |
} |
} else { |
DartPropertyAccess property = (DartPropertyAccess) name; |
- DartIdentifier qualifier = (DartIdentifier) property.getQualifier(); |
- if (qualifier.getTargetName().equals(currentHolder.getName())) { |
- return ElementKind.CONSTRUCTOR; |
- } else { |
+ if (property.getQualifier() instanceof DartIdentifier) { |
+ DartIdentifier qualifier = (DartIdentifier) property.getQualifier(); |
+ if (qualifier.getTargetName().equals(currentHolder.getName())) { |
+ return ElementKind.CONSTRUCTOR; |
+ } |
resolutionError(method.getName(), |
ResolverErrorCode.CANNOT_DECLARE_NON_FACTORY_CONSTRUCTOR); |
+ } else { |
+ // Multiple qualifiers (Foo.bar.baz) |
+ resolutionError(method.getName(), |
+ ResolverErrorCode.TOO_MANY_QUALIFIERS_FOR_METHOD); |
} |
} |