digitalmars.D.bugs - [Issue 2438] New: Cannot get types of delegate properties
- d-bugmail puremagic.com (25/25) Nov 01 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2438
- d-bugmail puremagic.com (8/8) Nov 01 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2438
- d-bugmail puremagic.com (6/6) Nov 01 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2438
http://d.puremagic.com/issues/show_bug.cgi?id=2438 Summary: Cannot get types of delegate properties Product: D Version: 2.020 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: samukha voliacable.com alias void delegate() Dg; alias typeof(Dg.ptr) Ptr; alias typeof(Dg.funcptr) Funcptr; ---- test.d(13): Error: argument void* to typeof is not an expression test.d(13): Error: argument void* to typeof is not an expression test.d(14): Error: void delegate() is not an lvalue Worked around by defining an intermediate delegate instance: alias void delegate() Dg; Dg dummy; alias typeof(dummy.ptr) Ptr; alias typeof(dummy.funcptr) Funcptr; --
Nov 01 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2438 Not that I don't think it's a bug, but - what the heck? I honestly can't tell what Dg.ptr is. The compiler doesn't accept it as a type, but it also doesn't accept it as an expression. Dg.ptr.stringof gives "void*", as if it's a type. I'm kind of surprised that you can access it at all. Also, another workaround is to use typeof(Dg.init.ptr/funcptr). --
Nov 01 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2438 typeof(Dg.init.funcptr) fails: Error: null is not an lvalue BTW, typeof((int[]).ptr) works as expected --
Nov 01 2008