See also

<https://github.com/nim-lang/Nim/pull/23585>

  * values order is not required
  * automatic numbering is incremental and is reset each time an item with a 
value is encountered
  * enum aliases are not supported; for a field definition with numbering, if 
it's a duplicate, an error will be raises; otherwise the counter will increase 
until it's not a duplicate anymore


    
    
    block: # unordered enum
      block:
        type
          unordered_enum = enum
            a = 1
            b = 0
        
        doAssert (ord(a), ord(b)) == (1, 0)
      
      block:
        type
          unordered_enum = enum
            a = 1
            b = 0
            c
        
        doAssert (ord(a), ord(b), ord(c)) == (1, 0, 2)
      
      block:
        type
          unordered_enum = enum
            a = 100
            b
            c = 50
            d
        
        doAssert (ord(a), ord(b), ord(c), ord(d)) == (100, 101, 50, 51)
      
      block:
        type
          unordered_enum = enum
            a = 7
            b = 6
            c = 5
            d
        
        doAssert (ord(a), ord(b), ord(c), ord(d)) == (7, 6, 5, 8)
    
    
    Run

While this case gives an error
    
    
    type
      unordered_enum = enum
        a = 1
        b = 0
        c
        d = 2
    
    
    Run

Reply via email to