mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-23 16:20:55 +07:00
This renames ValueBasedWarningsInspection to SynchronizeOnValueBasedClassInspection and alters the logic, it checks first the original type of the monitor and if it's not a value-based class then it employs DFA to infer the type more precisely and checks the inferred type if it differs from the type of the monitor. This solution is more robust, because DFA might fail sometimes. This patch also adds the suppressId to SynchronizeOnValueBasedClassInspection in order to support the new javac warning category. Signed-off-by: Nikita Eshkeev <nikita.eshkeev@jetbrains.com> GitOrigin-RevId: f7c3520b84bf6f9080280dc2689ff4f63ac4be09
30 lines
938 B
Java
30 lines
938 B
Java
import valuebased.classes.OpenValueBased;
|
|
|
|
class Main {
|
|
final OpenValueBased vb = new OpenValueBased();
|
|
{
|
|
final OpenValueBased localVb = new OpenValueBased();
|
|
final Object objectVb = new OpenValueBased();
|
|
|
|
synchronized (<warning descr="Attempt to synchronize on an instance of a value-based class">vb</warning>) {}
|
|
synchronized (<warning descr="Attempt to synchronize on an instance of a value-based class">localVb</warning>) {}
|
|
synchronized (<warning descr="Attempt to synchronize on an instance of a value-based class">objectVb</warning>) {}
|
|
synchronized (OpenValueBased.class) {}
|
|
f(vb);
|
|
g(vb);
|
|
}
|
|
|
|
void f(OpenValueBased vb) {
|
|
synchronized (<warning descr="Attempt to synchronize on an instance of a value-based class">vb</warning>) {}
|
|
}
|
|
|
|
void g(Object vb) {
|
|
synchronized (vb) {}
|
|
}
|
|
|
|
@SuppressWarnings("synchronization")
|
|
void h(OpenValueBased vb) {
|
|
synchronized (vb) {}
|
|
}
|
|
}
|