Cyclic definition of overriding
Dan Smith
daniel.smith at oracle.com
Tue Jun 9 21:27:23 UTC 2015
> On Jun 9, 2015, at 3:12 PM, Alex Buckley <alex.buckley at oracle.com> wrote:
>
> On 6/9/2015 1:36 PM, Alex Buckley wrote:
>> Knowing to apply 9.4.1.1 rather than 8.4.8.1 is extremely subtle. Once
>> you do, it's plain that Test1.foo() does not override-from-Test1 the
>> method foo() declared in Test2, and vice versa, thus class Test inherits
>> both foo() methods (harmlessly). I will add cross-refs from 8.4.8 to
>> both 8.4.8.1 and 9.4.1.1 to clarify.
>
> In particular, the 8.4.8 clause:
>
> "such that m' from D' overrides the declaration of the method m."
>
> should read:
>
> "such that m' overrides from D' (8.4.8.1, 9.4.1.1) the declaration of the method m." -- note the relocation of "from D'".
>
> (Plus class Test needs to be abstract of course.)
Yes, this is good. "From D' overrides" is awkward.
The confusion isn't so much about Chapter 8 vs. Chapter 9 -- both immediately assert that Test1 is a subclass/subinterface of Test2. The problem is in recognizing that D' (Test1) is not the same as D (Test), which this change makes more clear. (Hope I'm not mixing up Test1 and Test2 here, but if so, you know what I mean.)
—Dan
More information about the compiler-dev
mailing list