File tree Expand file tree Collapse file tree 4 files changed +628
-4
lines changed Expand file tree Collapse file tree 4 files changed +628
-4
lines changed Original file line number Diff line number Diff 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;
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments