From e48d09ba4a2b464c6bee571cc57df5f9dd43a8ec Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 14 Dec 2020 12:29:07 +0700 Subject: [PATCH] [java-dfa] Fix NPE reporting on array dimension, test (IJ-CR-4131) GitOrigin-RevId: 5d756d23f3c3c2bebd4f9e057093f41ccf38a362 --- .../codeInspection/dataFlow/NullabilityProblemKind.java | 6 ++++-- .../testData/inspection/dataFlow/fixture/InnerClass.java | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullabilityProblemKind.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullabilityProblemKind.java index b0ecb1004876..526f58f4c8e9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullabilityProblemKind.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/NullabilityProblemKind.java @@ -230,8 +230,10 @@ public final class NullabilityProblemKind { parent instanceof PsiSynchronizedStatement) { return fieldAccessNPE.problem(context, expression); } - if (parent instanceof PsiNewExpression && ((PsiNewExpression)parent).getQualifier() == context) { - return innerClassNPE.problem((PsiNewExpression)parent, expression); + if (parent instanceof PsiNewExpression) { + return ((PsiNewExpression)parent).getQualifier() == context ? + innerClassNPE.problem((PsiNewExpression)parent, expression) : + createUnboxingProblem(context, expression); // Array dimension } if (parent instanceof PsiPolyadicExpression) { PsiPolyadicExpression polyadic = (PsiPolyadicExpression)parent; diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/InnerClass.java b/java/java-tests/testData/inspection/dataFlow/fixture/InnerClass.java index b8f7482c2e71..08e25fb33ee4 100644 --- a/java/java-tests/testData/inspection/dataFlow/fixture/InnerClass.java +++ b/java/java-tests/testData/inspection/dataFlow/fixture/InnerClass.java @@ -8,4 +8,9 @@ class InnerClassTest { System.out.println(test.new Inner()); } + + void dimensionNotInnerClass() { + Integer x = null; + int[] data = new int[x]; + } } \ No newline at end of file