[Java. Logging] Simplify logic of JvmLoggerCompletionContributor

IDEA-359199

GitOrigin-RevId: 946fcfa18dedd03905e6f8a638ae0a86c3515b75
This commit is contained in:
Georgii Ustinov
2024-09-16 13:23:23 +03:00
committed by intellij-monorepo-bot
parent 23585b1e10
commit 507ae5bd17
5 changed files with 15 additions and 26 deletions

View File

@@ -5,36 +5,21 @@ import com.intellij.lang.logging.JvmLogger
import com.intellij.openapi.module.ModuleUtil
import com.intellij.patterns.PlatformPatterns.psiElement
import com.intellij.patterns.StandardPatterns
import com.intellij.psi.*
import com.intellij.psi.PsiReferenceExpression
import com.intellij.util.ProcessingContext
import com.siyeh.ig.psiutils.ExpressionUtils
class JvmLoggerCompletionContributor : CompletionContributor() {
init {
extend(CompletionType.BASIC,
StandardPatterns.or(
psiElement()
.withSuperParent(2, PsiExpressionStatement::class.java)
.afterLeaf(StandardPatterns.or(
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.SEMICOLON),
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.COLON),
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.LBRACE),
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.RBRACE),
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.ARROW),
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.RPARENTH).and(
StandardPatterns.or(
psiElement().withParent(PsiIfStatement::class.java),
psiElement().withParent(PsiForStatement::class.java),
psiElement().withParent(PsiForeachStatement::class.java),
psiElement().withParent(PsiWhileStatement::class.java)
)
)
)),
psiElement().withSuperParent(2, PsiLambdaExpression::class.java).afterLeaf(
psiElement(PsiJavaToken::class.java).withElementType(JavaTokenType.ARROW)
)
),
psiElement().withParent(PsiReferenceExpression::class.java)),
object : CompletionProvider<CompletionParameters>() {
override fun addCompletions(parameters: CompletionParameters, context: ProcessingContext, result: CompletionResultSet) {
val parent = parameters.position.parent ?: return
if (parent !is PsiReferenceExpression ||
!ExpressionUtils.isVoidContext(parent) ||
JavaKeywordCompletion.isInstanceofPlace(parameters.position)) return
val javaResultWithSorting = JavaCompletionSorting.addJavaSorting(parameters, result)
val module = ModuleUtil.findModuleForFile(parameters.originalFile) ?: return
val availableLoggers = JvmLogger.findSuitableLoggers(module, true)

View File

@@ -1,10 +1,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.function.Consumer;
public class A {
private static final Logger log = LoggerFactory.getLogger(A.class);
void foo() {
Consumer<String> s = (param) -> log<caret>
Consumer<String> s = (String param) -> log<caret>
}
}

View File

@@ -6,7 +6,7 @@ public class A {
public static void main(String[] args) {
String x = "";
String s = switch(x) {
switch(x) {
case "name" -> log<caret>
default -> "String";
};

View File

@@ -1,5 +1,7 @@
import java.util.function.Consumer;
public class A {
void foo() {
Consumer<String> s = (param) -> lo<caret>
Consumer<String> s = (String param) -> lo<caret>
}
}

View File

@@ -1,7 +1,7 @@
public class A {
public static void main(String[] args) {
String x = "";
String s = switch(x) {
switch(x) {
case "name" -> lo<caret>
default -> "String";
};