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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.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.kernel_class_builder; 5 library fasta.kernel_class_builder;
6 6
7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' 7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'
8 show KernelMember; 8 show KernelMember;
9 9
10 import 'package:kernel/ast.dart' 10 import 'package:kernel/ast.dart'
11 show 11 show
12 Class, 12 Class,
13 Constructor, 13 Constructor,
14 DartType, 14 DartType,
15 Expression, 15 Expression,
16 Field, 16 Field,
17 FunctionNode, 17 FunctionNode,
18 InterfaceType, 18 InterfaceType,
19 ListLiteral, 19 ListLiteral,
20 Member, 20 Member,
21 Name, 21 Name,
22 Procedure, 22 Procedure,
23 ProcedureKind, 23 ProcedureKind,
24 StaticGet, 24 StaticGet,
25 Supertype, 25 Supertype,
26 VariableDeclaration; 26 VariableDeclaration;
27 27
28 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; 28 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
29 29
30 import '../errors.dart' show internalError; 30 import '../deprecated_problems.dart' show deprecated_internalProblem;
31 31
32 import '../dill/dill_member_builder.dart' show DillMemberBuilder; 32 import '../dill/dill_member_builder.dart' show DillMemberBuilder;
33 33
34 import 'kernel_builder.dart' 34 import 'kernel_builder.dart'
35 show 35 show
36 Builder, 36 Builder,
37 ClassBuilder, 37 ClassBuilder,
38 ConstructorReferenceBuilder, 38 ConstructorReferenceBuilder,
39 KernelLibraryBuilder, 39 KernelLibraryBuilder,
40 KernelProcedureBuilder, 40 KernelProcedureBuilder,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 assert(arguments == null || cls.typeParameters.length == arguments.length); 75 assert(arguments == null || cls.typeParameters.length == arguments.length);
76 return arguments == null ? cls.rawType : new InterfaceType(cls, arguments); 76 return arguments == null ? cls.rawType : new InterfaceType(cls, arguments);
77 } 77 }
78 78
79 List<DartType> buildTypeArguments( 79 List<DartType> buildTypeArguments(
80 LibraryBuilder library, List<KernelTypeBuilder> arguments) { 80 LibraryBuilder library, List<KernelTypeBuilder> arguments) {
81 List<DartType> typeArguments = <DartType>[]; 81 List<DartType> typeArguments = <DartType>[];
82 for (KernelTypeBuilder builder in arguments) { 82 for (KernelTypeBuilder builder in arguments) {
83 DartType type = builder.build(library); 83 DartType type = builder.build(library);
84 if (type == null) { 84 if (type == null) {
85 internalError("Bad type: ${builder.runtimeType}"); 85 deprecated_internalProblem("Bad type: ${builder.runtimeType}");
86 } 86 }
87 typeArguments.add(type); 87 typeArguments.add(type);
88 } 88 }
89 return computeDefaultTypeArguments( 89 return computeDefaultTypeArguments(
90 library, cls.typeParameters, typeArguments); 90 library, cls.typeParameters, typeArguments);
91 } 91 }
92 92
93 InterfaceType buildType( 93 InterfaceType buildType(
94 LibraryBuilder library, List<KernelTypeBuilder> arguments) { 94 LibraryBuilder library, List<KernelTypeBuilder> arguments) {
95 List<DartType> typeArguments; 95 List<DartType> typeArguments;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 addRedirectingConstructor(builder, library); 127 addRedirectingConstructor(builder, library);
128 if (targetBuilder is ProcedureBuilder) { 128 if (targetBuilder is ProcedureBuilder) {
129 Member target = targetBuilder.target; 129 Member target = targetBuilder.target;
130 builder.body = new RedirectingFactoryBody(target); 130 builder.body = new RedirectingFactoryBody(target);
131 } else if (targetBuilder is DillMemberBuilder) { 131 } else if (targetBuilder is DillMemberBuilder) {
132 builder.body = new RedirectingFactoryBody(targetBuilder.member); 132 builder.body = new RedirectingFactoryBody(targetBuilder.member);
133 } else { 133 } else {
134 String message = "Redirection constructor target not found: " 134 String message = "Redirection constructor target not found: "
135 "${redirectionTarget.fullNameForErrors}"; 135 "${redirectionTarget.fullNameForErrors}";
136 if (builder.isConst) { 136 if (builder.isConst) {
137 addCompileTimeError(builder.charOffset, message); 137 deprecated_addCompileTimeError(builder.charOffset, message);
138 } else { 138 } else {
139 addWarning(builder.charOffset, message); 139 deprecated_addWarning(builder.charOffset, message);
140 } 140 }
141 // CoreTypes aren't computed yet, and this is the outline 141 // CoreTypes aren't computed yet, and this is the outline
142 // phase. So we can't and shouldn't create a method body. 142 // phase. So we can't and shouldn't create a method body.
143 builder.body = new RedirectingFactoryBody.unresolved( 143 builder.body = new RedirectingFactoryBody.unresolved(
144 redirectionTarget.fullNameForErrors); 144 redirectionTarget.fullNameForErrors);
145 } 145 }
146 } 146 }
147 } 147 }
148 } 148 }
149 } 149 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 181 }
182 182
183 void checkOverrides(ClassHierarchy hierarchy) { 183 void checkOverrides(ClassHierarchy hierarchy) {
184 hierarchy.forEachOverridePair(cls, checkOverride); 184 hierarchy.forEachOverridePair(cls, checkOverride);
185 hierarchy.forEachCrossOverridePair(cls, handleCrossOverride); 185 hierarchy.forEachCrossOverridePair(cls, handleCrossOverride);
186 } 186 }
187 187
188 void checkOverride( 188 void checkOverride(
189 Member declaredMember, Member interfaceMember, bool isSetter) { 189 Member declaredMember, Member interfaceMember, bool isSetter) {
190 if (declaredMember is Constructor || interfaceMember is Constructor) { 190 if (declaredMember is Constructor || interfaceMember is Constructor) {
191 internalError( 191 deprecated_internalProblem(
192 "Constructor in override check.", fileUri, declaredMember.fileOffset); 192 "Constructor in override check.", fileUri, declaredMember.fileOffset);
193 } 193 }
194 if (declaredMember is Procedure && interfaceMember is Procedure) { 194 if (declaredMember is Procedure && interfaceMember is Procedure) {
195 if (declaredMember.kind == ProcedureKind.Method && 195 if (declaredMember.kind == ProcedureKind.Method &&
196 interfaceMember.kind == ProcedureKind.Method) { 196 interfaceMember.kind == ProcedureKind.Method) {
197 checkMethodOverride(declaredMember, interfaceMember); 197 checkMethodOverride(declaredMember, interfaceMember);
198 } 198 }
199 } 199 }
200 // TODO(ahe): Handle other cases: accessors, operators, and fields. 200 // TODO(ahe): Handle other cases: accessors, operators, and fields.
201 201
(...skipping 23 matching lines...) Expand all
225 // TODO(ahe): Include these checks as well, but the message needs to 225 // TODO(ahe): Include these checks as well, but the message needs to
226 // explain that [declaredMember] is inherited. 226 // explain that [declaredMember] is inherited.
227 return; 227 return;
228 } 228 }
229 assert(declaredMember.kind == ProcedureKind.Method); 229 assert(declaredMember.kind == ProcedureKind.Method);
230 assert(interfaceMember.kind == ProcedureKind.Method); 230 assert(interfaceMember.kind == ProcedureKind.Method);
231 FunctionNode declaredFunction = declaredMember.function; 231 FunctionNode declaredFunction = declaredMember.function;
232 FunctionNode interfaceFunction = interfaceMember.function; 232 FunctionNode interfaceFunction = interfaceMember.function;
233 if (declaredFunction.typeParameters?.length != 233 if (declaredFunction.typeParameters?.length !=
234 interfaceFunction.typeParameters?.length) { 234 interfaceFunction.typeParameters?.length) {
235 addWarning( 235 deprecated_addWarning(
236 declaredMember.fileOffset, 236 declaredMember.fileOffset,
237 "Declared type variables of '$name::${declaredMember.name.name}' " 237 "Declared type variables of '$name::${declaredMember.name.name}' "
238 "doesn't match those on overridden method " 238 "doesn't match those on overridden method "
239 "'${interfaceMember.enclosingClass.name}::" 239 "'${interfaceMember.enclosingClass.name}::"
240 "${interfaceMember.name.name}'."); 240 "${interfaceMember.name.name}'.");
241 } 241 }
242 if (declaredFunction.positionalParameters.length < 242 if (declaredFunction.positionalParameters.length <
243 interfaceFunction.requiredParameterCount || 243 interfaceFunction.requiredParameterCount ||
244 declaredFunction.positionalParameters.length < 244 declaredFunction.positionalParameters.length <
245 interfaceFunction.positionalParameters.length) { 245 interfaceFunction.positionalParameters.length) {
246 addWarning( 246 deprecated_addWarning(
247 declaredMember.fileOffset, 247 declaredMember.fileOffset,
248 "The method '$name::${declaredMember.name.name}' has fewer " 248 "The method '$name::${declaredMember.name.name}' has fewer "
249 "positional arguments than those of overridden method " 249 "positional arguments than those of overridden method "
250 "'${interfaceMember.enclosingClass.name}::" 250 "'${interfaceMember.enclosingClass.name}::"
251 "${interfaceMember.name.name}'."); 251 "${interfaceMember.name.name}'.");
252 } 252 }
253 if (interfaceFunction.requiredParameterCount < 253 if (interfaceFunction.requiredParameterCount <
254 declaredFunction.requiredParameterCount) { 254 declaredFunction.requiredParameterCount) {
255 addWarning( 255 deprecated_addWarning(
256 declaredMember.fileOffset, 256 declaredMember.fileOffset,
257 "The method '$name::${declaredMember.name.name}' has more " 257 "The method '$name::${declaredMember.name.name}' has more "
258 "required arguments than those of overridden method " 258 "required arguments than those of overridden method "
259 "'${interfaceMember.enclosingClass.name}::" 259 "'${interfaceMember.enclosingClass.name}::"
260 "${interfaceMember.name.name}'."); 260 "${interfaceMember.name.name}'.");
261 } 261 }
262 if (declaredFunction.namedParameters.isEmpty && 262 if (declaredFunction.namedParameters.isEmpty &&
263 interfaceFunction.namedParameters.isEmpty) { 263 interfaceFunction.namedParameters.isEmpty) {
264 return; 264 return;
265 } 265 }
266 if (declaredFunction.namedParameters.length < 266 if (declaredFunction.namedParameters.length <
267 interfaceFunction.namedParameters.length) { 267 interfaceFunction.namedParameters.length) {
268 addWarning( 268 deprecated_addWarning(
269 declaredMember.fileOffset, 269 declaredMember.fileOffset,
270 "The method '$name::${declaredMember.name.name}' has fewer named " 270 "The method '$name::${declaredMember.name.name}' has fewer named "
271 "arguments than those of overridden method " 271 "arguments than those of overridden method "
272 "'${interfaceMember.enclosingClass.name}::" 272 "'${interfaceMember.enclosingClass.name}::"
273 "${interfaceMember.name.name}'."); 273 "${interfaceMember.name.name}'.");
274 } 274 }
275 Iterator<VariableDeclaration> declaredNamedParameters = 275 Iterator<VariableDeclaration> declaredNamedParameters =
276 declaredFunction.namedParameters.iterator; 276 declaredFunction.namedParameters.iterator;
277 Iterator<VariableDeclaration> interfaceNamedParameters = 277 Iterator<VariableDeclaration> interfaceNamedParameters =
278 interfaceFunction.namedParameters.iterator; 278 interfaceFunction.namedParameters.iterator;
279 outer: 279 outer:
280 while (declaredNamedParameters.moveNext() && 280 while (declaredNamedParameters.moveNext() &&
281 interfaceNamedParameters.moveNext()) { 281 interfaceNamedParameters.moveNext()) {
282 while (declaredNamedParameters.current.name != 282 while (declaredNamedParameters.current.name !=
283 interfaceNamedParameters.current.name) { 283 interfaceNamedParameters.current.name) {
284 if (!declaredNamedParameters.moveNext()) { 284 if (!declaredNamedParameters.moveNext()) {
285 addWarning( 285 deprecated_addWarning(
286 declaredMember.fileOffset, 286 declaredMember.fileOffset,
287 "The method '$name::${declaredMember.name.name}' doesn't have " 287 "The method '$name::${declaredMember.name.name}' doesn't have "
288 "the named parameter '${interfaceNamedParameters.current.name}' " 288 "the named parameter '${interfaceNamedParameters.current.name}' "
289 "of overriden method '${interfaceMember.enclosingClass.name}::" 289 "of overriden method '${interfaceMember.enclosingClass.name}::"
290 "${interfaceMember.name.name}'."); 290 "${interfaceMember.name.name}'.");
291 break outer; 291 break outer;
292 } 292 }
293 } 293 }
294 } 294 }
295 } 295 }
296 296
297 String get fullNameForErrors { 297 String get fullNameForErrors {
298 return isMixinApplication 298 return isMixinApplication
299 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}" 299 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}"
300 : name; 300 : name;
301 } 301 }
302 } 302 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/kernel_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698