From 18a6cf6a1b3a159f6504754127a5679d0d00d4e8 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 15 Oct 2012 17:04:43 +0200 Subject: [PATCH] suggest primitive types in generics (IDEA-92940) --- .../codeInsight/completion/JavaCompletionData.java | 14 +++++++++++--- .../completion/keywords/intInGenerics.java | 7 +++++++ .../completion/keywords/intInGenerics2.java | 7 +++++++ .../completion/KeywordCompletionTest.java | 2 ++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/completion/keywords/intInGenerics.java create mode 100644 java/java-tests/testData/codeInsight/completion/keywords/intInGenerics2.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java index 6ca14f343b6e..ce09e552c4c0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -599,6 +599,10 @@ public class JavaCompletionData extends JavaAwareCompletionData { } private static void addPrimitiveTypes(CompletionResultSet result, PsiElement position) { + if (AFTER_DOT.accepts(position)) { + return; + } + boolean inCast = psiElement() .afterLeaf(psiElement().withText("(").withParent(psiElement(PsiParenthesizedExpression.class, PsiTypeCastExpression.class))) .accepts(position); @@ -606,22 +610,26 @@ 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 inGenerics = PsiTreeUtil.getParentOfType(position, PsiReferenceParameterList.class) != null; if (START_FOR.accepts(position) || - isInsideParameterList(position) && !AFTER_DOT.accepts(position) || + isInsideParameterList(position) || + inGenerics || VARIABLE_AFTER_FINAL.accepts(position) || inCast || declaration || typeFragment || expressionPosition || isStatementPosition(position)) { + boolean needSpace = !inCast && !typeFragment && !expressionPosition && !inGenerics; for (String primitiveType : PRIMITIVE_TYPES) { LookupElement keyword = createKeyword(position, primitiveType); - result.addElement(inCast || typeFragment || expressionPosition ? keyword : new OverrideableSpace(keyword, TailType.HUMBLE_SPACE_BEFORE_WORD)); + result.addElement(needSpace ? new OverrideableSpace(keyword, TailType.HUMBLE_SPACE_BEFORE_WORD) : keyword); } } if (declaration) { result.addElement(new OverrideableSpace(createKeyword(position, PsiKeyword.VOID), TailType.HUMBLE_SPACE_BEFORE_WORD)); - } else if (typeFragment && ((PsiTypeCodeFragment)position.getContainingFile()).isVoidValid()) { + } + else if (typeFragment && ((PsiTypeCodeFragment)position.getContainingFile()).isVoidValid()) { result.addElement(createKeyword(position, PsiKeyword.VOID)); } } diff --git a/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics.java b/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics.java new file mode 100644 index 000000000000..e821893a28bd --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics.java @@ -0,0 +1,7 @@ +import java.lang.Object; + +public class Util { + int goo() { + Pair> + } +} diff --git a/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics2.java b/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics2.java new file mode 100644 index 000000000000..b9ef32697013 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/keywords/intInGenerics2.java @@ -0,0 +1,7 @@ +import java.lang.Object; + +public class Util { + int goo() { + Pair + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java index 747417d2771a..055daa7ed0c2 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/KeywordCompletionTest.java @@ -110,6 +110,8 @@ public class KeywordCompletionTest extends LightCompletionTestCase { public void testIntInClassArray() throws Throwable { doTest(2, "int", "char", "final"); } public void testIntInClassArray2() throws Throwable { doTest(2, "int", "char", "final"); } public void testIntInClassArray3() throws Throwable { doTest(2, "int", "char", "final"); } + public void testIntInGenerics() throws Throwable { doTest(2, "int", "char", "final"); } + public void testIntInGenerics2() throws Throwable { doTest(2, "int", "char", "final"); } public void testTryInExpression() throws Exception { configureByFile(BASE_PATH + "/" + getTestName(true) + ".java");