From 8cb1f63e657cca9bff85183a114bccde581007d5 Mon Sep 17 00:00:00 2001 From: Daniel Espendiller Date: Thu, 18 Dec 2025 11:51:05 +0100 Subject: [PATCH] fix php attribte on non existing use statement block --- ...pletionPopupHandlerCompletionConfidence.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/completion/PhpAttributeCompletionPopupHandlerCompletionConfidence.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/completion/PhpAttributeCompletionPopupHandlerCompletionConfidence.java index 083f4b4cf..60e397cfb 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/completion/PhpAttributeCompletionPopupHandlerCompletionConfidence.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/completion/PhpAttributeCompletionPopupHandlerCompletionConfidence.java @@ -8,8 +8,8 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiWhiteSpace; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ThreeState; +import com.jetbrains.php.lang.parser.PhpElementTypes; import com.jetbrains.php.lang.psi.PhpFile; import com.jetbrains.php.lang.psi.PhpPsiUtil; import com.jetbrains.php.lang.psi.elements.*; @@ -72,7 +72,7 @@ public static class PhpAttributeAutoPopupHandler extends TypedHandlerDelegate { } // Check if we're before a method, class, or field - if (getMethod(element) == null && getPhpClass(element) == null && getField(element) == null) { + if (getMethod(element) == null && getField(element) == null && getPhpClass(element) == null) { return Result.CONTINUE; } @@ -113,10 +113,21 @@ public static class PhpAttributeAutoPopupHandler extends TypedHandlerDelegate { public static @Nullable PhpClass getPhpClass(@NotNull PsiElement element) { if (element.getParent() instanceof PhpClass phpClass) { return phpClass; - } else if (PhpPsiUtil.getNextSiblingIgnoreWhitespace(element, true) instanceof PhpClass phpClass) { + } + + // with use statement given + PsiElement nextSiblingIgnoreWhitespace = PhpPsiUtil.getNextSiblingIgnoreWhitespace(element, true); + if (nextSiblingIgnoreWhitespace instanceof PhpClass phpClass) { return phpClass; } + // no use statements + if (nextSiblingIgnoreWhitespace != null && nextSiblingIgnoreWhitespace.getNode().getElementType() == PhpElementTypes.NON_LAZY_GROUP_STATEMENT) { + if (nextSiblingIgnoreWhitespace.getFirstChild() instanceof PhpClass phpClass) { + return phpClass; + } + } + return null; }