Index: pkg/kernel/lib/verifier.dart |
diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart |
index 1a1b5ad606f82b05a9988524b00003cb8aecf4b1..8480a899afe07d18536c84007172142baa5146b8 100644 |
--- a/pkg/kernel/lib/verifier.dart |
+++ b/pkg/kernel/lib/verifier.dart |
@@ -133,7 +133,17 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
} |
+ void checkCanonicalName(CanonicalName name, LinkedNode definition) { |
kustermann
2017/02/01 13:00:54
You could also verify that name._children is minim
asgerf
2017/02/02 12:30:27
Follow-up on the previous comment:
It is hard to
|
+ 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}'; |
kustermann
2017/02/01 13:00:54
maybe run dartfmt
asgerf
2017/02/02 12:30:27
Done.
|
+ } |
+ } |
+ |
visitField(Field node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentMember = node; |
var oldParent = enterParent(node); |
classTypeParametersAreInScope = !node.isStatic; |
@@ -145,6 +155,7 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
visitProcedure(Procedure node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentMember = node; |
var oldParent = enterParent(node); |
classTypeParametersAreInScope = !node.isStatic; |
@@ -156,6 +167,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 +185,7 @@ class VerifyingVisitor extends RecursiveVisitor { |
} |
visitClass(Class node) { |
+ checkCanonicalName(node.canonicalName, node); |
currentClass = node; |
declareTypeParameters(node.typeParameters); |
var oldParent = enterParent(node); |