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

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

Issue 2970273004: Deprecate all diagnostics methods that use strings. (Closed)
Patch Set: Merged with 4df146dd9a465d63344330bf3e45524b927c92ec Created 3 years, 5 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.scope; 5 library fasta.scope;
6 6
7 import 'builder/builder.dart' show Builder, TypeVariableBuilder; 7 import 'builder/builder.dart' show Builder, TypeVariableBuilder;
8 8
9 import 'errors.dart' show InputError, internalError; 9 import 'deprecated_problems.dart'
10 show deprecated_InputError, deprecated_internalProblem;
10 11
11 class MutableScope { 12 class MutableScope {
12 /// Names declared in this scope. 13 /// Names declared in this scope.
13 Map<String, Builder> local; 14 Map<String, Builder> local;
14 15
15 /// Setters declared in this scope. 16 /// Setters declared in this scope.
16 Map<String, Builder> setters; 17 Map<String, Builder> setters;
17 18
18 /// The scope that this scope is nested within, or `null` if this is the top 19 /// The scope that this scope is nested within, or `null` if this is the top
19 /// level scope. 20 /// level scope.
(...skipping 22 matching lines...) Expand all
42 isModifiable: isModifiable); 43 isModifiable: isModifiable);
43 44
44 Scope.immutable() 45 Scope.immutable()
45 : this(const <String, Builder>{}, const <String, Builder>{}, null, 46 : this(const <String, Builder>{}, const <String, Builder>{}, null,
46 isModifiable: false); 47 isModifiable: false);
47 48
48 Scope.nested(Scope parent, {bool isModifiable: true}) 49 Scope.nested(Scope parent, {bool isModifiable: true})
49 : this(<String, Builder>{}, null, parent, isModifiable: isModifiable); 50 : this(<String, Builder>{}, null, parent, isModifiable: isModifiable);
50 51
51 /// Don't use this. Use [becomePartOf] instead. 52 /// Don't use this. Use [becomePartOf] instead.
52 void set local(_) => internalError("Unsupported operation."); 53 void set local(_) => deprecated_internalProblem("Unsupported operation.");
53 54
54 /// Don't use this. Use [becomePartOf] instead. 55 /// Don't use this. Use [becomePartOf] instead.
55 void set setters(_) => internalError("Unsupported operation."); 56 void set setters(_) => deprecated_internalProblem("Unsupported operation.");
56 57
57 /// Don't use this. Use [becomePartOf] instead. 58 /// Don't use this. Use [becomePartOf] instead.
58 void set parent(_) => internalError("Unsupported operation."); 59 void set parent(_) => deprecated_internalProblem("Unsupported operation.");
59 60
60 /// This scope becomes equivalent to [scope]. This is used for parts to 61 /// This scope becomes equivalent to [scope]. This is used for parts to
61 /// become part of their library's scope. 62 /// become part of their library's scope.
62 void becomePartOf(Scope scope) { 63 void becomePartOf(Scope scope) {
63 assert(parent.parent == null); 64 assert(parent.parent == null);
64 assert(scope.parent.parent == null); 65 assert(scope.parent.parent == null);
65 super.local = scope.local; 66 super.local = scope.local;
66 super.setters = scope.setters; 67 super.setters = scope.setters;
67 super.parent = scope.parent; 68 super.parent = scope.parent;
68 } 69 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 } 113 }
113 114
114 Builder lookup(String name, int charOffset, Uri fileUri, 115 Builder lookup(String name, int charOffset, Uri fileUri,
115 {bool isInstanceScope: true}) { 116 {bool isInstanceScope: true}) {
116 recordUse(name, charOffset, fileUri); 117 recordUse(name, charOffset, fileUri);
117 Builder builder = 118 Builder builder =
118 lookupIn(name, charOffset, fileUri, local, isInstanceScope); 119 lookupIn(name, charOffset, fileUri, local, isInstanceScope);
119 if (builder != null) return builder; 120 if (builder != null) return builder;
120 builder = lookupIn(name, charOffset, fileUri, setters, isInstanceScope); 121 builder = lookupIn(name, charOffset, fileUri, setters, isInstanceScope);
121 if (builder != null && !builder.hasProblem) { 122 if (builder != null && !builder.hasProblem) {
122 return new AccessErrorBuilder(name, builder, charOffset, fileUri); 123 return new deprecated_AccessErrorBuilder(
124 name, builder, charOffset, fileUri);
123 } 125 }
124 if (!isInstanceScope) { 126 if (!isInstanceScope) {
125 // For static lookup, do not seach the parent scope. 127 // For static lookup, do not seach the parent scope.
126 return builder; 128 return builder;
127 } 129 }
128 return builder ?? parent?.lookup(name, charOffset, fileUri); 130 return builder ?? parent?.lookup(name, charOffset, fileUri);
129 } 131 }
130 132
131 Builder lookupSetter(String name, int charOffset, Uri fileUri, 133 Builder lookupSetter(String name, int charOffset, Uri fileUri,
132 {bool isInstanceScope: true}) { 134 {bool isInstanceScope: true}) {
133 recordUse(name, charOffset, fileUri); 135 recordUse(name, charOffset, fileUri);
134 Builder builder = 136 Builder builder =
135 lookupIn(name, charOffset, fileUri, setters, isInstanceScope); 137 lookupIn(name, charOffset, fileUri, setters, isInstanceScope);
136 if (builder != null) return builder; 138 if (builder != null) return builder;
137 builder = lookupIn(name, charOffset, fileUri, local, isInstanceScope); 139 builder = lookupIn(name, charOffset, fileUri, local, isInstanceScope);
138 if (builder != null && !builder.hasProblem) { 140 if (builder != null && !builder.hasProblem) {
139 return new AccessErrorBuilder(name, builder, charOffset, fileUri); 141 return new deprecated_AccessErrorBuilder(
142 name, builder, charOffset, fileUri);
140 } 143 }
141 if (!isInstanceScope) { 144 if (!isInstanceScope) {
142 // For static lookup, do not seach the parent scope. 145 // For static lookup, do not seach the parent scope.
143 return builder; 146 return builder;
144 } 147 }
145 return builder ?? parent?.lookupSetter(name, charOffset, fileUri); 148 return builder ?? parent?.lookupSetter(name, charOffset, fileUri);
146 } 149 }
147 150
148 bool hasLocalLabel(String name) => labels != null && labels.containsKey(name); 151 bool hasLocalLabel(String name) => labels != null && labels.containsKey(name);
149 152
150 void declareLabel(String name, Builder target) { 153 void declareLabel(String name, Builder target) {
151 if (isModifiable) { 154 if (isModifiable) {
152 labels ??= <String, Builder>{}; 155 labels ??= <String, Builder>{};
153 labels[name] = target; 156 labels[name] = target;
154 } else { 157 } else {
155 internalError("Can't extend an unmodifiable scope."); 158 deprecated_internalProblem("Can't extend an unmodifiable scope.");
156 } 159 }
157 } 160 }
158 161
159 void forwardDeclareLabel(String name, Builder target) { 162 void forwardDeclareLabel(String name, Builder target) {
160 declareLabel(name, target); 163 declareLabel(name, target);
161 forwardDeclaredLabels ??= <String, Builder>{}; 164 forwardDeclaredLabels ??= <String, Builder>{};
162 forwardDeclaredLabels[name] = target; 165 forwardDeclaredLabels[name] = target;
163 } 166 }
164 167
165 void claimLabel(String name) { 168 void claimLabel(String name) {
(...skipping 10 matching lines...) Expand all
176 179
177 Builder lookupLabel(String name) { 180 Builder lookupLabel(String name) {
178 return (labels == null ? null : labels[name]) ?? parent?.lookupLabel(name); 181 return (labels == null ? null : labels[name]) ?? parent?.lookupLabel(name);
179 } 182 }
180 183
181 /// Declares that the meaning of [name] in this scope is [builder]. 184 /// Declares that the meaning of [name] in this scope is [builder].
182 /// 185 ///
183 /// If name was used previously in this scope, this method returns an error 186 /// If name was used previously in this scope, this method returns an error
184 /// that should be reported as a compile-time error. The position of this 187 /// that should be reported as a compile-time error. The position of this
185 /// error is given by [charOffset] and [fileUri]. 188 /// error is given by [charOffset] and [fileUri].
186 InputError declare( 189 deprecated_InputError declare(
187 String name, Builder builder, int charOffset, Uri fileUri) { 190 String name, Builder builder, int charOffset, Uri fileUri) {
188 if (isModifiable) { 191 if (isModifiable) {
189 if (usedNames?.containsKey(name) ?? false) { 192 if (usedNames?.containsKey(name) ?? false) {
190 return new InputError( 193 return new deprecated_InputError(
191 fileUri, usedNames[name], "Previous use of '$name'."); 194 fileUri, usedNames[name], "Previous use of '$name'.");
192 } 195 }
193 recordUse(name, charOffset, fileUri); 196 recordUse(name, charOffset, fileUri);
194 local[name] = builder; 197 local[name] = builder;
195 } else { 198 } else {
196 internalError("Can't extend an unmodifiable scope."); 199 deprecated_internalProblem("Can't extend an unmodifiable scope.");
197 } 200 }
198 return null; 201 return null;
199 } 202 }
200 203
201 void merge(Scope scope, 204 void merge(Scope scope,
202 buildAmbiguousBuilder(String name, Builder existing, Builder member)) { 205 buildAmbiguousBuilder(String name, Builder existing, Builder member)) {
203 Map<String, Builder> map = local; 206 Map<String, Builder> map = local;
204 207
205 void mergeMember(String name, Builder member) { 208 void mergeMember(String name, Builder member) {
206 Builder existing = map[name]; 209 Builder existing = map[name];
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 269
267 final Builder builder; 270 final Builder builder;
268 271
269 ProblemBuilder(this.name, this.builder, int charOffset, Uri fileUri) 272 ProblemBuilder(this.name, this.builder, int charOffset, Uri fileUri)
270 : super(null, charOffset, fileUri); 273 : super(null, charOffset, fileUri);
271 274
272 get target => null; 275 get target => null;
273 276
274 bool get hasProblem => true; 277 bool get hasProblem => true;
275 278
276 String get message; 279 String get deprecated_message;
277 280
278 @override 281 @override
279 String get fullNameForErrors => name; 282 String get fullNameForErrors => name;
280 } 283 }
281 284
282 /// Represents a [builder] that's being accessed incorrectly. For example, an 285 /// Represents a [builder] that's being accessed incorrectly. For example, an
283 /// attempt to write to a final field, or to read from a setter. 286 /// attempt to write to a final field, or to read from a setter.
284 class AccessErrorBuilder extends ProblemBuilder { 287 class deprecated_AccessErrorBuilder extends ProblemBuilder {
285 AccessErrorBuilder(String name, Builder builder, int charOffset, Uri fileUri) 288 deprecated_AccessErrorBuilder(
289 String name, Builder builder, int charOffset, Uri fileUri)
286 : super(name, builder, charOffset, fileUri); 290 : super(name, builder, charOffset, fileUri);
287 291
288 Builder get parent => builder; 292 Builder get parent => builder;
289 293
290 bool get isFinal => builder.isFinal; 294 bool get isFinal => builder.isFinal;
291 295
292 bool get isField => builder.isField; 296 bool get isField => builder.isField;
293 297
294 bool get isRegularMethod => builder.isRegularMethod; 298 bool get isRegularMethod => builder.isRegularMethod;
295 299
296 bool get isGetter => !builder.isGetter; 300 bool get isGetter => !builder.isGetter;
297 301
298 bool get isSetter => !builder.isSetter; 302 bool get isSetter => !builder.isSetter;
299 303
300 bool get isInstanceMember => builder.isInstanceMember; 304 bool get isInstanceMember => builder.isInstanceMember;
301 305
302 bool get isStatic => builder.isStatic; 306 bool get isStatic => builder.isStatic;
303 307
304 bool get isTopLevel => builder.isTopLevel; 308 bool get isTopLevel => builder.isTopLevel;
305 309
306 bool get isTypeDeclaration => builder.isTypeDeclaration; 310 bool get isTypeDeclaration => builder.isTypeDeclaration;
307 311
308 bool get isLocal => builder.isLocal; 312 bool get isLocal => builder.isLocal;
309 313
310 String get message => "Access error: '$name'."; 314 String get deprecated_message => "Access error: '$name'.";
311 } 315 }
312 316
313 class AmbiguousBuilder extends ProblemBuilder { 317 class AmbiguousBuilder extends ProblemBuilder {
314 AmbiguousBuilder(String name, Builder builder, int charOffset, Uri fileUri) 318 AmbiguousBuilder(String name, Builder builder, int charOffset, Uri fileUri)
315 : super(name, builder, charOffset, fileUri); 319 : super(name, builder, charOffset, fileUri);
316 320
317 String get message => "Duplicated named: '$name'."; 321 String get deprecated_message => "Duplicated named: '$name'.";
318 } 322 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/run.dart ('k') | pkg/front_end/lib/src/fasta/source/diet_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698