diff --git a/compiler/types.nim b/compiler/types.nim index 786eea14e7..7559f4d2d6 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -582,7 +582,10 @@ proc firstOrd(t: PType): BiggestInt = of tyGenericInst, tyDistinct, tyConst, tyMutable, tyTypeDesc, tyFieldAccessor: result = firstOrd(lastSon(t)) - else: + of tyOrdinal: + if t.len > 0: result = firstOrd(lastSon(t)) + else: internalError("invalid kind for first(" & $t.kind & ')') + else: internalError("invalid kind for first(" & $t.kind & ')') result = 0 @@ -617,7 +620,10 @@ proc lastOrd(t: PType): BiggestInt = tyTypeDesc, tyFieldAccessor: result = lastOrd(lastSon(t)) of tyProxy: result = 0 - else: + of tyOrdinal: + if t.len > 0: result = lastOrd(lastSon(t)) + else: internalError("invalid kind for last(" & $t.kind & ')') + else: internalError("invalid kind for last(" & $t.kind & ')') result = 0 diff --git a/tests/misc/tstrange.nim b/tests/misc/tstrange.nim index 3947755fcf..6bafcabdc3 100644 --- a/tests/misc/tstrange.nim +++ b/tests/misc/tstrange.nim @@ -1,6 +1,9 @@ discard """ file: "tstrange.nim" - output: "hallo4" + output: '''hallo4 +0 +1 +2''' """ # test for extremely strange bug @@ -19,5 +22,8 @@ gen("hallo") write(stdout, ack(5, 4)) #OUT hallo4 - +# bug #1442 +let h=3 +for x in 0..