Java: Merge all MethodHandle/VarHandle checks into a single inspection (IDEA-172358, IDEA-171813, IDEA-167318)

This commit is contained in:
Pavel Dolgov
2017-05-11 15:16:31 +03:00
parent 9e6ebdaa44
commit d6cd98dc83
11 changed files with 175 additions and 138 deletions
@@ -30,7 +30,16 @@ class Main {
l.<warning descr="Field 'myString' is not static">findStaticVarHandle</warning>(Test.class, "myString", String.class);
l.<warning descr="Field 'ourString' is static">findVarHandle</warning>(Test.class, "ourString", String.class);
MethodHandles.arrayElementVarHandle(Test[].class);
MethodHandles.arrayElementVarHandle(int[].class);
MethodHandles.arrayElementVarHandle(cloneable().getClass());
MethodHandles.arrayElementVarHandle(<warning descr="Argument is not an array type">Test.class</warning>);
MethodHandles.arrayElementVarHandle(<warning descr="Argument is not an array type">int.class</warning>);
}
static Cloneable cloneable() {return null;}
}
class Test {
@@ -264,7 +264,7 @@ class Main {
void compare() throws Throwable {
MethodHandles.Lookup lookup = MethodHandles.lookup();
final VarHandle handle = lookup.findStaticVarHandle(Test.class, "myS", String.class);
final VarHandle handle = lookup.findStaticVarHandle(Test.class, "s", String.class);
final Test instance = new Test();
boolean exactCAS = handle.compareAndSet("a", "b");
@@ -289,7 +289,7 @@ class Main {
void weakCompare() throws Throwable {
MethodHandles.Lookup lookup = MethodHandles.lookup();
final VarHandle handle = lookup.findStaticVarHandle(Test.class, "myS", String.class);
final VarHandle handle = lookup.findStaticVarHandle(Test.class, "s", String.class);
final Test instance = new Test();
boolean exactCAS = handle.weakCompareAndSet("a", "b");
@@ -318,7 +318,7 @@ class Main {
void compare() throws Throwable {
MethodHandles.Lookup lookup = MethodHandles.lookup();
final VarHandle handle = lookup.findVarHandle(Test.class, "myS", String.class);
final VarHandle handle = lookup.findVarHandle(Test.class, "s", String.class);
final Test instance = new Test();
boolean exactCAS = handle.compareAndSet(instance, "a", "b");
@@ -343,7 +343,7 @@ class Main {
void weakCompare() throws Throwable {
MethodHandles.Lookup lookup = MethodHandles.lookup();
final VarHandle handle = lookup.findVarHandle(Test.class, "myS", String.class);
final VarHandle handle = lookup.findVarHandle(Test.class, "s", String.class);
final Test instance = new Test();
boolean exactCAS = handle.weakCompareAndSet(instance, "a", "b");