Skip to content

Commit b7602f4

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Migrate _WhyNotPromotedVisitor.
Change-Id: I63d26989e1c46ba668e5cb3750fee7c31a65097e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409242 Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 223c3a1 commit b7602f4

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

pkg/analyzer/lib/src/dart/element/member.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,16 @@ class GetterMember extends PropertyAccessorMember
794794
@override
795795
String? get lookupName => _element2.lookupName;
796796

797+
@override
798+
Element2 get nonSynthetic2 {
799+
if (!isSynthetic) {
800+
return this;
801+
} else if (variable3 case var variable?) {
802+
return variable.nonSynthetic2;
803+
}
804+
throw StateError('Synthetic getter has no variable');
805+
}
806+
797807
@override
798808
PropertyInducingElement2OrMember? get variable3 =>
799809
variable2.asElement2 as PropertyInducingElement2OrMember?;
@@ -1564,6 +1574,16 @@ class SetterMember extends PropertyAccessorMember
15641574
@override
15651575
String? get lookupName => _element2.lookupName;
15661576

1577+
@override
1578+
Element2 get nonSynthetic2 {
1579+
if (!isSynthetic) {
1580+
return this;
1581+
} else if (variable3 case var variable?) {
1582+
return variable.nonSynthetic2;
1583+
}
1584+
throw StateError('Synthetic setter has no variable');
1585+
}
1586+
15671587
@override
15681588
PropertyInducingElement2OrMember? get variable3 =>
15691589
variable2.asElement2 as PropertyInducingElement2OrMember?;

pkg/analyzer/lib/src/generated/resolver.dart

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ class ResolverVisitor extends ThrowingAstVisitor<void>
746746
var args = <String>[];
747747
var propertyReference = whyNotPromotedVisitor.propertyReference;
748748
if (propertyReference != null) {
749-
var id = computeMemberId(propertyReference.asElement2);
749+
var id = computeMemberId(propertyReference);
750750
args.add('target: $id');
751751
}
752752
if (args.isNotEmpty) {
@@ -5658,7 +5658,7 @@ class _WhyNotPromotedVisitor
56585658

56595659
final FlowAnalysisDataForTesting? _dataForTesting;
56605660

5661-
PropertyAccessorElement? propertyReference;
5661+
PropertyAccessorElement2? propertyReference;
56625662

56635663
_WhyNotPromotedVisitor(this.source, this._errorEntity, this._dataForTesting);
56645664

@@ -5681,9 +5681,6 @@ class _WhyNotPromotedVisitor
56815681
PropertyNotPromotedForInherentReason reason) {
56825682
var receiverElement = reason.propertyMember;
56835683
if (receiverElement is PropertyAccessorElement2) {
5684-
receiverElement = receiverElement.asElement;
5685-
}
5686-
if (receiverElement is PropertyAccessorElement) {
56875684
var property = propertyReference = receiverElement;
56885685
var propertyName = reason.propertyName;
56895686
String message = switch (reason.whyNotPromotable) {
@@ -5701,10 +5698,10 @@ class _WhyNotPromotedVisitor
57015698
};
57025699
return [
57035700
DiagnosticMessageImpl(
5704-
filePath: property.source.fullName,
5701+
filePath: property.firstFragment.libraryFragment.source.fullName,
57055702
message: message,
5706-
offset: property.nonSynthetic.nameOffset,
5707-
length: property.nameLength,
5703+
offset: property.nonSynthetic2.firstFragment.nameOffset2!,
5704+
length: property.name3!.length,
57085705
url: reason.documentationLink.url),
57095706
if (!reason.fieldPromotionEnabled)
57105707
_fieldPromotionUnavailableMessage(property, propertyName)
@@ -5721,12 +5718,9 @@ class _WhyNotPromotedVisitor
57215718
PropertyNotPromotedForNonInherentReason reason) {
57225719
var receiverElement = reason.propertyMember;
57235720
if (receiverElement is PropertyAccessorElement2) {
5724-
receiverElement = receiverElement.asElement;
5725-
}
5726-
if (receiverElement is PropertyAccessorElement) {
57275721
var property = propertyReference = receiverElement;
57285722
var propertyName = reason.propertyName;
5729-
var library = receiverElement.library as LibraryElementImpl;
5723+
var library = receiverElement.library2 as LibraryElementImpl;
57305724
var fieldNonPromotabilityInfo = library.fieldNameNonPromotabilityInfo;
57315725
var fieldNameInfo = fieldNonPromotabilityInfo[reason.propertyName];
57325726
var messages = <DiagnosticMessage>[];
@@ -5822,14 +5816,14 @@ class _WhyNotPromotedVisitor
58225816
}
58235817

58245818
DiagnosticMessageImpl _fieldPromotionUnavailableMessage(
5825-
PropertyAccessorElement property, String propertyName) {
5819+
PropertyAccessorElement2 property, String propertyName) {
58265820
return DiagnosticMessageImpl(
5827-
filePath: property.source.fullName,
5821+
filePath: property.firstFragment.libraryFragment.source.fullName,
58285822
message: "'$propertyName' couldn't be promoted "
58295823
"because field promotion is only available in Dart 3.2 and "
58305824
"above.",
5831-
offset: property.nonSynthetic.nameOffset,
5832-
length: property.nameLength,
5825+
offset: property.nonSynthetic2.firstFragment.nameOffset2!,
5826+
length: property.name3!.length,
58335827
url: NonPromotionDocumentationLink.fieldPromotionUnavailable.url);
58345828
}
58355829
}

0 commit comments

Comments
 (0)