This compiles with no errors with dmd 2.047: class Foo { abstract void bar(); } void main() {} But in my opinion dmd has to require code like this, where Foo too has 'abstract' (I think LDC compiler does the same): abstract class Foo { abstract void bar(); } void main() {} See also bug 3934 ---------------- This is instead OK, because according to D syntax all Foo methods are meant to be abstract: abstract class Foo { void bar(); } void main() {}
See bug 2946 *** This issue has been marked as a duplicate of issue 2946 ***