[ping] RE: RFR(S): 8204268: Improve some InompatibleClassChangeError messages.

Harold David Seigel harold.seigel at oracle.com
Fri Jun 15 12:26:36 UTC 2018


Hi Goetz,

This looks good!

Thanks, Harold

On 6/15/2018 7:11 AM, Lindenmaier, Goetz wrote:
> Hi Harold, Thomas,
>
> I adapted the error messages slightly:
> http://cr.openjdk.java.net/~goetz/wr18/8204268-exMsg-IncompatibleClassChange/02/
>
> As requested by Harold:
> - "Class %s implements %s, which is not an interface"
> + "Class %s can not implement %s, because it is not an interface"
> I thought the original message was not that bad, as the classfile actually lists
> the second type as "implements".
>
> As proposed by Thomas:
> "Can not call method because resolved class %s does not implement  the interface %s defining the method"
> "Receiver class %s does not implement the interface %s defining the method to be called"
> I shortened the message, but I think it is important tell that the problem
> arose during method resolving.
> I also changed resolved -> receiver, which was just wrong.
>
> Best regards,
>    Goetz.
>
>> -----Original Message-----
>> From: hotspot-runtime-dev [mailto:hotspot-runtime-dev-
>> bounces at openjdk.java.net] On Behalf Of Harold David Seigel
>> Sent: Donnerstag, 14. Juni 2018 18:00
>> To: hotspot-runtime-dev at openjdk.java.net
>> Subject: Re: [ping] RE: RFR(S): 8204268: Improve some
>> InompatibleClassChangeError messages.
>>
>> Hi Goetz,
>>
>> This change looks good.  Just a few comments.
>>
>> In classFileParser.cpp, line 958, could you change "implements %s, which
>> is not an interface" to "can not implement %s because it is not an
>> interface" ?
>>
>> Note that the calls to class_loader_and_module_name() in this webrev may
>> get changed in the near future as part of JDK-8202605
>> <https://bugs.openjdk.java.net/browse/JDK-8202605> and JDK-8169559
>> <https://bugs.openjdk.java.net/browse/JDK-8169559>.
>>
>> Thanks, Harold
>>
>> On 6/11/2018 9:30 AM, Lindenmaier, Goetz wrote:
>>> Hi,
>>>
>>> could I please get a second opinion on this?
>>>
>>> Best regards,
>>>     Goetz.
>>>
>>>> -----Original Message-----
>>>> From: Lindenmaier, Goetz
>>>> Sent: Montag, 4. Juni 2018 11:38
>>>> To: hotspot-runtime-dev at openjdk.java.net
>>>> Subject: RFR(S): 8204268: Improve some InompatibleClassChangeError
>>>> messages.
>>>>
>>>> Hi,
>>>>
>>>> This change improves some IncompatibleClassChangeError messages by
>>>> printing the classes involved
>>>> and adds tests for the messages. It also improves the existing test for
>>>> IncompatibleClassChangeErrorMessages,
>>>> e.g. by assuring packages are printed with '.'. I'm using
>>>> class_loader_and_module_name() for printing the
>>>> class names.
>>>>
>>>> http://cr.openjdk.java.net/~goetz/wr18/8204268-exMsg-
>>>> IncompatibleClassChange/01/
>>>>
>>>> Changes to the messages:
>>>>
>>>> 1. If a class is loaded requiring an interface that's already loaded as class:
>>>>
>>>> Before:
>>>>
>>>> Implementing class
>>>>
>>>> After:
>>>>
>>>> Class test.ICC3_B implements test.ICC3_A, which is not an interface
>>>>
>>>> 2. If a class is loaded requiring a super class that's already loaded as
>> interface.
>>>> Implemented a test. Message unchanged:
>>>>
>>>> class test.ICC4_B has interface test.ICC4_iA as super class
>>>>
>>>> 3. If an interface method is called but the class of the object at runtime
>>>> does not implement the interface. There was no message before.
>>>>
>>>> After:
>>>>
>>>> Can not call method because resolved class test.ICC5_B does not
>> implement
>>>> the interface test.ICC4_iA defining the method.
>>>>
>>>> No test implemented for this message
>>>>
>>>> Feel free to propose better message.



More information about the hotspot-runtime-dev mailing list