Chromium Code Reviews| Index: pkg/front_end/lib/src/fasta/kernel/verifier.dart |
| diff --git a/pkg/front_end/lib/src/fasta/kernel/verifier.dart b/pkg/front_end/lib/src/fasta/kernel/verifier.dart |
| index 17c984c390ccd6891e7e25d6890e2f2192dc9341..af08d4675d213794971aa7c4fe5ead311e0ba806 100644 |
| --- a/pkg/front_end/lib/src/fasta/kernel/verifier.dart |
| +++ b/pkg/front_end/lib/src/fasta/kernel/verifier.dart |
| @@ -46,13 +46,37 @@ class FastaVerifyingVisitor extends VerifyingVisitor |
| this.isOutline = isOutline; |
| } |
| + String checkLocation(TreeNode node, String name) { |
|
sjindel
2017/08/16 10:27:01
How are these changes related?
ahe
2017/08/16 11:59:15
Without the change on line 79, Uri.parse would thr
ahe
2017/08/16 12:01:47
It would throw a NSM error *before* I modified ker
|
| + if (name == null || name.contains("#")) { |
| + // TODO(ahe): Investigate if these checks can be enabled: |
| + // if (node.fileUri != null && node is! Library) { |
| + // problem(node, "A synthetic node shouldn't have a fileUri", |
| + // context: node); |
| + // } |
| + // if (node.fileOffset != -1) { |
| + // problem(node, "A synthetic node shouldn't have a fileOffset", |
| + // context: node); |
| + // } |
| + return fileUri; |
| + } else { |
| + if (node.fileUri == null) { |
| + problem(node, "'$name' has no fileUri", context: node); |
| + return fileUri; |
| + } |
| + if (node.fileOffset == -1 && node is! Library) { |
| + problem(node, "'$name' has no fileOffset", context: node); |
| + } |
| + return node.fileUri; |
| + } |
| + } |
| + |
| @override |
| problem(TreeNode node, String details, {TreeNode context}) { |
| node ??= (context ?? this.context); |
| int offset = node?.fileOffset ?? -1; |
| LocatedMessage message = templateInternalVerificationError |
| .withArguments(details) |
| - .withLocation(Uri.parse(fileUri), offset); |
| + .withLocation(fileUri == null ? null : Uri.parse(fileUri), offset); |
| CompilerContext.current.report(message, Severity.error); |
| errors.add(message); |
| } |
| @@ -68,25 +92,25 @@ class FastaVerifyingVisitor extends VerifyingVisitor |
| @override |
| visitLibrary(Library node) { |
| - fileUri = node.fileUri; |
| + fileUri = checkLocation(node, node.name); |
| super.visitLibrary(node); |
| } |
| @override |
| visitClass(Class node) { |
| - fileUri = node.fileUri; |
| + fileUri = checkLocation(node, node.name); |
| super.visitClass(node); |
| } |
| @override |
| visitField(Field node) { |
| - fileUri = node.fileUri; |
| + fileUri = checkLocation(node, node.name.name); |
| super.visitField(node); |
| } |
| @override |
| visitProcedure(Procedure node) { |
| - fileUri = node.fileUri; |
| + fileUri = checkLocation(node, node.name.name); |
| super.visitProcedure(node); |
| } |