Skip to content

Commit 4fdd13f

Browse files
committed
removing typeHints for resolver, seems like the resolver never utilize this code anymore.
1 parent 5f98f8b commit 4fdd13f

File tree

3 files changed

+36
-45
lines changed

3 files changed

+36
-45
lines changed

src/main/java/com/intellij/plugins/haxe/ide/annotator/semantics/HaxeAssignExpressionAnnotator.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import static com.intellij.plugins.haxe.ide.annotator.HaxeSemanticAnnotatorInspections.ASSIGNMENT_TYPE_COMPATIBILITY_CHECK;
2121
import static com.intellij.plugins.haxe.ide.annotator.HaxeStandardAnnotation.typeMismatch;
22-
import static com.intellij.plugins.haxe.lang.psi.HaxeResolver.typeHintKey;
2322

2423
public class HaxeAssignExpressionAnnotator implements Annotator {
2524
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
@@ -42,14 +41,7 @@ public static void check(HaxeAssignExpression psi, AnnotationHolder holder) {
4241

4342
ResultHolder lhsType = HaxeTypeResolver.getPsiElementType(lhs, psi, lhsResolver);
4443
rhsResolver.setAssignHint(lhsType.tryUnwrapNullType());
45-
// if class add type hinting for resolver
46-
if(lhsType.isClassType()){
47-
SpecificHaxeClassReference type = lhsType.getClassType();
48-
if(type != null && type.getHaxeClass() != null) {
49-
String qualifiedName = type.getHaxeClass().getQualifiedName();
50-
rhs.putUserData(typeHintKey, qualifiedName);
51-
}
52-
}
44+
5345
ResultHolder rhsType = HaxeTypeResolver.getPsiElementType(rhs, psi, rhsResolver);
5446

5547
// check if we try to assign to a method reference, if so its required ot be dynamic

src/main/java/com/intellij/plugins/haxe/lang/psi/HaxeResolver.java

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@
6767
@CustomLog
6868
public class HaxeResolver implements ResolveCache.AbstractResolver<HaxeReference, List<? extends PsiElement>> {
6969
public static final int MAX_DEBUG_MESSAGE_LENGTH = 200;
70-
public static final Key<String> typeHintKey = new Key<>("typeHint");
71-
private static final Key<Boolean> skipCacheKey = new Key<>("skipCache");
7270

7371
//static { // Remove when finished debugging.
7472
// LOG.setLevel(LogLevel.DEBUG);
@@ -103,8 +101,7 @@ public List<? extends PsiElement> resolve(@NotNull HaxeReference reference, bool
103101
// fail until the indices are complete), we don't want to cache the (likely incorrect)
104102
// results.
105103
boolean isDumb = DumbService.isDumb(reference.getProject());
106-
boolean hasTypeHint = checkForTypeHint(reference);
107-
boolean skipCaching = skipCachingForDebug || isDumb || hasTypeHint;
104+
boolean skipCaching = skipCachingForDebug || isDumb;
108105

109106
List<? extends PsiElement> elements = skipCaching ? doResolve(reference, incompleteCode)
110107
: ResolveCache.getInstance(reference.getProject())
@@ -132,20 +129,6 @@ public List<? extends PsiElement> resolve(@NotNull HaxeReference reference, bool
132129
return elements == null ? EMPTY_LIST : elements;
133130
}
134131

135-
//TODO until we have type hints everywhere we need to skip caching for those refrences that rely on typeHints
136-
private boolean checkForTypeHint(HaxeReference reference) {
137-
if (reference.getUserData(typeHintKey) != null ) return true;
138-
if (reference.getParent() instanceof HaxeCallExpression expression) {
139-
if (expression.getUserData(typeHintKey) != null ) return true;
140-
}
141-
return false;
142-
}
143-
144-
private boolean isResolving(@NotNull HaxeReference reference) {
145-
Stack<PsiElement> stack = referencesProcessing.get();
146-
return stack.contains(reference);
147-
}
148-
149132

150133
@Nullable
151134
private List<? extends PsiElement> doResolve(@NotNull HaxeReference reference, boolean incompleteCode) {
@@ -182,6 +165,17 @@ private List<? extends PsiElement> doResolveInner(@NotNull HaxeReference referen
182165
resolves.incrementAndGet();
183166
}
184167

168+
try {
169+
if (reference.getParent().getParent().getParent().textMatches(":Array<ClassField>")) { // OR
170+
int i = 0;
171+
}
172+
if (reference.getParent().getParent().getParent().textMatches("::Map<String,Bool>")) {
173+
int i = 0;
174+
}
175+
}catch (Exception e) {
176+
177+
}
178+
185179
if (reference instanceof HaxeLiteralExpression || reference instanceof HaxeConstantExpression) {
186180
if (!(reference instanceof HaxeRegularExpression || reference instanceof HaxeStringLiteralExpression)) {
187181
return EMPTY_LIST;
@@ -232,23 +226,6 @@ private List<? extends PsiElement> doResolveInner(@NotNull HaxeReference referen
232226
if(matchesInImport.size()> 1 && reference.getParent() instanceof HaxeCallExpression callExpression) {
233227
int expectedSize = Optional.ofNullable(callExpression.getExpressionList()).map(e -> e.getExpressionList().size()).orElse(0);
234228

235-
// check type hinting for enumValues
236-
for (PsiElement importElement : matchesInImport) {
237-
if (importElement.getParent() instanceof HaxeEnumValueDeclaration enumValueDeclaration) {
238-
PsiElement typeHintPsi = reference;
239-
240-
if (reference.getParent() instanceof HaxeCallExpression expression) {
241-
typeHintPsi = expression;
242-
}
243-
String currentQname = enumValueDeclaration.getContainingClass().getQualifiedName();
244-
String data = typeHintPsi.getUserData(typeHintKey);
245-
if (currentQname != null && currentQname.equals(data)) {
246-
LogResolution(reference, "via import & typeHintKey");
247-
return List.of(importElement);
248-
}
249-
}
250-
}
251-
252229
// test call expression if possible
253230
for (PsiElement importElement : matchesInImport) {
254231
if (importElement.getParent() instanceof HaxeEnumValueDeclarationConstructor enumValueDeclaration) {
@@ -299,6 +276,28 @@ private List<? extends PsiElement> doResolveInner(@NotNull HaxeReference referen
299276
String message = "caching result for :" + referenceText;
300277
traceAs(log, HaxeDebugUtil.getCallerStackFrame(), message);
301278
}
279+
280+
try {
281+
if (reference.getParent().getParent().getParent().textMatches(":Array<ClassField>")) {
282+
if(result != null && !result.isEmpty()) {
283+
PsiElement first = result.getFirst();
284+
if(!first.textMatches("Array")) {
285+
int i = 0;
286+
}
287+
}
288+
}
289+
if (reference.getParent().getParent().getParent().textMatches(":Map<String,Bool>")) {
290+
if(result != null && !result.isEmpty()) {
291+
PsiElement first = result.getFirst();
292+
if(!first.textMatches("Map")) {
293+
int i = 0;
294+
}
295+
}
296+
}
297+
}catch (Exception e) {
298+
299+
}
300+
302301
return result;
303302

304303
}

src/main/java/com/intellij/plugins/haxe/model/evaluator/HaxeExpressionEvaluatorHandlers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ else if (subelement instanceof HaxeFieldDeclaration fieldDeclaration) {
358358
if (init != null) {
359359
HaxeExpression initExpression = init.getExpression();
360360
HaxeGenericResolver initResolver = HaxeGenericResolverUtil.generateResolverFromScopeParents(initExpression);
361-
typeHolder = HaxeTypeResolver.getFieldOrMethodReturnType((AbstractHaxeNamedComponent)subelement, initResolver);
361+
typeHolder = HaxeTypeResolver.getFieldOrMethodReturnType(fieldDeclaration, initResolver);
362362
}
363363
else {
364364
HaxeTypeTag tag = fieldDeclaration.getTypeTag();

0 commit comments

Comments
 (0)