Index: pkg/kernel/lib/verifier.dart |
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart |
index 1a1b5ad606f82b05a9988524b00003cb8aecf4b1..41e23002fcf897628fc80a699ff522f3f399ffd3 100644 |
--- a/pkg/kernel/lib/verifier.dart |
+++ b/pkg/kernel/lib/verifier.dart |
@@ -133,7 +133,18 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
} |
+ void checkCanonicalName(CanonicalName name, LinkedNode definition) { |
+ if (name == null) { |
+ throw '$definition has no canonical name'; |
+ } |
+ if (name.definition != definition) { |
+ throw '$definition has name $name, but that is bound to ' |
+ '${name.definition}'; |
+ } |
+ } |
+ |
visitField(Field node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentMember = node; |
var oldParent = enterParent(node); |
classTypeParametersAreInScope = !node.isStatic; |
@@ -145,6 +156,7 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
visitProcedure(Procedure node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentMember = node; |
var oldParent = enterParent(node); |
classTypeParametersAreInScope = !node.isStatic; |
@@ -156,6 +168,7 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
visitConstructor(Constructor node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentMember = node; |
classTypeParametersAreInScope = true; |
// The constructor member needs special treatment due to parameters being |
@@ -173,6 +186,7 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
visitClass(Class node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentClass = node; |
declareTypeParameters(node.typeParameters); |
var oldParent = enterParent(node); |