test/com/sun/jdi/InterfaceMethodsTest.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/test/com/sun/jdi/InterfaceMethodsTest.java	Mon Sep 19 08:44:40 2016
--- new/test/com/sun/jdi/InterfaceMethodsTest.java	Mon Sep 19 08:44:38 2016

*** 1,7 **** --- 1,7 ---- /* ! * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 195,212 **** --- 195,218 ---- /* Static method calls */ // invoke interface static method A testInvokePos(ifaceClass, null, "staticMethodA", "()I", vm().mirrorOf(RESULT_A)); ! // try to invoke static method A on the instance. This should fail because ref testInvokePos(ifaceClass, ref, "staticMethodA", "()I", vm().mirrorOf(RESULT_A)); + // is of type InterfacemethodsTest$TargetClass which is not a subtype of the + // class containing staticMethodA. + testInvokeNeg(ifaceClass, ref, "staticMethodA", "()I", vm().mirrorOf(RESULT_A), + "Invalid MethodID"); // invoke interface static method B testInvokePos(ifaceClass, null, "staticMethodB", "()I", vm().mirrorOf(RESULT_A)); ! // try to invoke static method B on the instance. This should fail because ref testInvokePos(ifaceClass, ref, "staticMethodB", "()I", vm().mirrorOf(RESULT_A)); + // is of type InterfacemethodsTest$TargetClass which is not a subtype of the + // class containing staticMethodB. + testInvokeNeg(ifaceClass, ref, "staticMethodB", "()I", vm().mirrorOf(RESULT_A), + "Invalid MethodID"); // try to invoke a virtual method testInvokePos(ifaceClass, ref, "implementedMethod", "()I", vm().mirrorOf(RESULT_A), true); }
*** 245,261 **** --- 251,273 ---- // "staticMethodB" is overridden in InterfaceB testInvokePos(ifaceClass, null, "staticMethodB", "()I", vm().mirrorOf(RESULT_B)); // the instance invokes the overriden form of "staticMethodB" from InterfaceB testInvokePos(ifaceClass, ref, "staticMethodB", "()I", vm().mirrorOf(RESULT_B)); + // This should fail because ref is of type InterfacemethodsTest$TargetClass + // which is not a subtype of the class containing staticMethodB. + testInvokeNeg(ifaceClass, ref, "staticMethodB", "()I", vm().mirrorOf(RESULT_B), + "Invalid MethodID"); // "staticMethodC" is present only in InterfaceB testInvokePos(ifaceClass, null, "staticMethodC", "()I", vm().mirrorOf(RESULT_B)); ! // "staticMethodC" should be reachable from the instance too testInvokePos(ifaceClass, ref, "staticMethodC", "()I", vm().mirrorOf(RESULT_B)); ! // "staticMethodC" should not be reachable from the instance because ref is of + // type InterfacemethodsTest$TargetClass which is not a subtype of the class + // containing staticMethodC. + testInvokeNeg(ifaceClass, ref, "staticMethodC", "()I", vm().mirrorOf(RESULT_B), + "Invalid MethodID"); } private void testImplementationClass(ReferenceType targetClass, ObjectReference thisObject) { // Test invocations on the implementation object

test/com/sun/jdi/InterfaceMethodsTest.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File