4
4
5
5
import 'package:analysis_server/src/protocol_server.dart' as protocol;
6
6
import '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' ;
8
9
9
10
class ImplementedComputer {
10
11
final SearchEngine searchEngine;
11
- final CompilationUnitElement unitElement;
12
+ final LibraryFragment unitElement;
12
13
13
14
List <protocol.ImplementedClass > classes = < protocol.ImplementedClass > [];
14
15
List <protocol.ImplementedMember > members = < protocol.ImplementedMember > [];
@@ -18,33 +19,41 @@ class ImplementedComputer {
18
19
ImplementedComputer (this .searchEngine, this .unitElement);
19
20
20
21
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);
23
24
}
24
- for (var element in unitElement.enums ) {
25
- await _computeForInterfaceElement (element);
25
+ for (var fragment in unitElement.enums2 ) {
26
+ await _computeForInterfaceElement (fragment. element);
26
27
}
27
- for (var element in unitElement.extensionTypes ) {
28
- await _computeForInterfaceElement (element);
28
+ for (var fragment in unitElement.extensionTypes2 ) {
29
+ await _computeForInterfaceElement (fragment. element);
29
30
}
30
- for (var element in unitElement.mixins ) {
31
- await _computeForInterfaceElement (element);
31
+ for (var fragment in unitElement.mixins2 ) {
32
+ await _computeForInterfaceElement (fragment. element);
32
33
}
33
34
}
34
35
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
+ }
39
44
}
40
45
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
+ }
45
54
}
46
55
47
- void _addMemberIfImplemented (Element element) {
56
+ void _addMemberIfImplemented (Element2 element) {
48
57
if (element.isSynthetic || _isStatic (element)) {
49
58
return ;
50
59
}
@@ -53,36 +62,38 @@ class ImplementedComputer {
53
62
}
54
63
}
55
64
56
- Future <void > _computeForInterfaceElement (InterfaceElement element) async {
65
+ Future <void > _computeForInterfaceElement (InterfaceElement2 element) async {
57
66
// Always include Object and its members.
58
- if (element is ClassElement && element.isDartCoreObject) {
67
+ if (element is ClassElement2 && element.isDartCoreObject) {
59
68
_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);
63
73
return ;
64
74
}
65
75
66
76
// Analyze subtypes.
67
- subtypeMembers = await searchEngine.membersOfSubtypes (element);
77
+ subtypeMembers = await searchEngine.membersOfSubtypes2 (element);
68
78
if (subtypeMembers != null ) {
69
79
_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);
73
84
}
74
85
}
75
86
76
- bool _hasOverride (Element element) {
87
+ bool _hasOverride (Element2 element) {
77
88
var name = element.displayName;
78
89
return subtypeMembers! .contains (name);
79
90
}
80
91
81
92
/// 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 ) {
84
95
return element.isStatic;
85
- } else if (element is PropertyInducingElement ) {
96
+ } else if (element is PropertyInducingElement2 ) {
86
97
return element.isStatic;
87
98
}
88
99
return false ;
0 commit comments