On Sat, Jul 14, 2012 at 1:36 PM, Guillaume Chatelet < chatelet.guilla...@gmail.com> wrote:
> On 07/13/12 21:41, Andrei Alexandrescu wrote: > > On 7/13/12 3:36 PM, Gor Gyolchanyan wrote: > >> The initial question was: why does DMD 2.059 reject this if this makes > >> sense? > >> It's not even a new feature. It's a (possibly) new (and apparently > >> sensible) use case of an existing feature. > > > > I think the simple answer is there was no provision for it. The feature > > copies the Java feature, and I don't think Java has something like what > > you defined. > > > > Andrei > > > > class Fruit { > class Seed { > } > } > > class Apple extends Fruit { > class AppleSeed extends Fruit.Seed { > Apple getOuter() { > return Apple.this; > } > } > } > > class Main { > public static void main(String[] args) { > final Apple apple = new Apple(); > final Apple.AppleSeed appleSeed = apple.new AppleSeed(); > assert (appleSeed instanceof Fruit.Seed); > assert (apple == appleSeed.getOuter()); > assert (appleSeed.getOuter() instanceof Apple); > assert (appleSeed.getOuter() instanceof Fruit); > } > } > > This is valid Java code actually and I agree with Gor I would have > expected it to work with D. > > Guillaume > I didn't even know this worked in Java. This means, that nested classed in D can't translate nested classed in Java after all. -- Bye, Gor Gyolchanyan.