6908259: Covariance bug for multiple interface inheritence
David M. Lloyd
david.lloyd at redhat.com
Tue Feb 9 08:40:36 PST 2010
On 02/09/2010 10:03 AM, David M. Lloyd wrote:
> On 02/09/2010 09:59 AM, Neal Gafter wrote:
>> On Tue, Feb 9, 2010 at 7:47 AM, David M. Lloyd<david.lloyd at redhat.com>
>> wrote:
>>> However, later on in 8.4.8.4:
>>>
>>> [-cut-]
>>> * If all the inherited methods are abstract, then the class is
>>> necessarily an abstract class and is considered to inherit all the
>>> abstract
>>> methods. A compile-time error occurs if, for any two such inherited
>>> methods,
>>> one of the methods is not return type substitutable for the other (The
>>> throws clauses do not cause errors in this case.)
>>
>> Section 8.4.8.4 is specifically about classes. The test cases of
>> interest contain interfaces, not classes, and so 8.4.8.4 does not
>> apply.
>
> OK, so if you go with that interpretation then the earlier section
> (8.4.8.1) seems to say that if you don't override the method explicitly,
> then covariance doesn't apply, which would mean that my simpler patch is
> the correct one and Mr. Cimadamore's T6294779b example class should not
> compile, right?
Ah, I suppose the whole of chapter 8 concerns classes. Maybe I'll leave
the spec lawyering up to the spec lawyers.
- DML
More information about the compiler-dev
mailing list