Skip to content

Commit

Permalink
fixes nim-lang#21027; cast expressions need a type (nim-lang#21029)
Browse files Browse the repository at this point in the history
* fixes nim-lang#21027; cast expressions need a type

* Apply suggestions from code review

Thanks to @beef331
  • Loading branch information
ringabout authored and survivorm committed Feb 28, 2023
1 parent dcf104c commit 7e019a0
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compiler/semexprs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,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):
Expand Down
5 changes: 5 additions & 0 deletions tests/types/t21027.nim
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 7e019a0

Please sign in to comment.