diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/guess/impl/GuessManagerImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/guess/impl/GuessManagerImpl.java index ae1959c9cb6f..ad3f24e8adb9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/guess/impl/GuessManagerImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/guess/impl/GuessManagerImpl.java @@ -340,6 +340,9 @@ public class GuessManagerImpl extends GuessManager { @NotNull @Override public List getControlFlowExpressionTypeConjuncts(@NotNull PsiExpression expr) { + if (expr.getType() instanceof PsiPrimitiveType) { + return Collections.emptyList(); + } List result = null; PsiExpression place = PsiUtil.skipParenthesizedExprDown(expr); if (place == null) return Collections.emptyList(); @@ -413,6 +416,9 @@ public class GuessManagerImpl extends GuessManager { private void handleAssignment(@Nullable PsiExpression expression) { if (expression == null) return; PsiType type = expression.getType(); + if (type instanceof PsiPrimitiveType) { + type = ((PsiPrimitiveType)type).getBoxedType(expression); + } PsiType rawType = type instanceof PsiClassType ? ((PsiClassType)type).rawType() : type; if (rawType == null || rawType.equals(PsiType.NULL)) return; if (mySpecificType == null) { diff --git a/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral.java b/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral.java new file mode 100644 index 000000000000..44fed7a10349 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral.java @@ -0,0 +1,6 @@ +class Foo { + void test() { + Number x = 10; + return x.lon + } +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral_after.java b/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral_after.java new file mode 100644 index 000000000000..d5685ad20c74 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/AssignmentPrimitiveLiteral_after.java @@ -0,0 +1,6 @@ +class Foo { + void test() { + Number x = 10; + return x.longValue() + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionDfaTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionDfaTest.groovy index 5fe82b6a5939..a676336654c9 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionDfaTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionDfaTest.groovy @@ -47,6 +47,7 @@ class NormalCompletionDfaTest extends NormalCompletionTestCase { void testAssignmentTwicePreciseTypeDfa() { doTest() } void testAssignmentParameterDfa() { doTest() } void testAssignmentNoPreciseTypeDfa() { doTest() } + void testAssignmentPrimitiveLiteral() { doTest() } void testDeclarationPreciseTypeDfa() { doTest() } void testInstanceOfAssignmentDfa() { doTest() } void testStreamDfa() { doTest() }