mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java/groovy completion: suggest non-imported classes after new (IDEA-164468)
This commit is contained in:
@@ -76,12 +76,17 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
parameters.getInvocationCount() <= 1 &&
|
||||
JavaCompletionContributor.mayStartClassName(result) &&
|
||||
JavaCompletionContributor.isClassNamePossible(parameters) &&
|
||||
!JavaSmartCompletionContributor.AFTER_NEW.accepts(parameters.getPosition())) {
|
||||
!areNonImportedInheritorsAlreadySuggested(parameters)) {
|
||||
suggestNonImportedClasses(parameters, JavaCompletionSorting.addJavaSorting(parameters, result.withPrefixMatcher(tracker.betterMatcher)), session);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean areNonImportedInheritorsAlreadySuggested(@NotNull CompletionParameters parameters) {
|
||||
return JavaSmartCompletionContributor.AFTER_NEW.accepts(parameters.getPosition()) &&
|
||||
JavaSmartCompletionContributor.getExpectedTypes(parameters).length > 0;
|
||||
}
|
||||
|
||||
private static boolean suggestAllAnnotations(CompletionParameters parameters) {
|
||||
return psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiAnnotation.class).accepts(parameters.getPosition());
|
||||
}
|
||||
|
||||
+7
@@ -1735,4 +1735,11 @@ class Bar {
|
||||
assert 'Class<? extends Number>' == LookupElementPresentation.renderElement(myFixture.lookupElements[0]).typeText
|
||||
}
|
||||
|
||||
void testNonImportedClassAfterNew() {
|
||||
def uClass = myFixture.addClass('package foo; public class U {}')
|
||||
myFixture.configureByText('a.java', 'class X {{ new U<caret>x }}')
|
||||
myFixture.completeBasic()
|
||||
assert myFixture.lookupElements[0].object == uClass
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-1
@@ -64,13 +64,18 @@ public class GroovyNoVariantsDelegator extends CompletionContributor {
|
||||
JavaCompletionContributor.mayStartClassName(result) &&
|
||||
GrMainCompletionProvider.isClassNamePossible(parameters.getPosition()) &&
|
||||
!MapArgumentCompletionProvider.isMapKeyCompletion(parameters) &&
|
||||
!GroovySmartCompletionContributor.AFTER_NEW.accepts(parameters.getPosition())) {
|
||||
!areNonImportedInheritorsAlreadySuggested(parameters)) {
|
||||
result = result.withPrefixMatcher(tracker.betterMatcher);
|
||||
suggestNonImportedClasses(parameters, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean areNonImportedInheritorsAlreadySuggested(@NotNull CompletionParameters parameters) {
|
||||
return GroovySmartCompletionContributor.AFTER_NEW.accepts(parameters.getPosition()) &&
|
||||
GroovySmartCompletionContributor.getExpectedTypes(parameters).length > 0;
|
||||
}
|
||||
|
||||
private static void delegate(CompletionParameters parameters, CompletionResultSet result) {
|
||||
if (parameters.getCompletionType() == CompletionType.BASIC) {
|
||||
if (parameters.getInvocationCount() <= 1 &&
|
||||
|
||||
+7
-1
@@ -33,7 +33,6 @@ import org.jetbrains.plugins.groovy.codeStyle.GrReferenceAdjuster
|
||||
import org.jetbrains.plugins.groovy.codeStyle.GroovyCodeStyleSettings
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement
|
||||
import org.jetbrains.plugins.groovy.util.TestUtils
|
||||
|
||||
/**
|
||||
* @author Maxim.Medvedev
|
||||
*/
|
||||
@@ -1955,4 +1954,11 @@ class C implements T<String> {
|
||||
}
|
||||
''', '', CompletionType.BASIC, CompletionResult.contain, 1, 'public String quack')
|
||||
}
|
||||
|
||||
void "test non-imported class after new"() {
|
||||
def uClass = myFixture.addClass('package foo; public class U {}')
|
||||
configure('new U<caret>x')
|
||||
myFixture.completeBasic()
|
||||
assert myFixture.lookupElements[0].object == uClass
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user