diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java
index b6960f0a5e8e..1b057a829cb9 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/NullableStuffInspectionBase.java
@@ -38,12 +38,16 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import static com.intellij.patterns.PsiJavaPatterns.psiElement;
+import static com.intellij.patterns.PsiJavaPatterns.psiMethod;
+
public class NullableStuffInspectionBase extends BaseJavaBatchLocalInspectionTool {
// deprecated fields remain to minimize changes to users inspection profiles (which are often located in version control).
@Deprecated @SuppressWarnings({"WeakerAccess"}) public boolean REPORT_NULLABLE_METHOD_OVERRIDES_NOTNULL = true;
@@ -283,7 +287,7 @@ public class NullableStuffInspectionBase extends BaseJavaBatchLocalInspectionToo
for (PsiExpression rhs : initializers) {
if (rhs instanceof PsiReferenceExpression) {
PsiElement target = ((PsiReferenceExpression)rhs).resolve();
- if (target instanceof PsiParameter && target.isPhysical()) {
+ if (isConstructorParameter(target) && target.isPhysical()) {
PsiParameter parameter = (PsiParameter)target;
if (REPORT_NOT_ANNOTATED_GETTER && !manager.hasNullability(parameter) && !TypeConversionUtil.isPrimitiveAndNotNull(parameter.getType())) {
final PsiIdentifier nameIdentifier = parameter.getNameIdentifier();
@@ -318,6 +322,10 @@ public class NullableStuffInspectionBase extends BaseJavaBatchLocalInspectionToo
}
}
+ private static boolean isConstructorParameter(@Nullable PsiElement parameter) {
+ return parameter instanceof PsiParameter && psiElement(PsiParameterList.class).withParent(psiMethod().constructor(true)).accepts(parameter.getParent());
+ }
+
@NotNull
private static String getPresentableAnnoName(@NotNull PsiModifierListOwner owner) {
NullableNotNullManager manager = NullableNotNullManager.getInstance(owner.getProject());
diff --git a/java/java-tests/testData/inspection/nullableProblems/NotNullFieldInitializedInLambda.java b/java/java-tests/testData/inspection/nullableProblems/NotNullFieldInitializedInLambda.java
new file mode 100644
index 000000000000..c0065aa9415e
--- /dev/null
+++ b/java/java-tests/testData/inspection/nullableProblems/NotNullFieldInitializedInLambda.java
@@ -0,0 +1,24 @@
+import org.jetbrains.annotations.*;
+
+class Test {
+ @NotNull Object member;
+ @NotNull Object member2;
+
+ public Test(Object p) {
+ I i = param -> {
+ member = param;
+ };
+ I i2 = new I() {
+ @Override
+ public void foo(Object param) {
+ member2 = param;
+ }
+ };
+ i.foo(p);
+ i2.foo(p);
+ }
+}
+
+interface I {
+ void foo(Object param);
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/NullableStuffInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/NullableStuffInspectionTest.java
index 1aa9ce489f96..fcfe18cf1bb8 100644
--- a/java/java-tests/testSrc/com/intellij/codeInspection/NullableStuffInspectionTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInspection/NullableStuffInspectionTest.java
@@ -69,6 +69,7 @@ public class NullableStuffInspectionTest extends LightCodeInsightFixtureTestCase
public void testNotNullCustomException() throws Exception{ doTest(); }
public void testNotNullFieldNotInitialized() throws Exception{ doTest(); }
+ public void testNotNullFieldInitializedInLambda() { doTest(); }
public void testNotNullFieldNotInitializedInOneConstructor() { doTest(); }
public void testNotNullFieldNotInitializedSetting() {
myInspection.REQUIRE_NOTNULL_FIELDS_INITIALIZED = false;