mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IG: care for lambda's in"Field accessed in both synchronized and unsynchronized contexts" inspection
This commit is contained in:
+8
@@ -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);
|
||||
|
||||
+8
@@ -4,12 +4,14 @@ public class FieldAccessedSynchronizedAndUnsynchronized
|
||||
{
|
||||
private final Object m_lock = new Object();
|
||||
private Object <warning descr="Field 'm_contents' is accessed in both synchronized and unsynchronized contexts">m_contents</warning> = new Object();
|
||||
private Object <warning descr="Field 'a' is accessed in both synchronized and unsynchronized contexts">a</warning>;
|
||||
|
||||
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 <warning descr="Field 'object' is accessed in both synchronized and unsynchronized contexts">object</warning>;
|
||||
|
||||
Reference in New Issue
Block a user