mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
always suggest non-imported annotations (IDEA-145447)
This commit is contained in:
@@ -34,7 +34,6 @@ import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.intellij.patterns.PsiJavaPatterns.psiClass;
|
||||
import static com.intellij.patterns.PsiJavaPatterns.psiElement;
|
||||
|
||||
/**
|
||||
@@ -60,7 +59,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
}
|
||||
};
|
||||
result.runRemainingContributors(parameters, tracker);
|
||||
final boolean empty = tracker.containsOnlyPackages || suggestMetaAnnotations(parameters);
|
||||
final boolean empty = tracker.containsOnlyPackages || suggestAllAnnotations(parameters);
|
||||
|
||||
if (!empty && parameters.getInvocationCount() == 0) {
|
||||
result.restartCompletionWhenNothingMatches();
|
||||
@@ -79,10 +78,8 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean suggestMetaAnnotations(CompletionParameters parameters) {
|
||||
PsiElement position = parameters.getPosition();
|
||||
return psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiAnnotation.class, PsiModifierList.class, PsiClass.class).accepts( position) &&
|
||||
psiElement().withSuperParent(4, psiClass().isAnnotationType()).accepts(position);
|
||||
private static boolean suggestAllAnnotations(CompletionParameters parameters) {
|
||||
return psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiAnnotation.class).accepts(parameters.getPosition());
|
||||
}
|
||||
|
||||
private static void delegate(CompletionParameters parameters, final CompletionResultSet result, final InheritorsHolder inheritorsHolder) {
|
||||
@@ -91,7 +88,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
suggestCollectionUtilities(parameters, result, position);
|
||||
|
||||
if (parameters.getInvocationCount() <= 1 &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestMetaAnnotations(parameters)) &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestAllAnnotations(parameters)) &&
|
||||
JavaCompletionContributor.isClassNamePossible(parameters)) {
|
||||
suggestNonImportedClasses(parameters, result, inheritorsHolder);
|
||||
return;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class Bar {
|
||||
int foo(@<caret>Object o1) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@interface XAnno {}
|
||||
+7
@@ -1155,6 +1155,13 @@ class XInternalError {}
|
||||
assertFirstStringItems "XInternalError", "XInternalTimerServiceController"
|
||||
}
|
||||
|
||||
public void testNonImportedAnnotationClass() {
|
||||
myFixture.addClass("package foo; public @interface XAnotherAnno {}")
|
||||
configure()
|
||||
type('X')
|
||||
assertFirstStringItems "XAnno", "XAnotherAnno"
|
||||
}
|
||||
|
||||
public void testMetaAnnotation() {
|
||||
myFixture.configureByText "a.java", "@<caret> @interface Anno {}"
|
||||
myFixture.complete(CompletionType.BASIC)
|
||||
|
||||
+4
-7
@@ -28,9 +28,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotation;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrAnnotationTypeDefinition;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -42,16 +40,15 @@ import java.util.Set;
|
||||
*/
|
||||
public class GroovyNoVariantsDelegator extends CompletionContributor {
|
||||
|
||||
private static boolean suggestMetaAnnotations(CompletionParameters parameters) {
|
||||
PsiElement position = parameters.getPosition();
|
||||
return PsiJavaPatterns.psiElement().withParents(GrCodeReferenceElement.class, GrAnnotation.class, GrModifierList.class, GrAnnotationTypeDefinition.class).accepts(position);
|
||||
private static boolean suggestAnnotations(CompletionParameters parameters) {
|
||||
return PsiJavaPatterns.psiElement().withParents(GrCodeReferenceElement.class, GrAnnotation.class).accepts(parameters.getPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fillCompletionVariants(@NotNull final CompletionParameters parameters, @NotNull CompletionResultSet result) {
|
||||
JavaNoVariantsDelegator.ResultTracker tracker = new JavaNoVariantsDelegator.ResultTracker(result);
|
||||
result.runRemainingContributors(parameters, tracker);
|
||||
final boolean empty = tracker.containsOnlyPackages || suggestMetaAnnotations(parameters);
|
||||
final boolean empty = tracker.containsOnlyPackages || suggestAnnotations(parameters);
|
||||
|
||||
if (!empty && parameters.getInvocationCount() == 0) {
|
||||
result.restartCompletionWhenNothingMatches();
|
||||
@@ -75,7 +72,7 @@ public class GroovyNoVariantsDelegator extends CompletionContributor {
|
||||
private static void delegate(CompletionParameters parameters, CompletionResultSet result) {
|
||||
if (parameters.getCompletionType() == CompletionType.BASIC) {
|
||||
if (parameters.getInvocationCount() <= 1 &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestMetaAnnotations(parameters)) &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestAnnotations(parameters)) &&
|
||||
GrMainCompletionProvider.isClassNamePossible(parameters.getPosition()) &&
|
||||
!MapArgumentCompletionProvider.isMapKeyCompletion(parameters)) {
|
||||
suggestNonImportedClasses(parameters, result);
|
||||
|
||||
Reference in New Issue
Block a user