6908259: Covariance bug for multiple interface inheritence
Neal Gafter
neal at gafter.com
Tue Feb 9 07:29:30 PST 2010
Maurizio-
Can you please tell me what JLS3 rule justifies failing to compile
T6294779c.java? I was not able to find anything.
Cheers,
Neal
On Tue, Feb 9, 2010 at 2:10 AM, Maurizio Cimadamore
<Maurizio.Cimadamore at sun.com> wrote:
> David M. Lloyd wrote:
>>
>> I've produced a patch for javac bug #6908259 which appears to fix the
>> issue, at first blush. Before engaging in more rigorous testing and
>> figuring out how to do this jtreg thing, can someone in the know have a
>> glance over this patch and see if it makes any sense?
>>
>> See http://bugs.sun.com/view_bug.do?bug_id=6908259 for a detailed
>> description of the problem.
>>
>> My attached patch tries to work around the issue by detecting when two
>> incompatible methods are both overridden, and if so, it does an extra check
>> to see if the overriding method is a valid covariation (?) of both methods.
>
> We also have a patch that is currently applied to JDK 7:
>
> http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4a3b9801f7a0
>
> The fix looks a bit more complex than yours (it adds a new method in check
> that finds the common covariant overrider in the superclass hiererachy) - in
> fact there could be situations in which the last method in the hierarchy
> does NOT define the common overrider, as in one of the regression tests
> attached above:
>
> class T6294779b {
>
> interface I1<E> {
> List<E> m();
> }
>
> interface I2<E> {
> Queue<E> m();
> }
>
> interface I3<E> {
> LinkedList<E> m();
> }
>
> interface I4<E> extends I1<E>, I2<E>, I3<E> {}
> }
>
> In this case, I4 is well-formed as one of the implementing interfaces ---
> namely I3 --- is defining a method which is compatible with all other
> signatures from I1,I2.
>
> Maurizio
>>
>> - DML
>>
>
>
More information about the compiler-dev
mailing list