[Mono-bugs] [Bug 371559] New: Enum.ToString doesn' t recognize all members when overlapping Flags

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Mar 16 11:05:05 EDT 2008


User andyhume32 at yahoo.co.uk added comment

           Summary: Enum.ToString doesn't recognize all members when
                    overlapping Flags
           Product: Mono: Class Libraries
           Version: 1.2.6
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: andyhume32 at yahoo.co.uk
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---

using System.Windows.Forms;// Keys enum
Assert.AreEqual("D9", Keys.D9.ToString(), "#1");
Assert.AreEqual("Modifiers", Keys.Modifiers.ToString(), "#2");

Case #2 fails, instead returning "-65536".  Both cases pass on MSFT.

That member is defined as 0xFFFF0000, the enum is [Flags], and the problem only
occurs when there's another member that (slightly) overlaps i.e.

A local test-case enum is thus:
enum Aaaa

If either Alt or [Flags] is removed then ToString works as expected.

Perhaps Mono is not following one aspect of Enum.Format behaviour as listed in
   "… value is searched for flags, going from the flag with the 
     largest value to the smallest value …"

In fact, MonoEnumInfo.GetInfo sorts them in ascending order -- which is likely
the case to suit Enum.GetValues "...sorted by the binary values...".   Seems
that we need a version of that method which will sort them in descending order
for the FormatFlags case.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list