Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/verifier.dart

Issue 2999033002: Mark top-level error field as static. (Closed)
Patch Set: Remove unused import. Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library fasta.verifier; 5 library fasta.verifier;
6 6
7 import 'package:kernel/ast.dart' 7 import 'package:kernel/ast.dart'
8 show 8 show
9 InvalidExpression, 9 InvalidExpression,
10 InvalidStatement, 10 InvalidStatement,
(...skipping 28 matching lines...) Expand all
39 class FastaVerifyingVisitor extends VerifyingVisitor 39 class FastaVerifyingVisitor extends VerifyingVisitor
40 implements TypeSchemaVisitor { 40 implements TypeSchemaVisitor {
41 final List<LocatedMessage> errors = <LocatedMessage>[]; 41 final List<LocatedMessage> errors = <LocatedMessage>[];
42 42
43 String fileUri; 43 String fileUri;
44 44
45 FastaVerifyingVisitor(bool isOutline) { 45 FastaVerifyingVisitor(bool isOutline) {
46 this.isOutline = isOutline; 46 this.isOutline = isOutline;
47 } 47 }
48 48
49 String checkLocation(TreeNode node, String name, String fileUri) {
50 if (name == null || name.contains("#")) {
51 // TODO(ahe): Investigate if these checks can be enabled:
52 // if (node.fileUri != null && node is! Library) {
53 // problem(node, "A synthetic node shouldn't have a fileUri",
54 // context: node);
55 // }
56 // if (node.fileOffset != -1) {
57 // problem(node, "A synthetic node shouldn't have a fileOffset",
58 // context: node);
59 // }
60 return fileUri;
61 } else {
62 if (fileUri == null) {
63 problem(node, "'$name' has no fileUri", context: node);
64 return fileUri;
65 }
66 if (node.fileOffset == -1 && node is! Library) {
67 problem(node, "'$name' has no fileOffset", context: node);
68 }
69 return fileUri;
70 }
71 }
72
49 @override 73 @override
50 problem(TreeNode node, String details, {TreeNode context}) { 74 problem(TreeNode node, String details, {TreeNode context}) {
51 node ??= (context ?? this.context); 75 node ??= (context ?? this.context);
52 int offset = node?.fileOffset ?? -1; 76 int offset = node?.fileOffset ?? -1;
53 LocatedMessage message = templateInternalVerificationError 77 LocatedMessage message = templateInternalVerificationError
54 .withArguments(details) 78 .withArguments(details)
55 .withLocation(Uri.parse(fileUri), offset); 79 .withLocation(fileUri == null ? null : Uri.parse(fileUri), offset);
56 CompilerContext.current.report(message, Severity.error); 80 CompilerContext.current.report(message, Severity.error);
57 errors.add(message); 81 errors.add(message);
58 } 82 }
59 83
60 @override 84 @override
61 visitExpressionStatement(ExpressionStatement node) { 85 visitExpressionStatement(ExpressionStatement node) {
62 // Bypass verification of the [StaticGet] in [RedirectingFactoryBody] as 86 // Bypass verification of the [StaticGet] in [RedirectingFactoryBody] as
63 // this is a static get without a getter. 87 // this is a static get without a getter.
64 if (node is! RedirectingFactoryBody) { 88 if (node is! RedirectingFactoryBody) {
65 super.visitExpressionStatement(node); 89 super.visitExpressionStatement(node);
66 } 90 }
67 } 91 }
68 92
69 @override 93 @override
70 visitLibrary(Library node) { 94 visitLibrary(Library node) {
71 fileUri = node.fileUri; 95 fileUri = checkLocation(node, node.name, node.fileUri);
72 super.visitLibrary(node); 96 super.visitLibrary(node);
73 } 97 }
74 98
75 @override 99 @override
76 visitClass(Class node) { 100 visitClass(Class node) {
77 fileUri = node.fileUri; 101 fileUri = checkLocation(node, node.name, node.fileUri);
78 super.visitClass(node); 102 super.visitClass(node);
79 } 103 }
80 104
81 @override 105 @override
82 visitField(Field node) { 106 visitField(Field node) {
83 fileUri = node.fileUri; 107 fileUri = checkLocation(node, node.name.name, node.fileUri);
84 super.visitField(node); 108 super.visitField(node);
85 } 109 }
86 110
87 @override 111 @override
88 visitProcedure(Procedure node) { 112 visitProcedure(Procedure node) {
89 fileUri = node.fileUri; 113 fileUri = checkLocation(node, node.name.name, node.fileUri);
90 super.visitProcedure(node); 114 super.visitProcedure(node);
91 } 115 }
92 116
93 @override 117 @override
94 visitInvalidExpression(InvalidExpression node) { 118 visitInvalidExpression(InvalidExpression node) {
95 problem(node, "Invalid expression."); 119 problem(node, "Invalid expression.");
96 } 120 }
97 121
98 @override 122 @override
99 visitInvalidStatement(InvalidStatement node) { 123 visitInvalidStatement(InvalidStatement node) {
100 problem(node, "Invalid statement."); 124 problem(node, "Invalid statement.");
101 } 125 }
102 126
103 @override 127 @override
104 visitInvalidInitializer(InvalidInitializer node) { 128 visitInvalidInitializer(InvalidInitializer node) {
105 problem(node, "Invalid initializer."); 129 problem(node, "Invalid initializer.");
106 } 130 }
107 131
108 @override 132 @override
109 visitUnknownType(UnknownType node) { 133 visitUnknownType(UnknownType node) {
110 // Note: we can't pass [node] to [problem] because it's not a [TreeNode]. 134 // Note: we can't pass [node] to [problem] because it's not a [TreeNode].
111 problem(null, "Unexpected appearance of the unknown type."); 135 problem(null, "Unexpected appearance of the unknown type.");
112 } 136 }
113 } 137 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/kernel_target.dart ('k') | pkg/front_end/testcases/cycles.dart.direct.expect » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698