< prev index next >

test/java/lang/invoke/VarHandles/VarHandleTestMethodTypeInt.java

Print this page

        

*** 40,56 **** import static org.testng.Assert.*; import static java.lang.invoke.MethodType.*; public class VarHandleTestMethodTypeInt extends VarHandleBaseTest { ! static final int static_final_v = 1; ! static int static_v = 1; ! final int final_v = 1; ! int v = 1; VarHandle vhFinalField; VarHandle vhField; --- 40,56 ---- import static org.testng.Assert.*; import static java.lang.invoke.MethodType.*; public class VarHandleTestMethodTypeInt extends VarHandleBaseTest { ! static final int static_final_v = 0x01234567; ! static int static_v = 0x01234567; ! final int final_v = 0x01234567; ! int v = 0x01234567; VarHandle vhFinalField; VarHandle vhField;
*** 150,176 **** // Set // Incorrect argument types checkNPE(() -> { // null receiver ! vh.set(null, 1); }); checkCCE(() -> { // receiver reference class ! vh.set(Void.class, 1); }); checkWMTE(() -> { // value reference class vh.set(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.set(0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(recv, 1, Void.class); }); // GetVolatile // Incorrect argument types --- 150,176 ---- // Set // Incorrect argument types checkNPE(() -> { // null receiver ! vh.set(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! vh.set(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class vh.set(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.set(0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(recv, 0x01234567, Void.class); }); // GetVolatile // Incorrect argument types
*** 200,226 **** // SetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setVolatile(null, 1); }); checkCCE(() -> { // receiver reference class ! vh.setVolatile(Void.class, 1); }); checkWMTE(() -> { // value reference class vh.setVolatile(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setVolatile(0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(recv, 1, Void.class); }); // GetOpaque // Incorrect argument types --- 200,226 ---- // SetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setVolatile(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! vh.setVolatile(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setVolatile(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setVolatile(0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(recv, 0x01234567, Void.class); }); // GetOpaque // Incorrect argument types
*** 250,276 **** // SetOpaque // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setOpaque(null, 1); }); checkCCE(() -> { // receiver reference class ! vh.setOpaque(Void.class, 1); }); checkWMTE(() -> { // value reference class vh.setOpaque(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setOpaque(0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(recv, 1, Void.class); }); // GetAcquire // Incorrect argument types --- 250,276 ---- // SetOpaque // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setOpaque(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! vh.setOpaque(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setOpaque(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setOpaque(0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(recv, 0x01234567, Void.class); }); // GetAcquire // Incorrect argument types
*** 300,644 **** // SetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setRelease(null, 1); }); checkCCE(() -> { // receiver reference class ! vh.setRelease(Void.class, 1); }); checkWMTE(() -> { // value reference class vh.setRelease(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setRelease(0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(recv, 1, Void.class); }); // CompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.compareAndSet(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.compareAndSet(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.compareAndSet(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(recv, 1, 1, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSet(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSet(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSet(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(recv, 1, 1, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetVolatile(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetVolatile(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(recv, 1, 1, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetAcquire(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetAcquire(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(recv, 1, 1, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetRelease(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetRelease(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(recv, 1, 1, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeVolatile(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(recv, 1, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeVolatile(0, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(recv, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(recv, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(recv, 1, 1, Void.class); }); // CompareAndExchangeVolatileAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeAcquire(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(recv, 1, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeAcquire(0, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(recv, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(recv, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(recv, 1, 1, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeRelease(null, 1, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(recv, 1, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeRelease(0, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(recv, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(recv, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(recv, 1, 1, Void.class); }); // GetAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.getAndSet(null, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.getAndSet(Void.class, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.getAndSet(0, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(recv, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(recv, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(recv, 1, Void.class); }); // GetAndAdd // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.getAndAdd(null, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.getAndAdd(Void.class, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.getAndAdd(0, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(recv, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(recv, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(recv, 1, Void.class); }); // AddAndGet // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.addAndGet(null, 1); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.addAndGet(Void.class, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.addAndGet(0, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(recv, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(recv, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(recv, 1, Void.class); }); } static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeInt recv, Handles hs) throws Throwable { for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET)) { --- 300,644 ---- // SetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! vh.setRelease(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! vh.setRelease(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setRelease(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setRelease(0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(recv, 0x01234567, Void.class); }); // CompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.compareAndSet(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.compareAndSet(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.compareAndSet(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(recv, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSet(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSet(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSet(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(recv, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetVolatile(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetVolatile(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(recv, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetAcquire(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetAcquire(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(recv, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetRelease(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetRelease(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(recv, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeVolatile(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeVolatile(0, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(recv, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(recv, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(recv, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeVolatileAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeAcquire(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeAcquire(0, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(recv, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(recv, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(recv, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeRelease(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.compareAndExchangeRelease(0, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(recv, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(recv, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(recv, 0x01234567, 0x01234567, Void.class); }); // GetAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.getAndSet(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.getAndSet(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.getAndSet(0, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(recv, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(recv, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(recv, 0x01234567, Void.class); }); // GetAndAdd // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.getAndAdd(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.getAndAdd(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.getAndAdd(0, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(recv, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(recv, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(recv, 0x01234567, Void.class); }); // AddAndGet // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.addAndGet(null, 0x01234567); }); checkCCE(() -> { // receiver reference class ! int x = (int) vh.addAndGet(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class ! int x = (int) vh.addAndGet(0, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(recv, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(recv, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(recv, 0x01234567, Void.class); }); } static void testInstanceFieldWrongMethodType(VarHandleTestMethodTypeInt recv, Handles hs) throws Throwable { for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET)) {
*** 677,856 **** for (TestAccessMode am : testAccessModesOfType(TestAccessType.SET)) { // Incorrect argument types checkNPE(() -> { // null receiver hs.get(am, methodType(void.class, Void.class, int.class)). ! invoke(null, 1); }); checkCCE(() -> { // receiver reference class hs.get(am, methodType(void.class, Class.class, int.class)). ! invoke(Void.class, 1); }); checkWMTE(() -> { // value reference class hs.get(am, methodType(void.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class hs.get(am, methodType(void.class, int.class, int.class)). ! invoke(0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null receiver boolean r = (boolean) hs.get(am, methodType(boolean.class, Void.class, int.class, int.class)). ! invoke(null, 1, 1); }); checkCCE(() -> { // receiver reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class, int.class)). ! invoke(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, Class.class, int.class)). ! invoke(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class , int.class, int.class)). ! invoke(0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class, int.class, Class.class)). ! invoke(recv, 1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 1, 1); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 1, 1); }); checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class, int.class)). ! invoke(recv, Void.class, 1); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 1, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class , int.class, int.class)). ! invoke(0, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class , int.class, int.class)). ! invoke(recv, 1, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class , int.class, int.class)). ! invoke(recv, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class, int.class, Class.class)). ! invoke(recv, 1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)). ! invoke(null, 1); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 1); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class)). ! invoke(0, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)). ! invoke(null, 1); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 1); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class)). ! invoke(0, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 1, Void.class); }); } } --- 677,856 ---- for (TestAccessMode am : testAccessModesOfType(TestAccessType.SET)) { // Incorrect argument types checkNPE(() -> { // null receiver hs.get(am, methodType(void.class, Void.class, int.class)). ! invoke(null, 0x01234567); }); checkCCE(() -> { // receiver reference class hs.get(am, methodType(void.class, Class.class, int.class)). ! invoke(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class hs.get(am, methodType(void.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // receiver primitive class hs.get(am, methodType(void.class, int.class, int.class)). ! invoke(0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null receiver boolean r = (boolean) hs.get(am, methodType(boolean.class, Void.class, int.class, int.class)). ! invoke(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, Class.class, int.class)). ! invoke(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class , int.class, int.class)). ! invoke(0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class, int.class, Class.class)). ! invoke(recv, 0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class, int.class)). ! invoke(recv, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class, Class.class)). ! invoke(recv, 0x01234567, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class , int.class, int.class)). ! invoke(0, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class , int.class, int.class)). ! invoke(recv, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class , int.class, int.class)). ! invoke(recv, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class, int.class, Class.class)). ! invoke(recv, 0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)). ! invoke(null, 0x01234567); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class)). ! invoke(0, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)). ! invoke(null, 0x01234567); }); checkCCE(() -> { // receiver reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, Class.class)). invoke(recv, Void.class); }); checkWMTE(() -> { // reciever primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class)). ! invoke(0, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, VarHandleTestMethodTypeInt.class, int.class)). ! invoke(recv, 0x01234567, Void.class); }); } }
*** 877,887 **** // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(1, Void.class); }); // GetVolatile // Incorrect return type --- 877,887 ---- // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(0x01234567, Void.class); }); // GetVolatile // Incorrect return type
*** 904,914 **** // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(1, Void.class); }); // GetOpaque // Incorrect return type --- 904,914 ---- // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(0x01234567, Void.class); }); // GetOpaque // Incorrect return type
*** 931,941 **** // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(1, Void.class); }); // GetAcquire // Incorrect return type --- 931,941 ---- // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(0x01234567, Void.class); }); // GetAcquire // Incorrect return type
*** 958,1187 **** // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(1, Void.class); }); // CompareAndSet // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(1, 1, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(1, 1, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(1, 1, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(1, 1, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(1, 1, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(1, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(1, 1, Void.class); }); // CompareAndExchangeAcquire // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(1, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(1, 1, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(1, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(1, 1, Void.class); }); // GetAndSet // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(1, Void.class); }); // GetAndAdd // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(1, Void.class); }); // AddAndGet // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(1, Void.class); }); } static void testStaticFieldWrongMethodType(Handles hs) throws Throwable { int i = 0; --- 958,1187 ---- // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(0x01234567, Void.class); }); // CompareAndSet // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(0x01234567, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeAcquire // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(0x01234567, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(0x01234567, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(0x01234567, 0x01234567, Void.class); }); // GetAndSet // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(0x01234567, Void.class); }); // GetAndAdd // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(0x01234567, Void.class); }); // AddAndGet // Incorrect argument types checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(0x01234567, Void.class); }); } static void testStaticFieldWrongMethodType(Handles hs) throws Throwable { int i = 0;
*** 1213,1273 **** hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, int.class, Class.class)). ! invoke(1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class)). ! invoke(Void.class, 1); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, Class.class)). ! invoke(1, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class, Class.class)). ! invoke(1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { // Incorrect argument types checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 1); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(1, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class, int.class)). ! invoke(1, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class)). ! invoke(1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, int.class, Class.class)). ! invoke(1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { // Incorrect argument types --- 1213,1273 ---- hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, int.class, Class.class)). ! invoke(0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class)). ! invoke(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, Class.class)). ! invoke(0x01234567, Void.class); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class, Class.class)). ! invoke(0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { // Incorrect argument types checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class)). ! invoke(Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(0x01234567, Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class, int.class)). ! invoke(0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class)). ! invoke(0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, int.class, Class.class)). ! invoke(0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { // Incorrect argument types
*** 1276,1299 **** invoke(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class)). ! invoke(1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class)). ! invoke(1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { // Incorrect argument types --- 1276,1299 ---- invoke(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class)). ! invoke(0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class)). ! invoke(0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { // Incorrect argument types
*** 1302,1333 **** invoke(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class)). ! invoke(1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class)). ! invoke(1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(1, Void.class); }); } } static void testArrayWrongMethodType(VarHandle vh) throws Throwable { int[] array = new int[10]; ! Arrays.fill(array, 1); // Get // Incorrect argument types checkNPE(() -> { // null array int x = (int) vh.get(null, 0); --- 1302,1333 ---- invoke(Void.class); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int.class)). ! invoke(0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int.class)). ! invoke(0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int.class, Class.class)). ! invoke(0x01234567, Void.class); }); } } static void testArrayWrongMethodType(VarHandle vh) throws Throwable { int[] array = new int[10]; ! Arrays.fill(array, 0x01234567); // Get // Incorrect argument types checkNPE(() -> { // null array int x = (int) vh.get(null, 0);
*** 1358,1387 **** // Set // Incorrect argument types checkNPE(() -> { // null array ! vh.set(null, 0, 1); }); checkCCE(() -> { // array reference class ! vh.set(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class vh.set(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.set(0, 0, 1); }); checkWMTE(() -> { // index reference class ! vh.set(array, Void.class, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(array, 0, 1, Void.class); }); // GetVolatile // Incorrect argument types --- 1358,1387 ---- // Set // Incorrect argument types checkNPE(() -> { // null array ! vh.set(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! vh.set(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class vh.set(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.set(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! vh.set(array, Void.class, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.set(); }); checkWMTE(() -> { // > ! vh.set(array, 0, 0x01234567, Void.class); }); // GetVolatile // Incorrect argument types
*** 1414,1443 **** // SetVolatile // Incorrect argument types checkNPE(() -> { // null array ! vh.setVolatile(null, 0, 1); }); checkCCE(() -> { // array reference class ! vh.setVolatile(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class vh.setVolatile(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setVolatile(0, 0, 1); }); checkWMTE(() -> { // index reference class ! vh.setVolatile(array, Void.class, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(array, 0, 1, Void.class); }); // GetOpaque // Incorrect argument types --- 1414,1443 ---- // SetVolatile // Incorrect argument types checkNPE(() -> { // null array ! vh.setVolatile(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! vh.setVolatile(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setVolatile(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setVolatile(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! vh.setVolatile(array, Void.class, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setVolatile(); }); checkWMTE(() -> { // > ! vh.setVolatile(array, 0, 0x01234567, Void.class); }); // GetOpaque // Incorrect argument types
*** 1470,1499 **** // SetOpaque // Incorrect argument types checkNPE(() -> { // null array ! vh.setOpaque(null, 0, 1); }); checkCCE(() -> { // array reference class ! vh.setOpaque(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class vh.setOpaque(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setOpaque(0, 0, 1); }); checkWMTE(() -> { // index reference class ! vh.setOpaque(array, Void.class, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(array, 0, 1, Void.class); }); // GetAcquire // Incorrect argument types --- 1470,1499 ---- // SetOpaque // Incorrect argument types checkNPE(() -> { // null array ! vh.setOpaque(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! vh.setOpaque(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setOpaque(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setOpaque(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! vh.setOpaque(array, Void.class, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setOpaque(); }); checkWMTE(() -> { // > ! vh.setOpaque(array, 0, 0x01234567, Void.class); }); // GetAcquire // Incorrect argument types
*** 1526,1912 **** // SetRelease // Incorrect argument types checkNPE(() -> { // null array ! vh.setRelease(null, 0, 1); }); checkCCE(() -> { // array reference class ! vh.setRelease(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class vh.setRelease(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setRelease(0, 0, 1); }); checkWMTE(() -> { // index reference class ! vh.setRelease(array, Void.class, 1); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(array, 0, 1, Void.class); }); // CompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.compareAndSet(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.compareAndSet(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.compareAndSet(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! boolean r = vh.compareAndSet(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(array, 0, 1, 1, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSet(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSet(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSet(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSet(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(array, 0, 1, 1, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetVolatile(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetVolatile(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetVolatile(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(array, 0, 1, 1, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetAcquire(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetAcquire(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetAcquire(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(array, 0, 1, 1, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetRelease(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetRelease(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetRelease(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(array, 0, 1, 1, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeVolatile(null, 0, 1, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(array, 0, 1, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeVolatile(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeVolatile(array, Void.class, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(array, 0, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(array, 0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(array, 0, 1, 1, Void.class); }); // CompareAndExchangeAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeAcquire(null, 0, 1, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(array, 0, 1, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeAcquire(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeAcquire(array, Void.class, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(array, 0, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(array, 0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(array, 0, 1, 1, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeRelease(null, 0, 1, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(array, 0, 1, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeRelease(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeRelease(array, Void.class, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(array, 0, 1, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(array, 0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(array, 0, 1, 1, Void.class); }); // GetAndSet // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.getAndSet(null, 0, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.getAndSet(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(array, 0, Void.class); }); checkWMTE(() -> { // reciarrayever primitive class ! int x = (int) vh.getAndSet(0, 0, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.getAndSet(array, Void.class, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(array, 0, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(array, 0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(array, 0, 1, Void.class); }); // GetAndAdd // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.getAndAdd(null, 0, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.getAndAdd(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.getAndAdd(0, 0, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.getAndAdd(array, Void.class, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(array, 0, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(array, 0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(array, 0, 1, Void.class); }); // AddAndGet // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.addAndGet(null, 0, 1); }); checkCCE(() -> { // array reference class ! int x = (int) vh.addAndGet(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.addAndGet(0, 0, 1); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.addAndGet(array, Void.class, 1); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(array, 0, 1); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(array, 0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(array, 0, 1, Void.class); }); } static void testArrayWrongMethodType(Handles hs) throws Throwable { int[] array = new int[10]; ! Arrays.fill(array, 1); for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)). --- 1526,1912 ---- // SetRelease // Incorrect argument types checkNPE(() -> { // null array ! vh.setRelease(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! vh.setRelease(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class vh.setRelease(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class ! vh.setRelease(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! vh.setRelease(array, Void.class, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 vh.setRelease(); }); checkWMTE(() -> { // > ! vh.setRelease(array, 0, 0x01234567, Void.class); }); // CompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.compareAndSet(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.compareAndSet(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.compareAndSet(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.compareAndSet(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.compareAndSet(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! boolean r = vh.compareAndSet(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.compareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.compareAndSet(array, 0, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSet // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSet(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSet(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSet(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSet(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSet(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSet(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSet(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSet(array, 0, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetVolatile(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetVolatile(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetVolatile(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetVolatile(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetVolatile(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetVolatile(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetVolatile(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetVolatile(array, 0, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetAcquire(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetAcquire(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetAcquire(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetAcquire(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetAcquire(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetAcquire(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetAcquire(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetAcquire(array, 0, 0x01234567, 0x01234567, Void.class); }); // WeakCompareAndSetRelease // Incorrect argument types checkNPE(() -> { // null receiver ! boolean r = vh.weakCompareAndSetRelease(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class ! boolean r = vh.weakCompareAndSetRelease(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! boolean r = vh.weakCompareAndSetRelease(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! boolean r = vh.weakCompareAndSetRelease(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class ! boolean r = vh.weakCompareAndSetRelease(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! boolean r = vh.weakCompareAndSetRelease(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = vh.weakCompareAndSetRelease(); }); checkWMTE(() -> { // > ! boolean r = vh.weakCompareAndSetRelease(array, 0, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeVolatile // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeVolatile(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeVolatile(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeVolatile(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeVolatile(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeVolatile(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeVolatile(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeVolatile(array, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeVolatile(array, 0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeVolatile(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeVolatile(array, 0, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeAcquire // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeAcquire(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeAcquire(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeAcquire(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeAcquire(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeAcquire(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeAcquire(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeAcquire(array, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeAcquire(array, 0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeAcquire(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeAcquire(array, 0, 0x01234567, 0x01234567, Void.class); }); // CompareAndExchangeRelease // Incorrect argument types checkNPE(() -> { // null receiver ! int x = (int) vh.compareAndExchangeRelease(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.compareAndExchangeRelease(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class ! int x = (int) vh.compareAndExchangeRelease(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class ! int x = (int) vh.compareAndExchangeRelease(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.compareAndExchangeRelease(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.compareAndExchangeRelease(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.compareAndExchangeRelease(array, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.compareAndExchangeRelease(array, 0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.compareAndExchangeRelease(); }); checkWMTE(() -> { // > ! int x = (int) vh.compareAndExchangeRelease(array, 0, 0x01234567, 0x01234567, Void.class); }); // GetAndSet // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.getAndSet(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.getAndSet(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndSet(array, 0, Void.class); }); checkWMTE(() -> { // reciarrayever primitive class ! int x = (int) vh.getAndSet(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.getAndSet(array, Void.class, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndSet(array, 0, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndSet(array, 0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndSet(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndSet(array, 0, 0x01234567, Void.class); }); // GetAndAdd // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.getAndAdd(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.getAndAdd(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.getAndAdd(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.getAndAdd(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.getAndAdd(array, Void.class, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.getAndAdd(array, 0, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.getAndAdd(array, 0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.getAndAdd(); }); checkWMTE(() -> { // > ! int x = (int) vh.getAndAdd(array, 0, 0x01234567, Void.class); }); // AddAndGet // Incorrect argument types checkNPE(() -> { // null array ! int x = (int) vh.addAndGet(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class ! int x = (int) vh.addAndGet(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) vh.addAndGet(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class ! int x = (int) vh.addAndGet(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class ! int x = (int) vh.addAndGet(array, Void.class, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class ! Void r = (Void) vh.addAndGet(array, 0, 0x01234567); }); checkWMTE(() -> { // primitive class ! boolean x = (boolean) vh.addAndGet(array, 0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) vh.addAndGet(); }); checkWMTE(() -> { // > ! int x = (int) vh.addAndGet(array, 0, 0x01234567, Void.class); }); } static void testArrayWrongMethodType(Handles hs) throws Throwable { int[] array = new int[10]; ! Arrays.fill(array, 0x01234567); for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class)).
*** 1946,2147 **** for (TestAccessMode am : testAccessModesOfType(TestAccessType.SET)) { // Incorrect argument types checkNPE(() -> { // null array hs.get(am, methodType(void.class, Void.class, int.class, int.class)). ! invoke(null, 0, 1); }); checkCCE(() -> { // array reference class hs.get(am, methodType(void.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class hs.get(am, methodType(void.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class hs.get(am, methodType(void.class, int.class, int.class, int.class)). ! invoke(0, 0, 1); }); checkWMTE(() -> { // index reference class hs.get(am, methodType(void.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 1); }); // Incorrect arity checkWMTE(() -> { // 0 hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, int[].class, int.class, Class.class)). ! invoke(array, 0, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null receiver boolean r = (boolean) hs.get(am, methodType(boolean.class, Void.class, int.class, int.class, int.class)). ! invoke(null, 0, 1, 1); }); checkCCE(() -> { // receiver reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class, int.class, int.class)). ! invoke(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, Class.class, int.class)). ! invoke(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, Void.class); }); checkWMTE(() -> { // receiver primitive class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class, int.class, int.class)). ! invoke(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, Class.class, int.class, int.class)). ! invoke(array, Void.class, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { // Incorrect argument types checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class, int.class)). ! invoke(null, 0, 1, 1); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class, int.class)). ! invoke(Void.class, 0, 1, 1); }); checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class, int.class)). ! invoke(array, 0, Void.class, 1); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class, int.class)). ! invoke(0, 0, 1, 1); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class, int.class)). ! invoke(array, Void.class, 1, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class, int.class)). ! invoke(array, 0, 1, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, int.class)). ! invoke(array, 0, 1, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 0, 1); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class)). ! invoke(0, 0, 1); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class)). ! invoke(array, 0, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class)). ! invoke(array, 0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 0, 1); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 1); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class)). ! invoke(0, 0, 1); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 1); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class)). ! invoke(array, 0, 1); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class)). ! invoke(array, 0, 1); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 1, Void.class); }); } } } --- 1946,2147 ---- for (TestAccessMode am : testAccessModesOfType(TestAccessType.SET)) { // Incorrect argument types checkNPE(() -> { // null array hs.get(am, methodType(void.class, Void.class, int.class, int.class)). ! invoke(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class hs.get(am, methodType(void.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class hs.get(am, methodType(void.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // receiver primitive class hs.get(am, methodType(void.class, int.class, int.class, int.class)). ! invoke(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class hs.get(am, methodType(void.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 hs.get(am, methodType(void.class)). invoke(); }); checkWMTE(() -> { // > hs.get(am, methodType(void.class, int[].class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null receiver boolean r = (boolean) hs.get(am, methodType(boolean.class, Void.class, int.class, int.class, int.class)). ! invoke(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // receiver reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, Class.class, int.class, int.class, int.class)). ! invoke(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, Class.class, int.class)). ! invoke(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // receiver primitive class boolean r = (boolean) hs.get(am, methodType(boolean.class, int.class, int.class, int.class, int.class)). ! invoke(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, Class.class, int.class, int.class)). ! invoke(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 boolean r = (boolean) hs.get(am, methodType(boolean.class)). invoke(); }); checkWMTE(() -> { // > boolean r = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.COMPARE_AND_EXCHANGE)) { // Incorrect argument types checkNPE(() -> { // null receiver int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class, int.class)). ! invoke(null, 0, 0x01234567, 0x01234567); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class, int.class)). ! invoke(Void.class, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // expected reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class, int.class)). ! invoke(array, 0, Void.class, 0x01234567); }); checkWMTE(() -> { // actual reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class, int.class)). ! invoke(0, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class, int.class)). ! invoke(array, Void.class, 0x01234567, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class, int.class)). ! invoke(array, 0, 0x01234567, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class, int.class)). ! invoke(array, 0, 0x01234567, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_SET)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class)). ! invoke(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class)). ! invoke(array, 0, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class)). ! invoke(array, 0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, Void.class); }); } for (TestAccessMode am : testAccessModesOfType(TestAccessType.GET_AND_ADD)) { // Incorrect argument types checkNPE(() -> { // null array int x = (int) hs.get(am, methodType(int.class, Void.class, int.class, int.class)). ! invoke(null, 0, 0x01234567); }); checkCCE(() -> { // array reference class int x = (int) hs.get(am, methodType(int.class, Class.class, int.class, int.class)). ! invoke(Void.class, 0, 0x01234567); }); checkWMTE(() -> { // value reference class int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, Class.class)). invoke(array, 0, Void.class); }); checkWMTE(() -> { // array primitive class int x = (int) hs.get(am, methodType(int.class, int.class, int.class, int.class)). ! invoke(0, 0, 0x01234567); }); checkWMTE(() -> { // index reference class int x = (int) hs.get(am, methodType(int.class, int[].class, Class.class, int.class)). ! invoke(array, Void.class, 0x01234567); }); // Incorrect return type checkWMTE(() -> { // reference class Void r = (Void) hs.get(am, methodType(Void.class, int[].class, int.class, int.class)). ! invoke(array, 0, 0x01234567); }); checkWMTE(() -> { // primitive class boolean x = (boolean) hs.get(am, methodType(boolean.class, int[].class, int.class, int.class)). ! invoke(array, 0, 0x01234567); }); // Incorrect arity checkWMTE(() -> { // 0 int x = (int) hs.get(am, methodType(int.class)). invoke(); }); checkWMTE(() -> { // > int x = (int) hs.get(am, methodType(int.class, int[].class, int.class, int.class, Class.class)). ! invoke(array, 0, 0x01234567, Void.class); }); } } }
< prev index next >