From ca8bf138f89a68bcf341ee1b86475be50f03d31d Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 14 Aug 2018 13:33:26 +0200 Subject: [PATCH] infer nullity: don't drill inside classes on expressions processing (IDEA-197262) --- .../codeInspection/inferNullity/NullityInferrer.java | 12 ++++++++++++ .../nullityinferrer/afterFieldsAssignment.java | 7 +++++++ .../nullityinferrer/beforeFieldsAssignment.java | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/java/java-impl/src/com/intellij/codeInspection/inferNullity/NullityInferrer.java b/java/java-impl/src/com/intellij/codeInspection/inferNullity/NullityInferrer.java index a00948e074e4..4dfd3ce36b51 100644 --- a/java/java-impl/src/com/intellij/codeInspection/inferNullity/NullityInferrer.java +++ b/java/java-impl/src/com/intellij/codeInspection/inferNullity/NullityInferrer.java @@ -313,6 +313,12 @@ public class NullityInferrer { private boolean isNeverNull() { return neverNull; } + + @Override + public void visitClass(PsiClass aClass) { } + + @Override + public void visitLambdaExpression(PsiLambdaExpression expression) { } } private static boolean trunkImpossibleBrunch(PsiExpression condition, @@ -352,6 +358,12 @@ public class NullityInferrer { super.visitElement(element); } + @Override + public void visitClass(PsiClass aClass) { } + + @Override + public void visitLambdaExpression(PsiLambdaExpression expression) { } + @Override public void visitLiteralExpression(@NotNull PsiLiteralExpression expression) { sometimesNull = "null".equals(expression.getText()); diff --git a/java/java-tests/testData/codeInsight/nullityinferrer/afterFieldsAssignment.java b/java/java-tests/testData/codeInsight/nullityinferrer/afterFieldsAssignment.java index 90741ae88c95..3e389525e15d 100644 --- a/java/java-tests/testData/codeInsight/nullityinferrer/afterFieldsAssignment.java +++ b/java/java-tests/testData/codeInsight/nullityinferrer/afterFieldsAssignment.java @@ -37,6 +37,13 @@ class Test { final String myFoo12; @Nullable final String myFoo13 = null; + final Runnable myFoo14 = new Runnable() { + {foo();} + Object foo() { + return null; + } + public void run() {} + }; /** * {@link #myFoo6} diff --git a/java/java-tests/testData/codeInsight/nullityinferrer/beforeFieldsAssignment.java b/java/java-tests/testData/codeInsight/nullityinferrer/beforeFieldsAssignment.java index a7772aff997b..9a8f04ae5fba 100644 --- a/java/java-tests/testData/codeInsight/nullityinferrer/beforeFieldsAssignment.java +++ b/java/java-tests/testData/codeInsight/nullityinferrer/beforeFieldsAssignment.java @@ -26,6 +26,13 @@ class Test { final String myFoo11 = ""; final String myFoo12; final String myFoo13 = null; + final Runnable myFoo14 = new Runnable() { + {foo();} + Object foo() { + return null; + } + public void run() {} + }; /** * {@link #myFoo6}