digitalmars.D.bugs - [Issue 3334] New: std.demangle doesn't parse ref, pure, notrow
- d-bugmail puremagic.com (30/30) Sep 20 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3334
- d-bugmail puremagic.com (7/7) Sep 20 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3334
- d-bugmail puremagic.com (16/18) Sep 20 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3334
- d-bugmail puremagic.com (10/10) Sep 20 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3334
- d-bugmail puremagic.com (8/18) Oct 05 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3334
- d-bugmail puremagic.com (29/29) Apr 23 2011 http://d.puremagic.com/issues/show_bug.cgi?id=3334
http://d.puremagic.com/issues/show_bug.cgi?id=3334 Summary: std.demangle doesn't parse ref, pure, notrow Product: D Version: 2.032 Platform: All OS/Version: Linux Status: NEW Keywords: patch Severity: minor Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: lutger.blijdestijn gmail.com PDT --- There are four 'attributes' defined in the ABI which std.demangle currently doesn't parse: pure, nothrow, ref and property: import std.demangle; void main() { assert(demangle("_D3fooFNaNbZv") == "pure nothrow void foo()"); } I've attached a patch (my first), feedback appreciated if something is not right. I didn't know how property is supposed to be demangled, so that one is just ignored. Also, this patch assumes all attributes are valid for functions and delegates and just ignores attributes for calling conventions other that D. Again, not sure if that's ok. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 20 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3334 PDT --- Created an attachment (id=460) support pure,ref,nothrow in std.demangle -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 20 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3334 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.au Summary|std.demangle doesn't parse |std.demangle doesn't parse |ref, pure, notrow |ref, pure, nothrowI didn't know how property is supposed to be demangled, so that one is just ignored.Congratulations, you've found the Easter egg! From the code in mtype.c, it's currently property. assert(demangle("_D3fooFNdNaNbZv") == " property pure nothrow void foo()"); Interesting, eh? But you're quite right to ignore it. It might well change. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 20 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3334 Andrei Alexandrescu <andrei metalanguage.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |andrei metalanguage.com AssignedTo|nobody puremagic.com |andrei metalanguage.com -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 20 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3334 PDT ---Very. Seeing the last release it should be changed to "pure nothrow void foo() property". I'm curious to see how the property / attribute thing pans out. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------I didn't know how property is supposed to be demangled, so that one is just ignored.Congratulations, you've found the Easter egg! From the code in mtype.c, it's currently property. assert(demangle("_D3fooFNdNaNbZv") == " property pure nothrow void foo()"); Interesting, eh? But you're quite right to ignore it. It might well change.
Oct 05 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3334 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED CC| |kennytm gmail.com Resolution| |FIXED Looks like this has been fixed. -------------------------- module x; import core.demangle, std.traits; property ref pure nothrow int foo(ref int z) { return z; } safe void bar() { } trusted void baz() { } void main() { assert(demangle(mangledName!foo) == "pure nothrow ref property int x.foo(ref int)"); assert(demangle(mangledName!bar) == " safe void x.bar()"); assert(demangle(mangledName!baz) == " trusted void x.baz()"); } -------------------------- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 23 2011