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

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

Issue 2748673002: Don't crash on static/non-static acccessors. (Closed)
Patch Set: Created 3 years, 9 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
« no previous file with comments | « no previous file | tests/co19/co19-kernel.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 wrapInvalid; 7 export 'frontend_accessors.dart' show wrapInvalid;
8 8
9 import 'frontend_accessors.dart' show Accessor; 9 import 'frontend_accessors.dart' show Accessor;
10 10
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 if (receiver is KernelClassBuilder) { 428 if (receiver is KernelClassBuilder) {
429 Builder builder = receiver.findStaticBuilder(name.name, charOffset, uri); 429 Builder builder = receiver.findStaticBuilder(name.name, charOffset, uri);
430 Member getter = builder?.target; 430 Member getter = builder?.target;
431 Member setter; 431 Member setter;
432 if (builder == null) { 432 if (builder == null) {
433 builder = receiver.findStaticBuilder(name.name, charOffset, uri, 433 builder = receiver.findStaticBuilder(name.name, charOffset, uri,
434 isSetter: true); 434 isSetter: true);
435 if (builder == null) { 435 if (builder == null) {
436 return buildThrowNoSuchMethodError(null); 436 return buildThrowNoSuchMethodError(null);
437 } 437 }
438 setter = builder.target;
438 } 439 }
439 if (builder.hasProblem) { 440 if (builder.hasProblem) {
440 return helper.buildProblemExpression(builder, name.name) 441 return helper.buildProblemExpression(builder, name.name)
441 ..fileOffset = charOffset; 442 ..fileOffset = charOffset;
442 } 443 }
443 if (getter is Field) { 444 if (getter is Field) {
444 if (!getter.isFinal && !getter.isConst) { 445 if (!getter.isFinal && !getter.isConst) {
445 setter = getter; 446 setter = getter;
446 } 447 }
447 } else if (getter is Procedure) { 448 } else if (getter is Procedure) {
448 if (getter.isGetter) { 449 if (getter.isGetter) {
449 builder = receiver.findStaticBuilder(name.name, charOffset, uri, 450 builder = receiver.findStaticBuilder(name.name, charOffset, uri,
450 isSetter: true); 451 isSetter: true);
451 if (builder != null && !builder.hasProblem) { 452 if (builder != null && !builder.hasProblem) {
452 setter = builder.target; 453 setter = builder.target;
453 } 454 }
454 } 455 }
455 } 456 }
456 if (getter == null) { 457 if (getter == null && setter == null) {
457 return internalError("no getter for $name"); 458 return internalError("No accessor for '$name'.");
458 } 459 }
459 return new StaticAccessor(helper, charOffset, getter, setter); 460 return new StaticAccessor(helper, charOffset, getter, setter);
460 } 461 }
461 return PropertyAccessor.make(helper, charOffset, helper.toValue(receiver), 462 return PropertyAccessor.make(helper, charOffset, helper.toValue(receiver),
462 name, null, null, isNullAware); 463 name, null, null, isNullAware);
463 } 464 }
464 465
465 Expression buildNullAwareAssignment(Expression value, DartType type, 466 Expression buildNullAwareAssignment(Expression value, DartType type,
466 {bool voidContext: false}) { 467 {bool voidContext: false}) {
467 return internalError("Unhandled"); 468 return internalError("Unhandled");
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 buildIsNull(new VariableGet(variable)), 756 buildIsNull(new VariableGet(variable)),
756 new NullLiteral(), 757 new NullLiteral(),
757 new MethodInvocation(new VariableGet(variable), name, arguments) 758 new MethodInvocation(new VariableGet(variable), name, arguments)
758 ..fileOffset = charOffset, 759 ..fileOffset = charOffset,
759 const DynamicType())); 760 const DynamicType()));
760 } else { 761 } else {
761 return new MethodInvocation(receiver, name, arguments) 762 return new MethodInvocation(receiver, name, arguments)
762 ..fileOffset = charOffset; 763 ..fileOffset = charOffset;
763 } 764 }
764 } 765 }
OLDNEW
« no previous file with comments | « no previous file | tests/co19/co19-kernel.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698