44
55import 'package:analysis_server/src/protocol_server.dart' as protocol;
66import 'package:analysis_server/src/services/search/search_engine.dart' ;
7- import 'package:analyzer/dart/element/element.dart' ;
7+ import 'package:analyzer/dart/element/element2.dart' ;
8+ import 'package:analyzer/src/utilities/extensions/element.dart' ;
89
910class ImplementedComputer {
1011 final SearchEngine searchEngine;
11- final CompilationUnitElement unitElement;
12+ final LibraryFragment unitElement;
1213
1314 List <protocol.ImplementedClass > classes = < protocol.ImplementedClass > [];
1415 List <protocol.ImplementedMember > members = < protocol.ImplementedMember > [];
@@ -18,33 +19,41 @@ class ImplementedComputer {
1819 ImplementedComputer (this .searchEngine, this .unitElement);
1920
2021 Future <void > compute () async {
21- for (var element in unitElement.classes ) {
22- await _computeForInterfaceElement (element);
22+ for (var fragment in unitElement.classes2 ) {
23+ await _computeForInterfaceElement (fragment. element);
2324 }
24- for (var element in unitElement.enums ) {
25- await _computeForInterfaceElement (element);
25+ for (var fragment in unitElement.enums2 ) {
26+ await _computeForInterfaceElement (fragment. element);
2627 }
27- for (var element in unitElement.extensionTypes ) {
28- await _computeForInterfaceElement (element);
28+ for (var fragment in unitElement.extensionTypes2 ) {
29+ await _computeForInterfaceElement (fragment. element);
2930 }
30- for (var element in unitElement.mixins ) {
31- await _computeForInterfaceElement (element);
31+ for (var fragment in unitElement.mixins2 ) {
32+ await _computeForInterfaceElement (fragment. element);
3233 }
3334 }
3435
35- void _addImplementedClass (InterfaceElement element) {
36- var offset = element.nameOffset;
37- var length = element.nameLength;
38- classes.add (protocol.ImplementedClass (offset, length));
36+ void _addImplementedClass (InterfaceElement2 element) {
37+ for (var fragment in element.fragments) {
38+ var offset = fragment.nameOffset2;
39+ var name = fragment.name2;
40+ if (offset != null && name != null ) {
41+ classes.add (protocol.ImplementedClass (offset, name.length));
42+ }
43+ }
3944 }
4045
41- void _addImplementedMember (Element member) {
42- var offset = member.nameOffset;
43- var length = member.nameLength;
44- members.add (protocol.ImplementedMember (offset, length));
46+ void _addImplementedMember (Element2 element) {
47+ for (var fragment in element.fragments) {
48+ var offset = fragment.nameOffset2;
49+ var name = fragment.name2;
50+ if (offset != null && name != null ) {
51+ members.add (protocol.ImplementedMember (offset, name.length));
52+ }
53+ }
4554 }
4655
47- void _addMemberIfImplemented (Element element) {
56+ void _addMemberIfImplemented (Element2 element) {
4857 if (element.isSynthetic || _isStatic (element)) {
4958 return ;
5059 }
@@ -53,36 +62,38 @@ class ImplementedComputer {
5362 }
5463 }
5564
56- Future <void > _computeForInterfaceElement (InterfaceElement element) async {
65+ Future <void > _computeForInterfaceElement (InterfaceElement2 element) async {
5766 // Always include Object and its members.
58- if (element is ClassElement && element.isDartCoreObject) {
67+ if (element is ClassElement2 && element.isDartCoreObject) {
5968 _addImplementedClass (element);
60- element.accessors.forEach (_addImplementedMember);
61- element.fields.forEach (_addImplementedMember);
62- element.methods.forEach (_addImplementedMember);
69+ element.getters2.forEach (_addImplementedMember);
70+ element.setters2.forEach (_addImplementedMember);
71+ element.fields2.forEach (_addImplementedMember);
72+ element.methods2.forEach (_addImplementedMember);
6373 return ;
6474 }
6575
6676 // Analyze subtypes.
67- subtypeMembers = await searchEngine.membersOfSubtypes (element);
77+ subtypeMembers = await searchEngine.membersOfSubtypes2 (element);
6878 if (subtypeMembers != null ) {
6979 _addImplementedClass (element);
70- element.accessors.forEach (_addMemberIfImplemented);
71- element.fields.forEach (_addMemberIfImplemented);
72- element.methods.forEach (_addMemberIfImplemented);
80+ element.getters2.forEach (_addMemberIfImplemented);
81+ element.setters2.forEach (_addMemberIfImplemented);
82+ element.fields2.forEach (_addMemberIfImplemented);
83+ element.methods2.forEach (_addMemberIfImplemented);
7384 }
7485 }
7586
76- bool _hasOverride (Element element) {
87+ bool _hasOverride (Element2 element) {
7788 var name = element.displayName;
7889 return subtypeMembers! .contains (name);
7990 }
8091
8192 /// Return `true` if the given [element] is a static element.
82- static bool _isStatic (Element element) {
83- if (element is ExecutableElement ) {
93+ static bool _isStatic (Element2 element) {
94+ if (element is ExecutableElement2 ) {
8495 return element.isStatic;
85- } else if (element is PropertyInducingElement ) {
96+ } else if (element is PropertyInducingElement2 ) {
8697 return element.isStatic;
8798 }
8899 return false ;
0 commit comments