Chromium Code Reviews| 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); |