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 9234c5935332..d6f982f22825 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionData.java @@ -20,6 +20,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.TailTypeDecorator; import com.intellij.patterns.ElementPattern; import com.intellij.patterns.PsiElementPattern; import com.intellij.patterns.PsiJavaElementPattern; @@ -588,6 +589,15 @@ public class JavaCompletionData extends JavaAwareCompletionData{ result.addElement(createKeyword(position, PsiKeyword.TRUE)); result.addElement(createKeyword(position, PsiKeyword.FALSE)); } + + if (psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiExpressionStatement.class, PsiForStatement.class).accepts(position)) { + for (String primitiveType : PRIMITIVE_TYPES) { + if (!PsiKeyword.VOID.equals(primitiveType)) { + result.addElement(TailTypeDecorator.withTail(createKeyword(position, primitiveType), TailType.SPACE)); + } + } + } + } private static LookupElement createKeyword(PsiElement position, String keyword) { diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop.java new file mode 100644 index 000000000000..e5ce137ff829 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (boox) + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop2.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop2.java new file mode 100644 index 000000000000..aeb92e38e611 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop2.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (boox + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop3.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop3.java new file mode 100644 index 000000000000..1d38dea31754 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop3.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (final boox + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop4.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop4.java new file mode 100644 index 000000000000..9b777fe7d6c3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop4.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (final boox y + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop5.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop5.java new file mode 100644 index 000000000000..f2a1561dced3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop5.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (final boox y : z) + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop6.java b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop6.java new file mode 100644 index 000000000000..b6fa564edb7d --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/PrimitiveTypesInForLoop6.java @@ -0,0 +1,7 @@ +public class Foooo { + + { + for (final boox y = 0;;) + } + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 7fc0fd2b831c..2e3607a7a4b0 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -598,8 +598,25 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testCaseTailType() throws Throwable { doTest(); } + def doPrimitiveTypeTest() { + configure() + checkResultByFile(getTestName(false) + ".java"); + assertTrue 'boolean' in myFixture.lookupElementStrings + } + + private def configure() { + configureByFile(getTestName(false) + ".java") + } + + public void testPrimitiveTypesInForLoop() throws Throwable { doPrimitiveTypeTest() } + public void testPrimitiveTypesInForLoop2() throws Throwable { doPrimitiveTypeTest() } + public void testPrimitiveTypesInForLoop3() throws Throwable { doPrimitiveTypeTest() } + public void testPrimitiveTypesInForLoop4() throws Throwable { doPrimitiveTypeTest() } + public void testPrimitiveTypesInForLoop5() throws Throwable { doPrimitiveTypeTest() } + public void testPrimitiveTypesInForLoop6() throws Throwable { doPrimitiveTypeTest() } + public void testSecondInvocationToFillCommonPrefix() throws Throwable { - configureByFile(getTestName(false) + ".java"); + configure() type('a'); complete(); assertStringItems("fai1", "fai2", "fai3"); @@ -607,7 +624,7 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { } public void testSuggestInaccessibleOnSecondInvocation() throws Throwable { - configureByFile(getTestName(false) + ".java"); + configure() assertStringItems("_bar", "_goo"); complete(); assertStringItems("_bar", "_goo", "_foo"); @@ -637,18 +654,18 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testPropertyReferencePrefix() throws Throwable { myFixture.addFileToProject("test.properties", "foo.bar=Foo! Bar!").getVirtualFile(); - configureByFile(getTestName(false) + ".java"); + configure() checkResultByFile(getTestName(false) + ".java"); assertNull(getLookup()); } private void doTest() throws Exception { - configureByFile(getTestName(false) + ".java"); + configure() checkResultByFile(getTestName(false) + "_after.java"); } private void doAntiTest() throws Exception { - configureByFile(getTestName(false) + ".java"); + configure() checkResultByFile(getTestName(false) + ".java"); assertEmpty(myItems); assertNull(getLookup()); @@ -663,11 +680,9 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testDontCastInstanceofedQualifier() throws Throwable { doTest(); } public void testWildcardsInLookup() throws Exception { - configureByFile(getTestName(false) + ".java"); + configure() assertNotNull(getLookup()); - type('*'); - type('f'); - type('z'); + type('*fz'); final List list = getLookup().getItems(); assertEquals("azzzfzzz", list.get(0).getLookupString()); assertEquals("fzazzz", list.get(1).getLookupString()); @@ -680,7 +695,7 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase { public void testPrimitiveMethodParameter() throws Throwable { doTest(); } public void testRightShift() throws Throwable { - configureByFile(getTestName(false) + ".java"); + configure() assertStringItems("myField1", "myField2"); }