diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index e0be620c3f..3951c071fd 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -225,7 +225,7 @@ proc semRangeAux(c: PContext, n: PNode, prev: PType): PType = if not hasUnknownTypes: if not sameType(rangeT[0].skipTypes({tyRange}), rangeT[1].skipTypes({tyRange})): localError(c.config, n.info, "type mismatch") - elif not isOrdinalType(rangeT[0]) and rangeT[0].kind notin tyFloat..tyFloat128 or + elif not isOrdinalType(rangeT[0]) and rangeT[0].kind notin {tyFloat..tyFloat128} or rangeT[0].kind == tyBool: localError(c.config, n.info, "ordinal or float type expected") elif enumHasHoles(rangeT[0]): diff --git a/compiler/semtypinst.nim b/compiler/semtypinst.nim index 6d9e9873e9..d3ab9d8665 100644 --- a/compiler/semtypinst.nim +++ b/compiler/semtypinst.nim @@ -25,7 +25,7 @@ proc checkConstructedType*(conf: ConfigRef; info: TLineInfo, typ: PType) = elif t.kind in {tyVar, tyLent} and t[0].kind in {tyVar, tyLent}: localError(conf, info, "type 'var var' is not allowed") elif computeSize(conf, t) == szIllegalRecursion or isTupleRecursive(t): - localError(conf, info, "illegal recursion in type '" & typeToString(t) & "'") + localError(conf, info, "illegal recursion in type '" & typeToString(t) & "'") when false: if t.kind == tyObject and t[0] != nil: if t[0].kind != tyObject or tfFinal in t[0].flags: diff --git a/compiler/types.nim b/compiler/types.nim index 3c481ec235..63c5b66f2d 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -1612,16 +1612,17 @@ proc isTupleRecursive(t: PType, cycleDetector: var IntSet): bool = if cycleDetector.containsOrIncl(t.id): return true case t.kind: - of tyTuple: - var cycleDetectorCopy: IntSet - for i in 0..