| 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.fasta_accessors; | 5 library fasta.fasta_accessors; |
| 6 | 6 |
| 7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' | 7 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' |
| 8 show KernelArguments; | 8 show KernelArguments; |
| 9 | 9 |
| 10 import 'package:front_end/src/fasta/kernel/utils.dart' show offsetForToken; | 10 import 'package:front_end/src/fasta/kernel/utils.dart' show offsetForToken; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 PropertyAccessor, | 30 PropertyAccessor, |
| 31 ReadOnlyAccessor, | 31 ReadOnlyAccessor, |
| 32 StaticAccessor, | 32 StaticAccessor, |
| 33 SuperIndexAccessor, | 33 SuperIndexAccessor, |
| 34 SuperPropertyAccessor, | 34 SuperPropertyAccessor, |
| 35 ThisIndexAccessor, | 35 ThisIndexAccessor, |
| 36 ThisPropertyAccessor, | 36 ThisPropertyAccessor, |
| 37 VariableAccessor; | 37 VariableAccessor; |
| 38 | 38 |
| 39 import 'kernel_builder.dart' | 39 import 'kernel_builder.dart' |
| 40 show Builder, KernelClassBuilder, PrefixBuilder, TypeDeclarationBuilder; | 40 show |
| 41 Builder, |
| 42 KernelClassBuilder, |
| 43 LibraryBuilder, |
| 44 PrefixBuilder, |
| 45 TypeDeclarationBuilder; |
| 41 | 46 |
| 42 import '../names.dart' show callName, lengthName; | 47 import '../names.dart' show callName, lengthName; |
| 43 | 48 |
| 44 abstract class BuilderHelper { | 49 abstract class BuilderHelper { |
| 50 LibraryBuilder get library; |
| 51 |
| 45 Uri get uri; | 52 Uri get uri; |
| 46 | 53 |
| 47 TypePromoter get typePromoter; | 54 TypePromoter get typePromoter; |
| 48 | 55 |
| 49 int get functionNestingLevel; | 56 int get functionNestingLevel; |
| 50 | 57 |
| 51 bool get constantExpressionRequired; | 58 bool get constantExpressionRequired; |
| 52 | 59 |
| 53 Constructor lookupConstructor(Name name, {bool isSuper}); | 60 Constructor lookupConstructor(Name name, {bool isSuper}); |
| 54 | 61 |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 return receiver.buildPropertyAccess(this, isNullAware); | 447 return receiver.buildPropertyAccess(this, isNullAware); |
| 441 } | 448 } |
| 442 if (receiver is PrefixBuilder) { | 449 if (receiver is PrefixBuilder) { |
| 443 PrefixBuilder prefix = receiver; | 450 PrefixBuilder prefix = receiver; |
| 444 receiver = helper.scopeLookup(prefix.exports, name.name, token, | 451 receiver = helper.scopeLookup(prefix.exports, name.name, token, |
| 445 isQualified: true, prefix: prefix); | 452 isQualified: true, prefix: prefix); |
| 446 return helper.finishSend(receiver, arguments, offsetForToken(token)); | 453 return helper.finishSend(receiver, arguments, offsetForToken(token)); |
| 447 } | 454 } |
| 448 Expression result; | 455 Expression result; |
| 449 if (receiver is KernelClassBuilder) { | 456 if (receiver is KernelClassBuilder) { |
| 450 Builder builder = | 457 Builder builder = receiver.findStaticBuilder( |
| 451 receiver.findStaticBuilder(name.name, offsetForToken(token), uri); | 458 name.name, offsetForToken(token), uri, helper.library); |
| 452 if (builder == null || builder is AccessErrorBuilder) { | 459 if (builder == null || builder is AccessErrorBuilder) { |
| 453 return buildThrowNoSuchMethodError(arguments); | 460 return buildThrowNoSuchMethodError(arguments); |
| 454 } | 461 } |
| 455 if (builder.hasProblem) { | 462 if (builder.hasProblem) { |
| 456 result = helper.buildProblemExpression(builder, offsetForToken(token)); | 463 result = helper.buildProblemExpression(builder, offsetForToken(token)); |
| 457 } else { | 464 } else { |
| 458 Member target = builder.target; | 465 Member target = builder.target; |
| 459 if (target != null) { | 466 if (target != null) { |
| 460 if (target is Field) { | 467 if (target is Field) { |
| 461 result = helper.buildMethodInvocation( | 468 result = helper.buildMethodInvocation( |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 } | 539 } |
| 533 if (receiver is FastaAccessor) { | 540 if (receiver is FastaAccessor) { |
| 534 return receiver.buildPropertyAccess(this, isNullAware); | 541 return receiver.buildPropertyAccess(this, isNullAware); |
| 535 } | 542 } |
| 536 if (receiver is PrefixBuilder) { | 543 if (receiver is PrefixBuilder) { |
| 537 PrefixBuilder prefix = receiver; | 544 PrefixBuilder prefix = receiver; |
| 538 return helper.scopeLookup(prefix.exports, name.name, token, | 545 return helper.scopeLookup(prefix.exports, name.name, token, |
| 539 isQualified: true, prefix: prefix); | 546 isQualified: true, prefix: prefix); |
| 540 } | 547 } |
| 541 if (receiver is KernelClassBuilder) { | 548 if (receiver is KernelClassBuilder) { |
| 542 Builder builder = | 549 Builder builder = receiver.findStaticBuilder( |
| 543 receiver.findStaticBuilder(name.name, offsetForToken(token), uri); | 550 name.name, offsetForToken(token), uri, helper.library); |
| 544 if (builder == null) { | 551 if (builder == null) { |
| 545 // If we find a setter, [builder] is an [AccessErrorBuilder], not null. | 552 // If we find a setter, [builder] is an [AccessErrorBuilder], not null. |
| 546 return buildThrowNoSuchMethodError(new Arguments.empty(), | 553 return buildThrowNoSuchMethodError(new Arguments.empty(), |
| 547 isGetter: true); | 554 isGetter: true); |
| 548 } | 555 } |
| 549 Builder setter; | 556 Builder setter; |
| 550 if (builder.isSetter) { | 557 if (builder.isSetter) { |
| 551 setter = builder; | 558 setter = builder; |
| 552 } else if (builder.isGetter) { | 559 } else if (builder.isGetter) { |
| 553 setter = receiver.findStaticBuilder( | 560 setter = receiver.findStaticBuilder( |
| 554 name.name, offsetForToken(token), uri, | 561 name.name, offsetForToken(token), uri, helper.library, |
| 555 isSetter: true); | 562 isSetter: true); |
| 556 } else if (builder.isField && !builder.isFinal) { | 563 } else if (builder.isField && !builder.isFinal) { |
| 557 setter = builder; | 564 setter = builder; |
| 558 } | 565 } |
| 559 return new StaticAccessor.fromBuilder(helper, builder, token, setter); | 566 return new StaticAccessor.fromBuilder(helper, builder, token, setter); |
| 560 } | 567 } |
| 561 return PropertyAccessor.make( | 568 return PropertyAccessor.make( |
| 562 helper, token, helper.toValue(receiver), name, null, null, isNullAware); | 569 helper, token, helper.toValue(receiver), name, null, null, isNullAware); |
| 563 } | 570 } |
| 564 | 571 |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 {bool isGetter: false, bool isSetter: false, int offset}) { | 890 {bool isGetter: false, bool isSetter: false, int offset}) { |
| 884 return helper.throwNoSuchMethodError( | 891 return helper.throwNoSuchMethodError( |
| 885 plainNameForRead, arguments, offset ?? offsetForToken(this.token), | 892 plainNameForRead, arguments, offset ?? offsetForToken(this.token), |
| 886 isGetter: isGetter, isSetter: isSetter); | 893 isGetter: isGetter, isSetter: isSetter); |
| 887 } | 894 } |
| 888 } | 895 } |
| 889 | 896 |
| 890 bool isFieldOrGetter(Member member) { | 897 bool isFieldOrGetter(Member member) { |
| 891 return member is Field || (member is Procedure && member.isGetter); | 898 return member is Field || (member is Procedure && member.isGetter); |
| 892 } | 899 } |
| OLD | NEW |