Cyclic definition of overriding

Alex Buckley alex.buckley at
Tue Jun 9 21:38:55 UTC 2015

On 6/9/2015 2:27 PM, Dan Smith wrote:
>> On Jun 9, 2015, at 3:12 PM, Alex Buckley <alex.buckley at>
>> wrote:
>> On 6/9/2015 1:36 PM, Alex Buckley wrote:
>>> Knowing to apply rather than is extremely subtle.
>>> Once you do, it's plain that 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 and 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' (, 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.)

... that D' (Test1) is not the same as D (Test2).  (Yes, maybe D is 
Test1 and D' is Test2.)

Konstantin, the scenario would be clearer if the superinterfaces were 
called I1 and I2 rather than aggressively sharing letters T-e-s-t with 
the name of the inheriting class.


More information about the compiler-dev mailing list