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

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

Issue 2691523002: Ensure locations are always provided, but don't store them yet. (Closed)
Patch Set: Address comments. Created 3 years, 10 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.builder_accessors; 5 library fasta.builder_accessors;
6 6
7 export 'frontend_accessors.dart' show 7 export 'frontend_accessors.dart' show
8 wrapInvalid; 8 wrapInvalid;
9 9
10 import 'frontend_accessors.dart' show 10 import 'frontend_accessors.dart' show
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 return receiver.buildPropertyAccess(this, isNullAware); 333 return receiver.buildPropertyAccess(this, isNullAware);
334 } 334 }
335 if (receiver is PrefixBuilder) { 335 if (receiver is PrefixBuilder) {
336 PrefixBuilder prefix = receiver; 336 PrefixBuilder prefix = receiver;
337 receiver = helper.builderToFirstExpression( 337 receiver = helper.builderToFirstExpression(
338 prefix.exports[name.name], "${prefix.name}.${name.name}", charOffset); 338 prefix.exports[name.name], "${prefix.name}.${name.name}", charOffset);
339 return helper.finishSend(receiver, arguments, charOffset); 339 return helper.finishSend(receiver, arguments, charOffset);
340 } 340 }
341 Expression result; 341 Expression result;
342 if (receiver is KernelClassBuilder) { 342 if (receiver is KernelClassBuilder) {
343 Builder builder = receiver.findStaticBuilder(name.name); 343 Builder builder = receiver.findStaticBuilder(name.name, charOffset, uri);
344 if (builder == null) { 344 if (builder == null) {
345 return buildThrowNoSuchMethodError(arguments); 345 return buildThrowNoSuchMethodError(arguments);
346 } 346 }
347 if (builder.hasProblem) { 347 if (builder.hasProblem) {
348 result = helper.buildProblemExpression(builder, name.name); 348 result = helper.buildProblemExpression(builder, name.name);
349 } else { 349 } else {
350 Member target = builder.target; 350 Member target = builder.target;
351 if (target != null) { 351 if (target != null) {
352 if (target is Field) { 352 if (target is Field) {
353 result = buildMethodInvocation(new StaticGet(target), 353 result = buildMethodInvocation(new StaticGet(target),
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 } 415 }
416 if (receiver is BuilderAccessor) { 416 if (receiver is BuilderAccessor) {
417 return receiver.buildPropertyAccess(this, isNullAware); 417 return receiver.buildPropertyAccess(this, isNullAware);
418 } 418 }
419 if (receiver is PrefixBuilder) { 419 if (receiver is PrefixBuilder) {
420 PrefixBuilder prefix = receiver; 420 PrefixBuilder prefix = receiver;
421 return helper.builderToFirstExpression( 421 return helper.builderToFirstExpression(
422 prefix.exports[name.name], name.name, charOffset); 422 prefix.exports[name.name], name.name, charOffset);
423 } 423 }
424 if (receiver is KernelClassBuilder) { 424 if (receiver is KernelClassBuilder) {
425 Builder builder = receiver.findStaticBuilder(name.name); 425 Builder builder = receiver.findStaticBuilder(name.name, charOffset, uri);
426 Member getter = builder?.target; 426 Member getter = builder?.target;
427 Member setter; 427 Member setter;
428 if (builder == null) { 428 if (builder == null) {
429 builder = receiver.findStaticBuilder(name.name, isSetter: true); 429 builder = receiver.findStaticBuilder(
430 name.name, charOffset, uri, isSetter: true);
430 if (builder == null) { 431 if (builder == null) {
431 return buildThrowNoSuchMethodError(null); 432 return buildThrowNoSuchMethodError(null);
432 } 433 }
433 } 434 }
434 if (builder.hasProblem) { 435 if (builder.hasProblem) {
435 return helper.buildProblemExpression(builder, name.name) 436 return helper.buildProblemExpression(builder, name.name)
436 ..fileOffset = charOffset; 437 ..fileOffset = charOffset;
437 } 438 }
438 if (getter is Field) { 439 if (getter is Field) {
439 if (!getter.isFinal && !getter.isConst) { 440 if (!getter.isFinal && !getter.isConst) {
440 setter = getter; 441 setter = getter;
441 } 442 }
442 } else if (getter is Procedure) { 443 } else if (getter is Procedure) {
443 if (getter.isGetter) { 444 if (getter.isGetter) {
444 builder = receiver.findStaticBuilder(name.name, isSetter: true); 445 builder = receiver.findStaticBuilder(
446 name.name, charOffset, uri, isSetter: true);
445 if (builder != null && !builder.hasProblem) { 447 if (builder != null && !builder.hasProblem) {
446 setter = builder.target; 448 setter = builder.target;
447 } 449 }
448 } 450 }
449 } 451 }
450 if (getter == null) { 452 if (getter == null) {
451 return internalError("no getter for $name"); 453 return internalError("no getter for $name");
452 } 454 }
453 return new StaticAccessor(helper, charOffset, getter, setter); 455 return new StaticAccessor(helper, charOffset, getter, setter);
454 } 456 }
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 buildIsNull(new VariableGet(variable)), 723 buildIsNull(new VariableGet(variable)),
722 new NullLiteral(), 724 new NullLiteral(),
723 new MethodInvocation(new VariableGet(variable), name, arguments) 725 new MethodInvocation(new VariableGet(variable), name, arguments)
724 ..fileOffset = charOffset, 726 ..fileOffset = charOffset,
725 const DynamicType())); 727 const DynamicType()));
726 } else { 728 } else {
727 return new MethodInvocation(receiver, name, arguments) 729 return new MethodInvocation(receiver, name, arguments)
728 ..fileOffset = charOffset; 730 ..fileOffset = charOffset;
729 } 731 }
730 } 732 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/body_builder.dart ('k') | pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698