mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
suggest primitive type arrays after new
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.TailTypes;
|
||||
import com.intellij.codeInsight.completion.util.ParenthesesInsertHandler;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupItem;
|
||||
import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
|
||||
import com.intellij.codeInsight.lookup.TailTypeDecorator;
|
||||
import com.intellij.patterns.ElementPattern;
|
||||
import com.intellij.patterns.PsiJavaElementPattern;
|
||||
@@ -612,6 +613,17 @@ public class JavaCompletionData extends JavaAwareCompletionData {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean afterNew = psiElement().afterLeaf(
|
||||
psiElement().withText(PsiKeyword.NEW).andNot(psiElement().afterLeaf(PsiKeyword.THROW, "."))).accepts(position);
|
||||
if (afterNew) {
|
||||
PsiElementFactory factory = JavaPsiFacade.getElementFactory(position.getProject());
|
||||
for (String primitiveType : PRIMITIVE_TYPES) {
|
||||
result.addElement(PsiTypeLookupItem.createLookupItem(factory.createTypeFromText(primitiveType + "[]", null), null));
|
||||
}
|
||||
result.addElement(PsiTypeLookupItem.createLookupItem(factory.createTypeFromText("void[]", null), null));
|
||||
return;
|
||||
}
|
||||
|
||||
boolean inCast = psiElement()
|
||||
.afterLeaf(psiElement().withText("(").withParent(psiElement(PsiParenthesizedExpression.class, PsiTypeCastExpression.class)))
|
||||
.accepts(position);
|
||||
@@ -619,8 +631,6 @@ public class JavaCompletionData extends JavaAwareCompletionData {
|
||||
boolean typeFragment = position.getContainingFile() instanceof PsiTypeCodeFragment && PsiTreeUtil.prevVisibleLeaf(position) == null;
|
||||
boolean declaration = DECLARATION_START.accepts(position);
|
||||
boolean expressionPosition = isExpressionPosition(position);
|
||||
boolean afterNew = psiElement().afterLeaf(
|
||||
psiElement().withText(PsiKeyword.NEW).andNot(psiElement().afterLeaf(PsiKeyword.THROW, "."))).accepts(position);
|
||||
boolean inGenerics = PsiTreeUtil.getParentOfType(position, PsiReferenceParameterList.class) != null;
|
||||
if (START_FOR.accepts(position) ||
|
||||
isInsideParameterList(position) ||
|
||||
@@ -629,7 +639,6 @@ public class JavaCompletionData extends JavaAwareCompletionData {
|
||||
inCast ||
|
||||
declaration ||
|
||||
typeFragment ||
|
||||
afterNew ||
|
||||
expressionPosition ||
|
||||
isStatementPosition(position)) {
|
||||
for (String primitiveType : PRIMITIVE_TYPES) {
|
||||
|
||||
+5
-1
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.editorActions.CompletionAutoPopupHandler
|
||||
import com.intellij.codeInsight.lookup.Lookup
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||
import com.intellij.codeInsight.lookup.LookupManager
|
||||
import com.intellij.codeInsight.lookup.PsiTypeLookupItem
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.codeInsight.template.impl.TemplateManagerImpl
|
||||
import com.intellij.ide.DataManager
|
||||
@@ -1331,7 +1332,10 @@ class Foo {
|
||||
}
|
||||
}
|
||||
'''
|
||||
type 'int['
|
||||
type 'int'
|
||||
myFixture.assertPreferredCompletionItems 0, 'int', 'Integer'
|
||||
assert ((PsiTypeLookupItem) myFixture.lookupElements[0]).bracketsCount == 1
|
||||
type '['
|
||||
myFixture.checkResult '''
|
||||
class Foo {
|
||||
void foo() {
|
||||
|
||||
Reference in New Issue
Block a user