This change improves messages of AbstractMethodErrors and IncompatibleClassChangeErrors.
It adds tests that check some of the improved messages.
The tests check the following improvements:
AbstractMethodErrors:
test_ame1, test case 1:
before: no message / null
after: "Missing implementation of resolved method abstract anAbstractMethod()Ljava/lang/String; of abstract class AME1_B."
test_ame1, test case 2:
before: no message / null
after: "Receiver class AME1_E does not define or inherit an implementation of the resolved method abstract aFunctionOfMyInterface()Ljava/lang/String; of interface AME1_C."
test_ame2, interpreted:
before: no message / null
after: "Missing implementation of resolved method abstract aFunctionOfMyInterface()V of interface AME2_A."
test_ame2, compiled:
before: "AME2_A.aFunctionOfMyInterface()V"
after: "Receiver class AME2_C does not define or inherit an implementation of the resolved method abstract aFunctionOfMyInterface()V of interface AME2_A."
test_ame3:
before: no message / null
after: "Receiver class AME3_C does not define or inherit an implementation of the resolved method ma()V of class AME3_A. Selected method is abstract AME3_B.ma()V."
IncompatibleClassChangeErrors:
test_icc_compiled_itable_stub
before: "vtable stub"
after: "Class ICC_B does not implement the requested interface ICC_iB"
It adds tests that check some of the improved messages.
The tests check the following improvements:
AbstractMethodErrors:
test_ame1, test case 1:
before: no message / null
after: "Missing implementation of resolved method abstract anAbstractMethod()Ljava/lang/String; of abstract class AME1_B."
test_ame1, test case 2:
before: no message / null
after: "Receiver class AME1_E does not define or inherit an implementation of the resolved method abstract aFunctionOfMyInterface()Ljava/lang/String; of interface AME1_C."
test_ame2, interpreted:
before: no message / null
after: "Missing implementation of resolved method abstract aFunctionOfMyInterface()V of interface AME2_A."
test_ame2, compiled:
before: "AME2_A.aFunctionOfMyInterface()V"
after: "Receiver class AME2_C does not define or inherit an implementation of the resolved method abstract aFunctionOfMyInterface()V of interface AME2_A."
test_ame3:
before: no message / null
after: "Receiver class AME3_C does not define or inherit an implementation of the resolved method ma()V of class AME3_A. Selected method is abstract AME3_B.ma()V."
IncompatibleClassChangeErrors:
test_icc_compiled_itable_stub
before: "vtable stub"
after: "Class ICC_B does not implement the requested interface ICC_iB"
- relates to
-
JDK-8199532 [TESTBUG] AbstractMethodErrorTest.java test failed with -Xcomp
- Resolved
-
JDK-8199557 Assert in fromTonga/vm/runtime/defmeth/scenarios/Stress_noredefine/TestDescription.java
- Resolved