http://d.puremagic.com/issues/show_bug.cgi?id=5974
Summary: Incorrect nested function address in expression (&f).ptr Product: D Version: D1 & D2 Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: verylonglogin....@gmail.com --- Comment #0 from Denis <verylonglogin....@gmail.com> 2011-05-09 23:46:44 PDT --- Created an attachment (id=966) Problem curious test case Simple program: void main() { void f() { } void* t; t = (&f).ptr; //t = (&f).funcptr; //Uncommented: Error: &f is not an lvalue } First, look at lines 00402019 and 0040201E in disassembled main (dmd 1.067): void main() 00402010 enter 4,0 void* t; 00402014 xor eax,eax 00402016 mov dword ptr [t],eax t = (&f).ptr; 00402019 mov ecx,offset main@main@f (402028h) 0040201E mov dword ptr [t],eax 00402021 xor eax,eax //t = (&f).funcptr; //Uncommented: Error: &f is not an lvalue } 00402023 leave 00402024 ret 00402025 int 3 00402026 int 3 00402027 int 3 { void f() { } 00402028 enter 4,0 0040202C mov dword ptr [ebp-4],eax 0040202F leave 00402030 ret Second, why "&f is not an lvalue" error occurs for "(&f).funcptr"? Maybe, I don't understand something? Third, look at curiousTest.d attachment - it fails only if both asserts are uncommented. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------