14
14
import com .intellij .psi .impl .source .tree .AstBufferUtil ;
15
15
import com .jetbrains .lang .dart .DartLanguage ;
16
16
import com .jetbrains .lang .dart .DartTokenTypes ;
17
- import com .jetbrains .lang .dart .psi .*;
17
+ import com .jetbrains .lang .dart .psi .DartArgumentList ;
18
+ import com .jetbrains .lang .dart .psi .DartArguments ;
19
+ import com .jetbrains .lang .dart .psi .DartExpression ;
20
+ import com .jetbrains .lang .dart .psi .DartLiteralExpression ;
18
21
import io .flutter .FlutterBundle ;
19
22
import org .jetbrains .annotations .NotNull ;
20
23
import org .jetbrains .annotations .Nullable ;
@@ -35,6 +38,7 @@ public Color getColorFrom(@NotNull PsiElement element) {
35
38
if (element .getNode ().getElementType () != DartTokenTypes .IDENTIFIER ) return null ;
36
39
37
40
final String name = element .getText ();
41
+ if (!(name .equals ("Colors" ) || name .equals ("CupertinoColors" ) || name .equals ("Color" ))) return null ;
38
42
39
43
final PsiElement refExpr = topmostReferenceExpression (element );
40
44
if (refExpr == null ) return null ;
@@ -58,28 +62,6 @@ else if (parent.getNode().getElementType() == DartTokenTypes.SIMPLE_TYPE) {
58
62
return parseColorElements (parent , refExpr );
59
63
}
60
64
else {
61
- if (parent .getNode ().getElementType () == DartTokenTypes .VAR_INIT ||
62
- parent .getNode ().getElementType () == DartTokenTypes .FUNCTION_BODY ) {
63
- final PsiElement reference = resolveReferencedElement (refExpr );
64
- if (reference != null && reference .getLastChild () != null ) {
65
- Color tryParseColor = null ;
66
- if (reference instanceof DartCallExpression ) {
67
- final DartExpression expression = ((DartCallExpression )reference ).getExpression ();
68
- if (expression != null && expression .getLastChild () instanceof DartReferenceExpression ) {
69
- tryParseColor = parseColorElements (reference , expression );
70
- if (tryParseColor != null ) return tryParseColor ;
71
- }
72
- }
73
- final PsiElement lastChild = reference .getLastChild ();
74
- if (lastChild instanceof DartArguments && reference .getParent () != null ) {
75
- tryParseColor = parseColorElements (reference , reference .getParent ());
76
- }
77
- else {
78
- tryParseColor = parseColorElements (reference , reference .getLastChild ());
79
- }
80
- if (tryParseColor != null ) return tryParseColor ;
81
- }
82
- }
83
65
// name.equals(refExpr.getFirstChild().getText()) -> Colors.blue
84
66
final PsiElement idNode = refExpr .getFirstChild ();
85
67
if (idNode == null ) return null ;
@@ -100,36 +82,6 @@ else if (parent.getNode().getElementType() == DartTokenTypes.SIMPLE_TYPE) {
100
82
return null ;
101
83
}
102
84
103
- @ Nullable
104
- private PsiElement resolveReferencedElement (@ NotNull PsiElement element ) {
105
- if (element instanceof DartCallExpression && element .getFirstChild ().getText ().equals ("Color" )) {
106
- return element ;
107
- }
108
- final PsiElement symbol = element .getLastChild ();
109
- final PsiElement result ;
110
- if (symbol instanceof DartReference ) {
111
- result = ((DartReference )symbol ).resolve ();
112
- }
113
- else if (element instanceof DartReference ) {
114
- result = ((DartReference )element ).resolve ();
115
- }
116
- else {
117
- return null ;
118
- }
119
- if (!(result instanceof DartComponentName ) || result .getParent () == null ) return null ;
120
- final PsiElement declaration = result .getParent ().getParent ();
121
- if (!(declaration instanceof DartVarDeclarationList )) return null ;
122
- final PsiElement lastChild = declaration .getLastChild ();
123
- if (!(lastChild instanceof DartVarInit )) return null ;
124
-
125
- final PsiElement effectiveElement = lastChild .getLastChild ();
126
- // Recursively determine reference if the initialization is still a `DartReference`.
127
- if (effectiveElement instanceof DartReference && !(effectiveElement instanceof DartCallExpression )) {
128
- return resolveReferencedElement (effectiveElement );
129
- }
130
- return effectiveElement ;
131
- }
132
-
133
85
@ Nullable
134
86
private Color parseColorElements (@ NotNull PsiElement parent , @ NotNull PsiElement refExpr ) {
135
87
final PsiElement selectorNode = refExpr .getLastChild ();
@@ -270,4 +222,4 @@ private void replaceDouble(DartExpression expr, Double value) {
270
222
}
271
223
}
272
224
}
273
- }
225
+ }
0 commit comments