www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 3651] New: mangleof broken for enums

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651

           Summary: mangleof broken for enums
           Product: D
           Version: 1.051
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: nfxjfg gmail.com


--- Comment #0 from nfxjfg gmail.com 2009-12-26 11:32:07 PST ---
First off, this bug report is for dmd 1.053, not 1.051; but bugzilla let's me
only select up to 1.051.

.mangleof is broken for enums:

enum foo {
    item,
}

//should output a mangled name with "foo" in it, but outputs "i"
pragma(msg, foo.mangleof);

void main() {}

I apologize if this is a duplicate bug; there were quite a lot of enum bugs
which look slightly similar (the compiler seems to reduce enums to ints
prematurely in a lot of cases).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 26 2009
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651



--- Comment #1 from mpiepk gmail.com 2010-01-14 05:43:12 PST ---
Created an attachment (id=549)
Patch

Patch against dmd 1.055.
The problem is that mangleof is executed on the enum member type, not the enum
type itself.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 14 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au


--- Comment #2 from Don <clugdbug yahoo.com.au> 2010-01-28 00:47:21 PST ---
 enum foo {
     item,
 }

 //should output a mangled name with "foo" in it, but outputs "i"
 pragma(msg, foo.mangleof);

Are you sure that's what it should do? Why do you think the existing behaviour is wrong? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 28 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651



--- Comment #3 from nfxjfg gmail.com 2010-01-28 00:55:57 PST ---
 Don: I'm pretty sure my bug report is correct. enums are the *only* type that
behave different here. Further, if you get the mangle of a function or template
that use enums as parameters, the enum gets mangled using the type name, not
the base type.

Why do you think the current behavior would be correct? Why would .mangleof for
a type return the mangle for a completely *different* type?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 28 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651



--- Comment #4 from Don <clugdbug yahoo.com.au> 2010-01-28 01:05:28 PST ---
(In reply to comment #3)
  Don: I'm pretty sure my bug report is correct. enums are the *only* type that
 behave different here. Further, if you get the mangle of a function or template
 that use enums as parameters, the enum gets mangled using the type name, not
 the base type.
 
 Why do you think the current behavior would be correct? Why would .mangleof for
 a type return the mangle for a completely *different* type?

Because enums aren't strong types. typeof(item) is int, not foo. 'foo' just seems to be an alias for int. (I think the existing behaviour is stupid, BTW). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 28 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651



--- Comment #5 from nfxjfg gmail.com 2010-01-28 01:14:41 PST ---
typeof(item) is int, not foo.

Even then, typeof(foo) is foo, and not int. It's only logical that foo.mangleof should be the mangle for foo, not int. I don't know about item.mangelof. Is that even allowed? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 28 2010
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=3651


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED


--- Comment #6 from Walter Bright <bugzilla digitalmars.com> 2010-05-31
01:02:27 PDT ---
http://www.dsource.org/projects/dmd/changeset/508

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 31 2010