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 8496b0493e6dee0053ffcdde415e45b7972b2440..7c9b55be3a3a163040f398f3933a786b0d372ebd 100644 |
--- a/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
+++ b/compiler/java/com/google/dart/compiler/resolver/MemberBuilder.java |
@@ -8,6 +8,8 @@ import com.google.common.annotations.VisibleForTesting; |
import com.google.common.base.Objects; |
import com.google.dart.compiler.DartCompilerContext; |
import com.google.dart.compiler.ErrorCode; |
+import com.google.dart.compiler.PackageLibraryManager; |
+import com.google.dart.compiler.Source; |
import com.google.dart.compiler.ast.ASTVisitor; |
import com.google.dart.compiler.ast.DartBlock; |
import com.google.dart.compiler.ast.DartClass; |
@@ -99,8 +101,9 @@ public class MemberBuilder { |
public Element visitClass(DartClass node) { |
assert !ElementKind.of(currentHolder).equals(ElementKind.CLASS) : "nested class?"; |
beginClassContext(node); |
+ ClassElement classElement = node.getElement(); |
EnclosingElement previousEnclosingElement = enclosingElement; |
- enclosingElement = node.getElement(); |
+ enclosingElement = classElement; |
// visit fields, to make their Elements ready for constructor parameters |
for (DartNode member : node.getMembers()) { |
if (member instanceof DartFieldDefinition) { |
@@ -113,6 +116,15 @@ public class MemberBuilder { |
member.accept(this); |
} |
} |
+ // check that constructor names don't conflict with member names |
Brian Wilkerson
2012/08/27 18:28:42
nit: "don't" -> "doesn't"
|
+ for (ConstructorElement constructor : classElement.getConstructors()) { |
+ String name = constructor.getName(); |
+ Element member = classElement.lookupLocalElement(name); |
+ if (member != null) { |
+ resolutionError(constructor.getNameLocation(), |
+ ResolverErrorCode.CONSTRUCTOR_WITH_NAME_OF_MEMBER); |
+ } |
+ } |
// done with this class |
enclosingElement = previousEnclosingElement; |
endClassContext(); |
@@ -658,8 +670,8 @@ public class MemberBuilder { |
resolutionError(node.getSourceInfo(), errorCode, arguments); |
} |
- void resolutionError(SourceInfo node, ErrorCode errorCode, Object... arguments) { |
- topLevelContext.onError(node, errorCode, arguments); |
+ void resolutionError(SourceInfo sourceInfo, ErrorCode errorCode, Object... arguments) { |
+ topLevelContext.onError(sourceInfo, errorCode, arguments); |
} |
/** |