In the ideal world,this should compile var b = 10 var a: iX = 5 if b >= 1 and b<=5: a = b Run
and if you remove that `if` it doesn't. Of course it is hard(it's called subtraction type or something) Otherwise it is still implicit downcast and it's only "right" when you lower you standard to c level.