@@ -124,71 +124,75 @@ class LibraryManifestBuilder {
124124 element.typeParameters2,
125125 (typeParameters) {
126126 classItem.members.clear ();
127- _addStaticExecutables (
127+ _addInterfaceElementStaticExecutables (
128128 encodingContext: encodingContext,
129129 instanceElement: element,
130130 interfaceItem: classItem,
131131 );
132- _addInstanceExecutables (
132+ _addInterfaceElementInstanceExecutables (
133133 encodingContext: encodingContext,
134- element : element,
135- classItem : classItem,
134+ interfaceElement : element,
135+ interfaceItem : classItem,
136136 );
137137 },
138138 );
139139 }
140140
141- void _addInstanceExecutable ({
141+ void _addInstanceElementGetter ({
142142 required EncodeContext encodingContext,
143- required ClassItem instanceItem,
144- required Name nameObj,
145- required ExecutableElement2OrMember element,
143+ required InstanceItem instanceItem,
144+ required GetterElement2OrMember element,
146145 }) {
147- var lookupName = nameObj.name.asLookupName;
146+ var lookupName = element.lookupName? .asLookupName;
147+ if (lookupName == null ) {
148+ return ;
149+ }
150+
151+ var item = _getOrBuildElementItem (element, () {
152+ return InstanceItemGetterItem .fromElement (
153+ name: lookupName,
154+ id: ManifestItemId .generate (),
155+ context: encodingContext,
156+ element: element,
157+ );
158+ });
159+ instanceItem.members[lookupName] = item;
160+ }
148161
162+ void _addInstanceElementInstanceExecutable ({
163+ required EncodeContext encodingContext,
164+ required InstanceItem instanceItem,
165+ required ExecutableElement2OrMember element,
166+ }) {
149167 switch (element) {
150168 case GetterElement2OrMember ():
151- _addInstanceGetter (
169+ _addInstanceElementGetter (
152170 encodingContext: encodingContext,
153171 instanceItem: instanceItem,
154172 element: element,
155- lookupName: lookupName,
156173 );
157174 case MethodElement2OrMember ():
158- _addInstanceMethod (
175+ _addInstanceElementMethod (
159176 encodingContext: encodingContext,
160177 instanceItem: instanceItem,
161178 element: element,
162- lookupName: lookupName,
163179 );
164180 // TODO(scheglov): add setters support
165181 }
166182 }
167183
168- void _addInstanceExecutables ({
184+ void _addInstanceElementMethod ({
169185 required EncodeContext encodingContext,
170- required ClassElementImpl2 element ,
171- required ClassItem classItem ,
186+ required InstanceItem instanceItem ,
187+ required MethodElement2OrMember element ,
172188 }) {
173- var map = element.inheritanceManager.getInterface2 (element).map2;
174- for (var entry in map.entries) {
175- _addInstanceExecutable (
176- encodingContext: encodingContext,
177- instanceItem: classItem,
178- nameObj: entry.key,
179- element: entry.value,
180- );
189+ var lookupName = element.lookupName? .asLookupName;
190+ if (lookupName == null ) {
191+ return ;
181192 }
182- }
183193
184- void _addInstanceGetter ({
185- required EncodeContext encodingContext,
186- required ClassItem instanceItem,
187- required GetterElement2OrMember element,
188- required LookupName lookupName,
189- }) {
190194 var item = _getOrBuildElementItem (element, () {
191- return InstanceItemGetterItem .fromElement (
195+ return InstanceItemMethodItem .fromElement (
192196 name: lookupName,
193197 id: ManifestItemId .generate (),
194198 context: encodingContext,
@@ -198,29 +202,42 @@ class LibraryManifestBuilder {
198202 instanceItem.members[lookupName] = item;
199203 }
200204
201- void _addInstanceMethod ({
205+ void _addInstanceElementStaticExecutables ({
202206 required EncodeContext encodingContext,
203- required ClassItem instanceItem,
204- required MethodElement2OrMember element,
205- required LookupName lookupName,
207+ required InstanceElementImpl2 instanceElement,
208+ required InstanceItem instanceItem,
206209 }) {
207- var item = _getOrBuildElementItem (element, () {
208- return InstanceItemMethodItem .fromElement (
209- name: lookupName,
210- id: ManifestItemId .generate (),
211- context: encodingContext,
212- element: element,
213- );
214- });
215- instanceItem.members[lookupName] = item;
210+ for (var getter in instanceElement.getters2) {
211+ if (getter.isStatic) {
212+ _addInstanceElementGetter (
213+ encodingContext: encodingContext,
214+ instanceItem: instanceItem,
215+ element: getter,
216+ );
217+ }
218+ }
219+
220+ for (var method in instanceElement.methods2) {
221+ if (method.isStatic) {
222+ _addInstanceElementMethod (
223+ encodingContext: encodingContext,
224+ instanceItem: instanceItem,
225+ element: method,
226+ );
227+ }
228+ }
216229 }
217230
218- void _addInterfaceConstructor ({
231+ void _addInterfaceElementConstructor ({
219232 required EncodeContext encodingContext,
220- required ClassItem interfaceItem,
233+ required InterfaceItem interfaceItem,
221234 required ConstructorElementImpl2 element,
222- required LookupName lookupName,
223235 }) {
236+ var lookupName = element.lookupName? .asLookupName;
237+ if (lookupName == null ) {
238+ return ;
239+ }
240+
224241 var item = _getOrBuildElementItem (element, () {
225242 return InterfaceItemConstructorItem .fromElement (
226243 name: lookupName,
@@ -232,6 +249,42 @@ class LibraryManifestBuilder {
232249 interfaceItem.members[lookupName] = item;
233250 }
234251
252+ void _addInterfaceElementInstanceExecutables ({
253+ required EncodeContext encodingContext,
254+ required InterfaceElementImpl2 interfaceElement,
255+ required InterfaceItem interfaceItem,
256+ }) {
257+ var inheritance = interfaceElement.inheritanceManager;
258+ var map = inheritance.getInterface2 (interfaceElement).map2;
259+ for (var entry in map.entries) {
260+ _addInstanceElementInstanceExecutable (
261+ encodingContext: encodingContext,
262+ instanceItem: interfaceItem,
263+ element: entry.value,
264+ );
265+ }
266+ }
267+
268+ void _addInterfaceElementStaticExecutables ({
269+ required EncodeContext encodingContext,
270+ required InterfaceElementImpl2 instanceElement,
271+ required InterfaceItem interfaceItem,
272+ }) {
273+ for (var constructor in instanceElement.constructors2) {
274+ _addInterfaceElementConstructor (
275+ encodingContext: encodingContext,
276+ interfaceItem: interfaceItem,
277+ element: constructor,
278+ );
279+ }
280+
281+ _addInstanceElementStaticExecutables (
282+ encodingContext: encodingContext,
283+ instanceElement: instanceElement,
284+ instanceItem: interfaceItem,
285+ );
286+ }
287+
235288 void _addReExports () {
236289 for (var libraryElement in libraryElements) {
237290 var libraryUri = libraryElement.uri;
@@ -267,54 +320,6 @@ class LibraryManifestBuilder {
267320 }
268321 }
269322
270- void _addStaticExecutables ({
271- required EncodeContext encodingContext,
272- required InstanceElementImpl2 instanceElement,
273- required ClassItem interfaceItem,
274- }) {
275- if (instanceElement is InterfaceElementImpl2 ) {
276- for (var constructor in instanceElement.constructors2) {
277- var lookupName = constructor.name3? .asLookupName;
278- if (lookupName != null ) {
279- _addInterfaceConstructor (
280- encodingContext: encodingContext,
281- interfaceItem: interfaceItem,
282- element: constructor,
283- lookupName: lookupName,
284- );
285- }
286- }
287- }
288-
289- for (var getter in instanceElement.getters2) {
290- if (getter.isStatic) {
291- var lookupName = getter.name3? .asLookupName;
292- if (lookupName != null ) {
293- _addInstanceGetter (
294- encodingContext: encodingContext,
295- instanceItem: interfaceItem,
296- element: getter,
297- lookupName: lookupName,
298- );
299- }
300- }
301- }
302-
303- for (var method in instanceElement.methods2) {
304- if (method.isStatic) {
305- var lookupName = method.name3? .asLookupName;
306- if (lookupName != null ) {
307- _addInstanceMethod (
308- encodingContext: encodingContext,
309- instanceItem: interfaceItem,
310- element: method,
311- lookupName: lookupName,
312- );
313- }
314- }
315- }
316- }
317-
318323 void _addTopLevelFunction ({
319324 required EncodeContext encodingContext,
320325 required Map <LookupName , TopLevelItem > newItems,
0 commit comments