diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2022-12-06 20:09:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-06 13:09:50 +0100 |
commit | 1564ae650f8d4d4c30adf4528f74d7707e4cb737 (patch) | |
tree | cfdde3e13e14f2c5996c5f34e895b5c09e678774 | |
parent | b2c70190061233f2aaaaacdfb36f8f5181c1f514 (diff) | |
download | Nim-1564ae650f8d4d4c30adf4528f74d7707e4cb737.tar.gz |
fixes #21027; cast expressions need a type (#21029)
* fixes #21027; cast expressions need a type * Apply suggestions from code review Thanks to @beef331
-rw-r--r-- | compiler/semexprs.nim | 2 | ||||
-rw-r--r-- | tests/types/t21027.nim | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index c4af23811..22a247ceb 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -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): diff --git a/tests/types/t21027.nim b/tests/types/t21027.nim new file mode 100644 index 000000000..3a992177a --- /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) |