Thread overview | |||||
---|---|---|---|---|---|
|
July 02, 2006 [Issue 236] New: Class literal expression always says "base classes expected" | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=236 Summary: Class literal expression always says "base classes expected" Product: D Version: 0.162 Platform: PC OS/Version: Windows Status: NEW Keywords: rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: jarrett.billingsley@gmail.com I never ran into this before, and I kind of wonder why. void delegate() foo() { return &(new class { void dg() { writefln("delegate!"); } }).dg; } This gives the error "base classes expected" for the class literal. I guess I never ran into it because all the class literals I ever wrote derived from other classes. I tried this in several versions of DMD all the way back to 0.126, and they all give the same error. According to the spec, base classes are optional for class literals. I should be able to write "new class {}" and it should be fine. The semantic equivalent works just fine: void delegate() foo() { class fofof { void dg() { writefln("delegate!"); } } return &(new fofof).dg; } -- |
July 18, 2006 [Issue 236] Class literal expression always says "base classes expected" | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=236 jpelcis@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Comment #1 from jpelcis@gmail.com 2006-07-18 16:38 ------- Fixed DMD 0.163. -- |
August 15, 2006 Re: [Issue 236] New: Class literal expression always says "base classes expected" | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail Attachments: | d-bugmail@puremagic.com schrieb am 2006-07-02: > http://d.puremagic.com/issues/show_bug.cgi?id=236 > I never ran into this before, and I kind of wonder why. > > void delegate() foo() > { > return &(new class > { > > void dg() > { > writefln("delegate!"); > } > }).dg; > } > > This gives the error "base classes expected" for the class literal. I guess I never ran into it because all the class literals I ever wrote derived from other classes. I tried this in several versions of DMD all the way back to 0.126, and they all give the same error. According to the spec, base classes are optional for class literals. I should be able to write "new class {}" and it should be fine. > > The semantic equivalent works just fine: > > void delegate() foo() > { > class fofof > { > void dg() > { > writefln("delegate!"); > } > } > > return &(new fofof).dg; > } Added to DStress as http://dstress.kuehne.cn/run/c/class_26_A.d http://dstress.kuehne.cn/run/c/class_26_B.d Thomas |
Copyright © 1999-2021 by the D Language Foundation