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

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

Issue 2800083002: Complain about incorrect this/super constructor initializers. (Closed)
Patch Set: Created 3 years, 8 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_procedure_builder; 5 library fasta.kernel_procedure_builder;
6 6
7 import 'package:kernel/ast.dart' 7 import 'package:kernel/ast.dart'
8 show 8 show
9 Arguments, 9 Arguments,
10 AsyncMarker, 10 AsyncMarker,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 ConstructorReferenceBuilder, 48 ConstructorReferenceBuilder,
49 FormalParameterBuilder, 49 FormalParameterBuilder,
50 KernelFormalParameterBuilder, 50 KernelFormalParameterBuilder,
51 KernelLibraryBuilder, 51 KernelLibraryBuilder,
52 KernelTypeBuilder, 52 KernelTypeBuilder,
53 KernelTypeVariableBuilder, 53 KernelTypeVariableBuilder,
54 LibraryBuilder, 54 LibraryBuilder,
55 MetadataBuilder, 55 MetadataBuilder,
56 ProcedureBuilder, 56 ProcedureBuilder,
57 TypeVariableBuilder, 57 TypeVariableBuilder,
58 isRedirectingGenerativeConstructorImplementation,
58 memberError; 59 memberError;
59 60
60 abstract class KernelFunctionBuilder 61 abstract class KernelFunctionBuilder
61 extends ProcedureBuilder<KernelTypeBuilder> { 62 extends ProcedureBuilder<KernelTypeBuilder> {
62 final String nativeMethodName; 63 final String nativeMethodName;
63 64
64 FunctionNode function; 65 FunctionNode function;
65 66
66 Statement actualBody; 67 Statement actualBody;
67 68
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 } 241 }
241 return procedure; 242 return procedure;
242 } 243 }
243 244
244 Procedure get target => procedure; 245 Procedure get target => procedure;
245 } 246 }
246 247
247 // TODO(ahe): Move this to own file? 248 // TODO(ahe): Move this to own file?
248 class KernelConstructorBuilder extends KernelFunctionBuilder { 249 class KernelConstructorBuilder extends KernelFunctionBuilder {
249 final Constructor constructor; 250 final Constructor constructor;
251
250 final int charOpenParenOffset; 252 final int charOpenParenOffset;
251 253
252 bool hasMovedSuperInitializer = false; 254 bool hasMovedSuperInitializer = false;
253 255
254 SuperInitializer superInitializer; 256 SuperInitializer superInitializer;
255 257
256 RedirectingInitializer redirectingInitializer; 258 RedirectingInitializer redirectingInitializer;
257 259
258 KernelConstructorBuilder( 260 KernelConstructorBuilder(
259 List<MetadataBuilder> metadata, 261 List<MetadataBuilder> metadata,
(...skipping 14 matching lines...) Expand all
274 compilationUnit, charOffset, nativeMethodName); 276 compilationUnit, charOffset, nativeMethodName);
275 277
276 bool get isInstanceMember => false; 278 bool get isInstanceMember => false;
277 279
278 bool get isConstructor => true; 280 bool get isConstructor => true;
279 281
280 AsyncMarker get asyncModifier => AsyncMarker.Sync; 282 AsyncMarker get asyncModifier => AsyncMarker.Sync;
281 283
282 ProcedureKind get kind => null; 284 ProcedureKind get kind => null;
283 285
286 bool get isRedirectingGenerativeConstructor {
287 return isRedirectingGenerativeConstructorImplementation(constructor);
288 }
289
284 Constructor build(LibraryBuilder library) { 290 Constructor build(LibraryBuilder library) {
285 if (constructor.name == null) { 291 if (constructor.name == null) {
286 constructor.function = buildFunction(library); 292 constructor.function = buildFunction(library);
287 constructor.function.parent = constructor; 293 constructor.function.parent = constructor;
288 constructor.function.fileOffset = charOpenParenOffset; 294 constructor.function.fileOffset = charOpenParenOffset;
289 constructor.function.fileEndOffset = constructor.fileEndOffset; 295 constructor.function.fileEndOffset = constructor.fileEndOffset;
290 constructor.isConst = isConst; 296 constructor.isConst = isConst;
291 constructor.isExternal = isExternal; 297 constructor.isExternal = isExternal;
292 constructor.name = new Name(name, library.target); 298 constructor.name = new Name(name, library.target);
293 } 299 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 } 362 }
357 } 363 }
358 initializers.add(initializer..parent = constructor); 364 initializers.add(initializer..parent = constructor);
359 initializers.add(superInitializer); 365 initializers.add(superInitializer);
360 return; 366 return;
361 } 367 }
362 initializers.add(initializer); 368 initializers.add(initializer);
363 initializer.parent = constructor; 369 initializer.parent = constructor;
364 } 370 }
365 } 371 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698