@@ -137,7 +137,7 @@ class LibraryManifestBuilder {
137137 typeParameters,
138138 ) {
139139 classItem.declaredMembers.clear ();
140- _addInterfaceElementExecutables (
140+ _addInterfaceElementMembers (
141141 encodingContext: encodingContext,
142142 instanceElement: element,
143143 interfaceItem: classItem,
@@ -205,34 +205,25 @@ class LibraryManifestBuilder {
205205 }
206206 }
207207
208- void _addInstanceElementExecutables ({
208+ void _addInstanceElementField ({
209209 required EncodeContext encodingContext,
210- required InstanceElementImpl2 instanceElement,
211210 required InstanceItem instanceItem,
211+ required FieldElementImpl2 element,
212212 }) {
213- for (var method in instanceElement.methods2) {
214- _addInstanceElementMethod (
215- encodingContext: encodingContext,
216- instanceItem: instanceItem,
217- element: method,
218- );
213+ var lookupName = element.lookupName? .asLookupName;
214+ if (lookupName == null ) {
215+ return ;
219216 }
220217
221- for ( var getter in instanceElement.getters2 ) {
222- _addInstanceElementGetter (
223- encodingContext : encodingContext ,
224- instanceItem : instanceItem ,
225- element: getter ,
218+ var item = _getOrBuildElementItem (element, ( ) {
219+ return InstanceItemFieldItem . fromElement (
220+ id : ManifestItemId . generate () ,
221+ context : encodingContext ,
222+ element: element ,
226223 );
227- }
224+ });
228225
229- for (var setter in instanceElement.setters2) {
230- _addInstanceElementSetter (
231- encodingContext: encodingContext,
232- instanceItem: instanceItem,
233- element: setter,
234- );
235- }
226+ instanceItem.declaredFields[lookupName] = item;
236227 }
237228
238229 void _addInstanceElementGetter ({
@@ -257,6 +248,44 @@ class LibraryManifestBuilder {
257248 instanceItem.declaredMembers.addDeclaredGetter (baseName, item);
258249 }
259250
251+ void _addInstanceElementMembers ({
252+ required EncodeContext encodingContext,
253+ required InstanceElementImpl2 instanceElement,
254+ required InstanceItem instanceItem,
255+ }) {
256+ for (var field in instanceElement.fields2) {
257+ _addInstanceElementField (
258+ encodingContext: encodingContext,
259+ instanceItem: instanceItem,
260+ element: field,
261+ );
262+ }
263+
264+ for (var method in instanceElement.methods2) {
265+ _addInstanceElementMethod (
266+ encodingContext: encodingContext,
267+ instanceItem: instanceItem,
268+ element: method,
269+ );
270+ }
271+
272+ for (var getter in instanceElement.getters2) {
273+ _addInstanceElementGetter (
274+ encodingContext: encodingContext,
275+ instanceItem: instanceItem,
276+ element: getter,
277+ );
278+ }
279+
280+ for (var setter in instanceElement.setters2) {
281+ _addInstanceElementSetter (
282+ encodingContext: encodingContext,
283+ instanceItem: instanceItem,
284+ element: setter,
285+ );
286+ }
287+ }
288+
260289 void _addInstanceElementMethod ({
261290 required EncodeContext encodingContext,
262291 required InstanceItem instanceItem,
@@ -327,7 +356,7 @@ class LibraryManifestBuilder {
327356 interfaceItem.declaredMembers.addDeclaredConstructor (baseName, item);
328357 }
329358
330- void _addInterfaceElementExecutables ({
359+ void _addInterfaceElementMembers ({
331360 required EncodeContext encodingContext,
332361 required InterfaceElementImpl2 instanceElement,
333362 required InterfaceItem interfaceItem,
@@ -347,7 +376,7 @@ class LibraryManifestBuilder {
347376 );
348377 }
349378
350- _addInstanceElementExecutables (
379+ _addInstanceElementMembers (
351380 encodingContext: encodingContext,
352381 instanceElement: instanceElement,
353382 instanceItem: interfaceItem,
@@ -373,7 +402,7 @@ class LibraryManifestBuilder {
373402 typeParameters,
374403 ) {
375404 mixinItem.declaredMembers.clear ();
376- _addInterfaceElementExecutables (
405+ _addInterfaceElementMembers (
377406 encodingContext: encodingContext,
378407 instanceElement: element,
379408 interfaceItem: mixinItem,
@@ -907,11 +936,45 @@ class _LibraryMatch {
907936 }
908937 }
909938
939+ bool _matchInstanceElementField ({
940+ required InstanceItem instanceItem,
941+ required MatchContext instanceMatchContext,
942+ required FieldElementImpl2 field,
943+ }) {
944+ var lookupName = field.lookupName? .asLookupName;
945+ if (lookupName == null ) {
946+ return true ;
947+ }
948+
949+ var item = instanceItem.declaredFields[lookupName];
950+ if (item == null ) {
951+ return false ;
952+ }
953+
954+ var matchContext = MatchContext (parent: instanceMatchContext);
955+ if (! item.match (matchContext, field)) {
956+ return false ;
957+ }
958+
959+ _addMatchingElementItem (field, item, matchContext);
960+ return true ;
961+ }
962+
910963 void _matchInstanceElementStaticExecutables ({
911964 required MatchContext matchContext,
912965 required InstanceElementImpl2 element,
913966 required InstanceItem item,
914967 }) {
968+ for (var field in element.fields2) {
969+ if (! _matchInstanceElementField (
970+ instanceItem: item,
971+ instanceMatchContext: matchContext,
972+ field: field,
973+ )) {
974+ structureMismatched.add (field);
975+ }
976+ }
977+
915978 var executables = [
916979 ...element.getters2,
917980 ...element.methods2,
0 commit comments