mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
[code vision] fix code vision for class without import statements
GitOrigin-RevId: 3b94cc3dfed368b929d2bd99394c1cec72e82f2b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1c608e169f
commit
6d1ebb177e
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user