fixes #21027; cast expressions need a type (#21029)

* fixes #21027; cast expressions need a type

* Apply suggestions from code review

Thanks to @beef331

(cherry picked from commit 1564ae650f)
This commit is contained in:
ringabout
2022-12-06 20:09:50 +08:00
committed by narimiran
parent 149c0ad46f
commit 71c5bdf6b3
2 changed files with 7 additions and 0 deletions

View File

@@ -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):

5
tests/types/t21027.nim Normal file
View File

@@ -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)