Consider this code:
    
    
    var x: 0..15 = 12
    var s: set[0..15] = {12}
    
    
    Run

The first line defining x works fine. The second line defining s fails with 
this error:
    
    
    /usercode/in.nim(1, 21) Error: type mismatch: got <set[range 
0..65535(int)]> but expected 'set[range 0..15(int)]'
    
    
    Run

After some experimentation it seems like a set literal with bare numeric 
literals inside is always interpreted as a `set[range 0..65535(int)]` unless 
there's some other variable in there to force the typing. ex:
    
    
    var x: 0..15 = 11
    var s: set[0..15] = {x, 12}
    
    
    Run

works.

Is this a bug/oversight in Nim? Is there a way to specify the type on a set 
literal? Is there a way to create a range number constant? (apart from 
`range[0..15](12)` which is quite ugly.)

Reply via email to