diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/VariableAccessVisitor.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/VariableAccessVisitor.java
index ccf65acb98df..e2f168608f1d 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/VariableAccessVisitor.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/VariableAccessVisitor.java
@@ -61,6 +61,14 @@ class VariableAccessVisitor extends JavaRecursiveElementVisitor {
m_inSynchronizedContext = wasInSync;
}
+ @Override
+ public void visitLambdaExpression(PsiLambdaExpression expression) {
+ final boolean wasInSync = m_inSynchronizedContext;
+ m_inSynchronizedContext = false;
+ super.visitLambdaExpression(expression);
+ m_inSynchronizedContext = wasInSync;
+ }
+
@Override
public void visitReferenceExpression(@NotNull PsiReferenceExpression ref) {
super.visitReferenceExpression(ref);
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/field_accessed_synchronized_and_unsynchronized/FieldAccessedSynchronizedAndUnsynchronized.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/field_accessed_synchronized_and_unsynchronized/FieldAccessedSynchronizedAndUnsynchronized.java
index 61e2e8a45bcd..1029047cff85 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/field_accessed_synchronized_and_unsynchronized/FieldAccessedSynchronizedAndUnsynchronized.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/field_accessed_synchronized_and_unsynchronized/FieldAccessedSynchronizedAndUnsynchronized.java
@@ -4,12 +4,14 @@ public class FieldAccessedSynchronizedAndUnsynchronized
{
private final Object m_lock = new Object();
private Object m_contents = new Object();
+ private Object a;
public void foo()
{
synchronized(m_lock)
{
m_contents = new Object();
+ a = new Object();
}
getContents();
}
@@ -24,6 +26,12 @@ public class FieldAccessedSynchronizedAndUnsynchronized
getContents();
}
+ public synchronized void g() {
+ Runnable r = () -> {
+ System.out.println(a);
+ };
+ }
+
}
class Test {
private Object object;