| 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 if (builder == null) { | 346 if (builder == null) { |
| 347 return buildThrowNoSuchMethodError(arguments); | 347 return buildThrowNoSuchMethodError(arguments); |
| 348 } | 348 } |
| 349 if (builder.hasProblem) { | 349 if (builder.hasProblem) { |
| 350 result = helper.buildProblemExpression(builder, name.name); | 350 result = helper.buildProblemExpression(builder, name.name); |
| 351 } else { | 351 } else { |
| 352 Member target = builder.target; | 352 Member target = builder.target; |
| 353 if (target != null) { | 353 if (target != null) { |
| 354 if (target is Field) { | 354 if (target is Field) { |
| 355 result = buildMethodInvocation( | 355 result = buildMethodInvocation( |
| 356 new StaticGet(target), new Name("call"), arguments, charOffset, | 356 new StaticGet(target), |
| 357 new Name("call"), |
| 358 arguments, |
| 359 charOffset + (target.name?.name?.length ?? 0), |
| 357 isNullAware: isNullAware); | 360 isNullAware: isNullAware); |
| 358 } else { | 361 } else { |
| 359 result = helper.buildStaticInvocation(target, arguments); | 362 result = helper.buildStaticInvocation(target, arguments) |
| 363 ..fileOffset = charOffset; |
| 360 } | 364 } |
| 361 } else { | 365 } else { |
| 362 result = buildThrowNoSuchMethodError(arguments); | 366 result = buildThrowNoSuchMethodError(arguments) |
| 367 ..fileOffset = charOffset; |
| 363 } | 368 } |
| 364 } | 369 } |
| 365 } else { | 370 } else { |
| 366 result = buildMethodInvocation( | 371 result = buildMethodInvocation( |
| 367 helper.toValue(receiver), name, arguments, charOffset, | 372 helper.toValue(receiver), name, arguments, charOffset, |
| 368 isNullAware: isNullAware); | 373 isNullAware: isNullAware); |
| 369 } | 374 } |
| 370 return result..fileOffset = charOffset; | 375 return result; |
| 371 } | 376 } |
| 372 | 377 |
| 373 Expression buildNullAwareAssignment(Expression value, DartType type, | 378 Expression buildNullAwareAssignment(Expression value, DartType type, |
| 374 {bool voidContext: false}) { | 379 {bool voidContext: false}) { |
| 375 return internalError("Unhandled"); | 380 return internalError("Unhandled"); |
| 376 } | 381 } |
| 377 | 382 |
| 378 Expression buildCompoundAssignment( | 383 Expression buildCompoundAssignment( |
| 379 Name binaryOperator, Expression value, int charOffset, | 384 Name binaryOperator, Expression value, int charOffset, |
| 380 {bool voidContext: false, Procedure interfaceTarget}) { | 385 {bool voidContext: false, Procedure interfaceTarget}) { |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 helper, charOffset, receiver, name, getter, setter, null) | 563 helper, charOffset, receiver, name, getter, setter, null) |
| 559 : new PropertyAccessor.internal( | 564 : new PropertyAccessor.internal( |
| 560 helper, charOffset, receiver, name, getter, setter); | 565 helper, charOffset, receiver, name, getter, setter); |
| 561 } | 566 } |
| 562 } | 567 } |
| 563 } | 568 } |
| 564 | 569 |
| 565 class StaticAccessor extends kernel.StaticAccessor with BuilderAccessor { | 570 class StaticAccessor extends kernel.StaticAccessor with BuilderAccessor { |
| 566 final BuilderHelper helper; | 571 final BuilderHelper helper; |
| 567 | 572 |
| 568 final int charOffset; | |
| 569 | |
| 570 StaticAccessor( | 573 StaticAccessor( |
| 571 this.helper, this.charOffset, Member readTarget, Member writeTarget) | 574 this.helper, int charOffset, Member readTarget, Member writeTarget) |
| 572 : super(readTarget, writeTarget) { | 575 : super(readTarget, writeTarget, charOffset) { |
| 573 assert(readTarget != null || writeTarget != null); | 576 assert(readTarget != null || writeTarget != null); |
| 574 } | 577 } |
| 575 | 578 |
| 576 String get plainNameForRead => (readTarget ?? writeTarget).name.name; | 579 String get plainNameForRead => (readTarget ?? writeTarget).name.name; |
| 577 | 580 |
| 578 Expression doInvocation(int charOffset, Arguments arguments) { | 581 Expression doInvocation(int charOffset, Arguments arguments) { |
| 579 if (readTarget == null || isFieldOrGetter(readTarget)) { | 582 if (readTarget == null || isFieldOrGetter(readTarget)) { |
| 580 return buildMethodInvocation( | 583 return buildMethodInvocation(buildSimpleRead(), new Name("call"), |
| 581 buildSimpleRead(), new Name("call"), arguments, charOffset); | 584 arguments, charOffset + (readTarget?.name?.name?.length ?? 0)); |
| 582 } else { | 585 } else { |
| 583 return helper.buildStaticInvocation(readTarget, arguments) | 586 return helper.buildStaticInvocation(readTarget, arguments) |
| 584 ..fileOffset = charOffset; | 587 ..fileOffset = charOffset; |
| 585 } | 588 } |
| 586 } | 589 } |
| 587 | 590 |
| 588 toString() => "StaticAccessor()"; | 591 toString() => "StaticAccessor()"; |
| 589 } | 592 } |
| 590 | 593 |
| 591 class SuperPropertyAccessor extends kernel.SuperPropertyAccessor | 594 class SuperPropertyAccessor extends kernel.SuperPropertyAccessor |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 buildIsNull(new VariableGet(variable)), | 759 buildIsNull(new VariableGet(variable)), |
| 757 new NullLiteral(), | 760 new NullLiteral(), |
| 758 new MethodInvocation(new VariableGet(variable), name, arguments) | 761 new MethodInvocation(new VariableGet(variable), name, arguments) |
| 759 ..fileOffset = charOffset, | 762 ..fileOffset = charOffset, |
| 760 const DynamicType())); | 763 const DynamicType())); |
| 761 } else { | 764 } else { |
| 762 return new MethodInvocation(receiver, name, arguments) | 765 return new MethodInvocation(receiver, name, arguments) |
| 763 ..fileOffset = charOffset; | 766 ..fileOffset = charOffset; |
| 764 } | 767 } |
| 765 } | 768 } |
| OLD | NEW |