44
55import 'package:analyzer/dart/element/element.dart' ;
66import 'package:analyzer/src/dart/element/element.dart' ;
7- import 'package:analyzer/src/dart/element/inheritance_manager3.dart' ;
87import 'package:analyzer/src/dart/resolver/scope.dart' ;
98import 'package:analyzer/src/fine/library_manifest.dart' ;
109import 'package:analyzer/src/fine/lookup_name.dart' ;
@@ -564,77 +563,6 @@ class RequirementsManifest {
564563 return null ;
565564 }
566565
567- void notify_interfaceElement_getNamedConstructor ({
568- required InterfaceElementImpl2 element,
569- required String name,
570- }) {
571- var itemRequirements = _getInterfaceItem (element);
572- if (itemRequirements == null ) {
573- return ;
574- }
575-
576- var item = itemRequirements.item;
577- var requirements = itemRequirements.requirements;
578-
579- var constructorName = name.asLookupName;
580- var constructorId = item.getConstructorId (constructorName);
581- requirements.constructors[constructorName] = constructorId;
582- }
583-
584- /// This method is invoked by [InheritanceManager3] to notify the collector
585- /// that a member with [nameObj] was requested from the [element] .
586- void notifyInterfaceRequest ({
587- required InterfaceElementImpl2 element,
588- required Name nameObj,
589- required ExecutableElement ? methodElement,
590- }) {
591- // Skip private names, cannot be used outside this library.
592- if (! nameObj.isPublic) {
593- return ;
594- }
595-
596- var itemRequirements = _getInterfaceItem (element);
597- if (itemRequirements == null ) {
598- return ;
599- }
600-
601- var item = itemRequirements.item;
602- var requirements = itemRequirements.requirements;
603-
604- var methodName = nameObj.name.asLookupName;
605- var methodId = item.getInterfaceMethodId (methodName);
606- requirements.methods[methodName] = methodId;
607-
608- // Check for consistency between the actual interface and manifest.
609- if (methodElement != null ) {
610- if (methodId == null ) {
611- var qName = _qualifiedMethodName (element, methodName);
612- throw StateError ('Expected ID for $qName ' );
613- }
614- } else {
615- if (methodId != null ) {
616- var qName = _qualifiedMethodName (element, methodName);
617- throw StateError ('Expected no ID for $qName ' );
618- }
619- }
620-
621- requirements.methods[methodName] = methodId;
622- }
623-
624- /// This method is invoked by an import scope to notify the collector that
625- /// the name [nameStr] was requested from [importedLibrary] .
626- void notifyRequest ({
627- required LibraryElementImpl importedLibrary,
628- required String nameStr,
629- }) {
630- if (importedLibrary.manifest case var manifest? ) {
631- var uri = importedLibrary.uri;
632- var nameToId = topLevels[uri] ?? = {};
633- var name = nameStr.asLookupName;
634- nameToId[name] = manifest.getExportedId (name);
635- }
636- }
637-
638566 void record_classElement_allSubtypes ({required ClassElementImpl2 element}) {
639567 // TODO(scheglov): implement.
640568 }
@@ -653,6 +581,22 @@ class RequirementsManifest {
653581 // TODO(scheglov): implement.
654582 }
655583
584+ /// Record that [id] was looked up in the import prefix scope that
585+ /// imports [importedLibraries] .
586+ void record_importPrefixScope_lookup ({
587+ required List <LibraryElementImpl > importedLibraries,
588+ required String id,
589+ }) {
590+ var lookupName = id.asLookupName;
591+ for (var importedLibrary in importedLibraries) {
592+ if (importedLibrary.manifest case var manifest? ) {
593+ var uri = importedLibrary.uri;
594+ var nameToId = topLevels[uri] ?? = {};
595+ nameToId[lookupName] = manifest.getExportedId (lookupName);
596+ }
597+ }
598+ }
599+
656600 void record_instanceElement_getField ({
657601 required InstanceElementImpl2 element,
658602 required String name,
@@ -722,6 +666,61 @@ class RequirementsManifest {
722666 requirements.requestedSetters[methodName] = methodId;
723667 }
724668
669+ /// Record that a member with [nameObj] was requested from the interface
670+ /// of [element] . The [methodElement] is used for consistency checking.
671+ void record_interface_getMember ({
672+ required InterfaceElementImpl2 element,
673+ required Name nameObj,
674+ required ExecutableElement ? methodElement,
675+ }) {
676+ // Skip private names, cannot be used outside this library.
677+ if (! nameObj.isPublic) {
678+ return ;
679+ }
680+
681+ var itemRequirements = _getInterfaceItem (element);
682+ if (itemRequirements == null ) {
683+ return ;
684+ }
685+
686+ var item = itemRequirements.item;
687+ var requirements = itemRequirements.requirements;
688+
689+ var methodName = nameObj.name.asLookupName;
690+ var methodId = item.getInterfaceMethodId (methodName);
691+ requirements.methods[methodName] = methodId;
692+
693+ // Check for consistency between the actual interface and manifest.
694+ if (methodElement != null ) {
695+ if (methodId == null ) {
696+ var qName = _qualifiedMethodName (element, methodName);
697+ throw StateError ('Expected ID for $qName ' );
698+ }
699+ } else {
700+ if (methodId != null ) {
701+ var qName = _qualifiedMethodName (element, methodName);
702+ throw StateError ('Expected no ID for $qName ' );
703+ }
704+ }
705+ }
706+
707+ void record_interfaceElement_getNamedConstructor ({
708+ required InterfaceElementImpl2 element,
709+ required String name,
710+ }) {
711+ var itemRequirements = _getInterfaceItem (element);
712+ if (itemRequirements == null ) {
713+ return ;
714+ }
715+
716+ var item = itemRequirements.item;
717+ var requirements = itemRequirements.requirements;
718+
719+ var constructorName = name.asLookupName;
720+ var constructorId = item.getConstructorId (constructorName);
721+ requirements.constructors[constructorName] = constructorId;
722+ }
723+
725724 void record_propertyAccessorElement_variable ({
726725 required PropertyAccessorElementImpl2 element,
727726 required String ? name,
0 commit comments