digitalmars.D.bugs - [Issue 7477] New: Enum structs without specified values
- d-bugmail puremagic.com (36/36) Feb 09 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7477
- d-bugmail puremagic.com (21/21) Feb 09 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7477
http://d.puremagic.com/issues/show_bug.cgi?id=7477
           Summary: Enum structs without specified values
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: clugdbug yahoo.com.au
Bug 4423 considers the case of enum structs where all values are explicitly
specified; it requires a particular opCmp signature.
The case of enum structs when values are NOT specified is even more
problematic.
struct Foo { int x; }
enum Bar : Foo { a, b }
For this to work, it is required that Foo supports:
* implicit cast from 0 to Foo.
* a .max property
* + 1
* and opCmp of the correct signature.
I think this is a useless feature, and should simply be dropped.
Currently, the test case gives some unhelpful error messages, containing
__error and no line number:
crash.d(3): Error: cannot implicitly convert expression (0) of type int to
Foo66
99
Error: no property 'max' for type 'Foo6699'
crash.d(3): Error: Integer constant expression expected instead of (__error) ==
(__error)
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Feb 09 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7477
Jonathan M Davis <jmdavisProg gmx.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jmdavisProg gmx.com
PST ---
The same thing happens if you do something like
enum Foo : string { a, b }
q.d(3): Error: cannot implicitly convert expression (0) of type int to string
Error: no property 'max' for type 'string'
q.d(3): Error: Integer constant expression expected instead of (__error) ==
(__error)
So, it's not really struct-specific. It affects all types which can't be
implicitly assigned 0.
It would probably be simplest to require that enums must either be values or
they must be primitive types other than arrays, or maybe outright require that
they be integral values (I question the usefulness of using bool or floating
point enums without specifying their values).
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
 Feb 09 2012








 
  
  
  d-bugmail puremagic.com
 d-bugmail puremagic.com