< prev index next >

test/java/lang/invoke/VarHandles/VarHandleTestMethodTypeLong.java

Print this page

        

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