| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |