On 03/18/12 02:23, Manu wrote: > The virtual model broken. I've complained about it lots, and people always > say "stfu, use 'final:' at the top of your class". > > That sounds tolerable in theory, except there's no 'virtual' keyword to keep > the virtual-ness of those 1-2 virtual functions I have... so it's no good > (unless I rearrange my class, breaking the logical grouping of stuff in it). > So I try that, and when I do, it complains: "Error: variable > demu.memmap.MemMap.machine final cannot be applied to variable", allegedly a > D1 remnant. > So what do I do? Another workaround? Tag everything as final individually? > > My minimum recommendation: D needs an explicit 'virtual' keyword, and to fix > that D1 bug, so putting final: at the top of your class works, and everything > from there works as it should.
See subject. Example; class Foo : Bar final { } as alternative syntax for class Foo : Bar { final { } } Advantages: internally consistent, no need for completely new syntax, "final class" can be deprecated (it never worked well anyway). Alternate aspects of this syntax change: void foo(ObjectThing ot, int a, int b) with (ot) { } void bar() synchronized { }