[code vision] fix code vision for class without import statements

GitOrigin-RevId: 3b94cc3dfed368b929d2bd99394c1cec72e82f2b
This commit is contained in:
Konstantin Ulitin
2022-07-28 17:52:12 +02:00
committed by intellij-monorepo-bot
parent 1c608e169f
commit 6d1ebb177e
3 changed files with 17 additions and 12 deletions

View File

@@ -65,7 +65,7 @@ public class JavaCodeVisionProvider implements InlayHintsProvider<JavaCodeVision
@Override
public boolean collect(@NotNull PsiElement element, @NotNull Editor editor, @NotNull InlayHintsSink sink) {
if (!(element instanceof PsiMember) || element instanceof PsiTypeParameter) return true;
if (!isFirstInLine(element)) return true;
if (!InlayHintsUtils.isFirstInLine(element)) return true;
PsiMember member = (PsiMember)element;
if (member.getName() == null) return true;
@@ -161,13 +161,6 @@ public class JavaCodeVisionProvider implements InlayHintsProvider<JavaCodeVision
}
return true;
}
private boolean isFirstInLine(PsiElement element) {
PsiElement prevSibling = element.getPrevSibling();
return ((prevSibling instanceof PsiWhiteSpace &&
(prevSibling.textContains('\n') || prevSibling.getTextRange().getStartOffset() == 0)) ||
element.getTextRange().getStartOffset() == 0);
}
};
}

View File

@@ -100,6 +100,18 @@ class A {
|}
""".trimMargin(), JavaReferencesCodeVisionProvider.ID)
fun testClassAfterPackageStatement() = doTest("""
package com.company;
<# block [1 usage] #>
class A{}
class B {
void use() {
new A();
}
}
""", JavaReferencesCodeVisionProvider.ID)
private fun doTest(text: String, vararg enabledProviderIds: String) {
testProviders(text, "test.java", *enabledProviderIds)
}

View File

@@ -16,6 +16,7 @@ import com.intellij.openapi.editor.markup.EffectType
import com.intellij.openapi.editor.markup.TextAttributesEffectsBuilder
import com.intellij.openapi.util.TextRange
import com.intellij.psi.*
import com.intellij.psi.util.PsiTreeUtil
import com.intellij.refactoring.suggested.endOffset
import com.intellij.refactoring.suggested.startOffset
import com.intellij.util.SmartList
@@ -283,9 +284,8 @@ object InlayHintsUtils {
@JvmStatic
fun isFirstInLine(element: PsiElement): Boolean {
val prevSibling = element.prevSibling
return prevSibling is PsiWhiteSpace &&
(prevSibling.textContains('\n') || prevSibling.getTextRange().startOffset == 0) ||
element.textRange.startOffset == 0
val prevLeaf = PsiTreeUtil.prevLeaf(element, true)
return prevLeaf == null ||
prevLeaf is PsiWhiteSpace && (prevLeaf.textContains('\n') || prevLeaf.textRange.startOffset == 0)
}
}