Skip to content

Commit 88606f6

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Access specifically constructor ID for dependencies.
Change-Id: Ida8aa508af02a12441a134098f4d147758cc4730 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/424707 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent c6a1a27 commit 88606f6

File tree

4 files changed

+628
-4
lines changed

4 files changed

+628
-4
lines changed

pkg/analyzer/lib/src/fine/manifest_context.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@ extension LinkedElementFactoryExtension on LinkedElementFactory {
305305
// TODO(scheglov): When implementation is complete, cast unconditionally.
306306
if (topLevelItem is InstanceItem) {
307307
var memberName = memberElement.lookupName!.asLookupName;
308+
if (element is ConstructorElement) {
309+
return topLevelItem.getConstructorId(memberName);
310+
}
308311
var memberId = topLevelItem.getMemberId(memberName);
309312
// TODO(scheglov): When implementation is complete, null assert.
310313
return memberId;

pkg/analyzer/lib/src/fine/manifest_item.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ sealed class InstanceItem<E extends InstanceElementImpl2>
7878
required this.members,
7979
});
8080

81+
ManifestItemId? getConstructorId(LookupName name) {
82+
var baseNameMembers = members[name.asBaseName];
83+
if (baseNameMembers == null) {
84+
return null;
85+
}
86+
87+
return baseNameMembers.constructorId;
88+
}
89+
8190
ManifestItemId? getMemberId(LookupName name) {
8291
var baseNameMembers = members[name.asBaseName];
8392
if (baseNameMembers == null) {
@@ -92,8 +101,7 @@ sealed class InstanceItem<E extends InstanceElementImpl2>
92101
return baseNameMembers.indexEqId;
93102
}
94103

95-
// TODO(scheglov): separate constructors
96-
return baseNameMembers.getterOrMethodId ?? baseNameMembers.constructorId;
104+
return baseNameMembers.getterOrMethodId;
97105
}
98106

99107
@override

pkg/analyzer/lib/src/fine/requirements.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ class RequirementsManifest {
318318
var constructors = interfaceEntry.value.constructors;
319319
for (var constructorEntry in constructors.entries) {
320320
var constructorName = constructorEntry.key;
321-
var constructorId = interfaceItem.getMemberId(constructorName);
321+
var constructorId = interfaceItem.getConstructorId(constructorName);
322322
var expectedId = constructorEntry.value;
323323
if (expectedId != constructorId) {
324324
return InterfaceConstructorIdMismatch(
@@ -372,7 +372,7 @@ class RequirementsManifest {
372372

373373
var (interfaceItem, interface) = interfacePair;
374374
var constructorName = name.asLookupName;
375-
var constructorId = interfaceItem.getMemberId(constructorName);
375+
var constructorId = interfaceItem.getConstructorId(constructorName);
376376
interface.constructors[constructorName] = constructorId;
377377
}
378378

0 commit comments

Comments
 (0)