From cd66569b78069421c4089e3ba387b914f68bc8f7 Mon Sep 17 00:00:00 2001 From: m0rkeulv Date: Wed, 17 Apr 2024 21:33:55 +0200 Subject: [PATCH] show declearingCLass for enumValues when showing inlay hints --- ...HaxeInlayCaptureVariableHintsProvider.java | 12 +------ .../HaxeInlayEnumExtractorHintsProvider.java | 20 +----------- .../types/HaxeInlayFieldHintsProvider.java | 13 +------- .../types/HaxeInlayForLoopHintsProvider.java | 13 +------- .../HaxeInlayLocalVariableHintsProvider.java | 12 +------ .../HaxeInlayReturnTypeHintsProvider.java | 14 +++------ ...axeInlayUntypedParameterHintsProvider.java | 12 +------ .../hint/types/HaxeSharedBypassCollector.java | 31 +++++++++++++++++++ .../plugins/haxe/util/HaxeResolveUtil.java | 2 +- 9 files changed, 42 insertions(+), 87 deletions(-) create mode 100644 src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeSharedBypassCollector.java diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayCaptureVariableHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayCaptureVariableHintsProvider.java index 5afbf57f2..d27e3c0ca 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayCaptureVariableHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayCaptureVariableHintsProvider.java @@ -6,8 +6,6 @@ import com.intellij.plugins.haxe.model.type.*; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +18,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -44,13 +42,5 @@ private static void handleCaptureVarDeclarationHints(@NotNull PsiElement element } } } - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayEnumExtractorHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayEnumExtractorHintsProvider.java index cab2caec2..6ce861150 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayEnumExtractorHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayEnumExtractorHintsProvider.java @@ -6,12 +6,9 @@ import com.intellij.plugins.haxe.lang.psi.HaxeEnumExtractedValue; import com.intellij.plugins.haxe.lang.psi.HaxeEnumValueDeclaration; import com.intellij.plugins.haxe.lang.psi.HaxeParameterList; -import com.intellij.plugins.haxe.model.HaxeParameterModel; import com.intellij.plugins.haxe.model.type.*; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -25,7 +22,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -57,20 +54,5 @@ private static void handleEnumArgumentExtractorHints(@NotNull InlayTreeSink sink } } } - - - @NotNull - private static List MapParametersToModel(HaxeParameterList parameterList) { - return parameterList.getParameterList().stream().map(HaxeParameterModel::new).toList(); - } - - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayFieldHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayFieldHintsProvider.java index b0062189f..2c2a73465 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayFieldHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayFieldHintsProvider.java @@ -11,8 +11,6 @@ import com.intellij.plugins.haxe.model.type.ResultHolder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,7 +22,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -62,14 +60,5 @@ private static void handleFieldDeclarationHints(@NotNull PsiElement element, } } } - - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayForLoopHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayForLoopHintsProvider.java index d58309aa9..29babd39e 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayForLoopHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayForLoopHintsProvider.java @@ -3,12 +3,9 @@ import com.intellij.codeInsight.hints.declarative.*; import com.intellij.openapi.editor.Editor; import com.intellij.plugins.haxe.lang.psi.*; -import com.intellij.plugins.haxe.model.HaxeMethodModel; import com.intellij.plugins.haxe.model.type.*; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +17,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -69,13 +66,5 @@ private static void createInlayHint(@NotNull HaxeComponentName componentName,@No ); } } - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text( ":"+type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayLocalVariableHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayLocalVariableHintsProvider.java index b5e020008..0e85a0728 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayLocalVariableHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayLocalVariableHintsProvider.java @@ -6,8 +6,6 @@ import com.intellij.plugins.haxe.model.type.*; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +18,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -44,13 +42,5 @@ private static void handleLocalVarDeclarationHints(@NotNull InlayTreeSink sink, } } } - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayReturnTypeHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayReturnTypeHintsProvider.java index b9ad265b9..c6b0b3053 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayReturnTypeHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayReturnTypeHintsProvider.java @@ -9,8 +9,6 @@ import com.intellij.plugins.haxe.util.UsefulPsiTreeUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,7 +20,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -68,12 +66,8 @@ private void handleMethodDeclarationHints(InlayTreeSink sink, HaxeMethodDeclarat } - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } + + + } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayUntypedParameterHintsProvider.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayUntypedParameterHintsProvider.java index 39a5dd9dd..9d07c0a6b 100644 --- a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayUntypedParameterHintsProvider.java +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeInlayUntypedParameterHintsProvider.java @@ -9,8 +9,6 @@ import com.intellij.plugins.haxe.model.type.ResultHolder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -23,7 +21,7 @@ public InlayHintsCollector createCollector(@NotNull PsiFile file, @NotNull Edito return new TypeCollector(); } - private static class TypeCollector implements SharedBypassCollector { + private static class TypeCollector extends HaxeSharedBypassCollector { @Override public void collectFromElement(@NotNull PsiElement element, @NotNull InlayTreeSink sink) { @@ -48,13 +46,5 @@ private static void handleUntypedParameterHints(@NotNull HaxeParameter parameter } } } - - @NotNull - private static Function1 appendTypeTextToBuilder(ResultHolder type) { - return builder -> { - builder.text(":" + type.toPresentationString(), null); - return null; - }; - } } } diff --git a/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeSharedBypassCollector.java b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeSharedBypassCollector.java new file mode 100644 index 000000000..53a87e924 --- /dev/null +++ b/src/main/java/com/intellij/plugins/haxe/ide/hint/types/HaxeSharedBypassCollector.java @@ -0,0 +1,31 @@ +package com.intellij.plugins.haxe.ide.hint.types; + +import com.intellij.codeInsight.hints.declarative.PresentationTreeBuilder; +import com.intellij.codeInsight.hints.declarative.SharedBypassCollector; +import com.intellij.plugins.haxe.model.type.ResultHolder; +import com.intellij.plugins.haxe.model.type.SpecificEnumValueReference; +import kotlin.Unit; +import kotlin.jvm.functions.Function1; +import org.jetbrains.annotations.NotNull; + +public abstract class HaxeSharedBypassCollector implements SharedBypassCollector { + + @NotNull + protected static Function1 appendTypeTextToBuilder(ResultHolder type) { + return builder -> { + builder.text(":" + getPresentationText(type), null); + return null; + }; + } + + + protected static String getPresentationText(ResultHolder returnType) { + // we dont want to show enumValues as type info in inlays as its not an assignable type. + if (returnType.getType() instanceof SpecificEnumValueReference enumValueReference) { + return enumValueReference.getEnumClass().toPresentationString(); + }else { + return returnType.getType().toPresentationString(); + } + } + +} diff --git a/src/main/java/com/intellij/plugins/haxe/util/HaxeResolveUtil.java b/src/main/java/com/intellij/plugins/haxe/util/HaxeResolveUtil.java index bd049da94..ee60f4d85 100644 --- a/src/main/java/com/intellij/plugins/haxe/util/HaxeResolveUtil.java +++ b/src/main/java/com/intellij/plugins/haxe/util/HaxeResolveUtil.java @@ -1203,7 +1203,7 @@ private static HaxeClass tryResolveClassByQNameWhenGetQNameFail(@NotNull PsiElem } } } - if (result == null) result = matchesInImport.get(0); + if (result == null && !matchesInImport.isEmpty()) result = matchesInImport.get(0); } } if (result == null) result = searchInSamePackage(fileModel, className, false);