4
4
5
5
import 'package:analyzer/dart/element/element.dart' ;
6
6
import 'package:analyzer/src/dart/element/element.dart' ;
7
- import 'package:analyzer/src/dart/element/inheritance_manager3.dart' ;
8
7
import 'package:analyzer/src/dart/resolver/scope.dart' ;
9
8
import 'package:analyzer/src/fine/library_manifest.dart' ;
10
9
import 'package:analyzer/src/fine/lookup_name.dart' ;
@@ -564,77 +563,6 @@ class RequirementsManifest {
564
563
return null ;
565
564
}
566
565
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
-
638
566
void record_classElement_allSubtypes ({required ClassElementImpl2 element}) {
639
567
// TODO(scheglov): implement.
640
568
}
@@ -653,6 +581,22 @@ class RequirementsManifest {
653
581
// TODO(scheglov): implement.
654
582
}
655
583
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
+
656
600
void record_instanceElement_getField ({
657
601
required InstanceElementImpl2 element,
658
602
required String name,
@@ -722,6 +666,61 @@ class RequirementsManifest {
722
666
requirements.requestedSetters[methodName] = methodId;
723
667
}
724
668
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
+
725
724
void record_propertyAccessorElement_variable ({
726
725
required PropertyAccessorElementImpl2 element,
727
726
required String ? name,
0 commit comments