summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2022-12-06 20:09:50 +0800
committerGitHub <noreply@github.com>2022-12-06 13:09:50 +0100
commit1564ae650f8d4d4c30adf4528f74d7707e4cb737 (patch)
treecfdde3e13e14f2c5996c5f34e895b5c09e678774
parentb2c70190061233f2aaaaacdfb36f8f5181c1f514 (diff)
downloadNim-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.nim2
-rw-r--r--tests/types/t21027.nim5
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)