diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 2c1d40ff2523f..de2259eb4f786 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -361,6 +361,8 @@ proc semCast(c: PContext, n: PNode): PNode = let castedExpr = semExprWithType(c, n[1]) if castedExpr.kind == nkClosedSymChoice: errorUseQualifier(c, n[1].info, castedExpr) + if targetType == nil: + localError(c.config, n.info, "Invalid usage of cast, cast requires a type to convert to, e.g., cast[int](0d).") if tfHasMeta in targetType.flags: localError(c.config, n[0].info, "cannot cast to a non concrete type: '$1'" % $targetType) if not isCastable(c, targetType, castedExpr.typ, n.info): diff --git a/tests/types/t21027.nim b/tests/types/t21027.nim new file mode 100644 index 0000000000000..3a992177a43a1 --- /dev/null +++ b/tests/types/t21027.nim @@ -0,0 +1,5 @@ +discard """ + errormsg: "Invalid usage of cast, cast requires a type to convert to, e.g., cast[int](0d)." +""" +# bug #21027 +let x: uint64 = cast(5)