@@ -17,58 +17,38 @@ class EnclosingTypeParameterReferenceFlag {
1717 var library = builder.element;
1818 for (var topElement in library.children) {
1919 switch (topElement) {
20- case InstanceElementImpl ():
21- for (var field in topElement.fields) {
22- if (! field.isSynthetic || field.isEnumValues) {
23- var result = _hasTypeParameterReference (topElement, field.type);
24- field.hasEnclosingTypeParameterReference = result;
25- field.getter? .hasEnclosingTypeParameterReference = result;
26- field.setter? .hasEnclosingTypeParameterReference = result;
27- }
20+ case InstanceElementImpl instanceElement:
21+ bool hasTypeParameterReference (DartType type) {
22+ var visitor = _ReferencesTypeParameterVisitor (instanceElement);
23+ type.accept (visitor);
24+ return visitor.result;
2825 }
2926
30- var accessors = [...topElement.getters, ...topElement.setters];
31- for (var propertyAccessor in accessors) {
32- if (! propertyAccessor.isSynthetic) {
33- var result = _hasTypeParameterReference (
34- topElement,
35- propertyAccessor.type,
36- );
37- propertyAccessor.hasEnclosingTypeParameterReference = result;
38- if (propertyAccessor.variable case FieldElementImpl field) {
39- field.hasEnclosingTypeParameterReference = result;
40- }
41- }
27+ for (var field in instanceElement.fields) {
28+ var result = hasTypeParameterReference (field.type);
29+ field.hasEnclosingTypeParameterReference = result;
4230 }
4331
44- for (var method in topElement.methods) {
45- method.hasEnclosingTypeParameterReference =
46- _hasTypeParameterReference (topElement, method.type);
32+ var executables = [
33+ ...instanceElement.getters,
34+ ...instanceElement.setters,
35+ ...instanceElement.methods,
36+ ];
37+ for (var executable in executables) {
38+ var result = hasTypeParameterReference (executable.type);
39+ executable.hasEnclosingTypeParameterReference = result;
4740 }
4841 case PropertyAccessorElementImpl ():
4942 // Top-level accessors don't have type parameters.
50- if (! topElement.isSynthetic) {
51- topElement.hasEnclosingTypeParameterReference = false ;
52- }
43+ topElement.hasEnclosingTypeParameterReference = false ;
5344 case TopLevelVariableElementImpl ():
5445 // Top-level variables dont have type parameters.
55- if (! topElement.isSynthetic) {
56- topElement.getter? .hasEnclosingTypeParameterReference = false ;
57- topElement.setter? .hasEnclosingTypeParameterReference = false ;
58- }
46+ topElement.getter? .hasEnclosingTypeParameterReference = false ;
47+ topElement.setter? .hasEnclosingTypeParameterReference = false ;
5948 }
6049 }
6150 }
6251 }
63-
64- static bool _hasTypeParameterReference (
65- InstanceElementImpl instanceElement,
66- DartType type,
67- ) {
68- var visitor = _ReferencesTypeParameterVisitor (instanceElement);
69- type.accept (visitor);
70- return visitor.result;
71- }
7252}
7353
7454class _ReferencesTypeParameterVisitor extends RecursiveTypeVisitor {
0 commit comments