summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2022-04-08 02:56:34 +0800
committerGitHub <noreply@github.com>2022-04-07 20:56:34 +0200
commitc8aeea9d6205198306c3cd802136915f909ba5dc (patch)
treeb1a7afc3c5f2de8e1da4bb7d3be5648d78b954b3
parent810d5e91e435fffb7898ac26b5e4cc5fbb1678d7 (diff)
downloadNim-c8aeea9d6205198306c3cd802136915f909ba5dc.tar.gz
improve the error messages for std/tasks [backport: 1.6] (#19695)
-rw-r--r--lib/std/tasks.nim12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/std/tasks.nim b/lib/std/tasks.nim
index dbe2e265b..3ceb4c8ba 100644
--- a/lib/std/tasks.nim
+++ b/lib/std/tasks.nim
@@ -111,10 +111,10 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC
 
   when compileOption("threads"):
     if not isGcSafe(e[0]):
-      error("'toTask' takes a GC safe call expression")
+      error("'toTask' takes a GC safe call expression", e)
 
   if hasClosure(e[0]):
-    error("closure call is not allowed")
+    error("closure call is not allowed", e)
 
   if e.len > 1:
     let scratchIdent = genSym(kind = nskTemp, ident = "scratch")
@@ -141,17 +141,17 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC
         param = param[0]
 
       if param.typeKind in {ntyExpr, ntyStmt}:
-        error("'toTask'ed function cannot have a 'typed' or 'untyped' parameter")
+        error("'toTask'ed function cannot have a 'typed' or 'untyped' parameter", e)
 
       case param.kind
       of nnkVarTy:
-        error("'toTask'ed function cannot have a 'var' parameter")
+        error("'toTask'ed function cannot have a 'var' parameter", e)
       of nnkBracketExpr:
         if param[0].typeKind == ntyTypeDesc:
           callNode.add nnkExprEqExpr.newTree(formalParams[i][0], e[i])
         elif param[0].typeKind in {ntyVarargs, ntyOpenArray}:
           if param[1].typeKind in {ntyExpr, ntyStmt}:
-            error("'toTask'ed function cannot have a 'typed' or 'untyped' parameter")
+            error("'toTask'ed function cannot have a 'typed' or 'untyped' parameter", e)
           let
             seqType = nnkBracketExpr.newTree(newIdentNode("seq"), param[1])
             seqCallNode = newCall("@", e[i])
@@ -167,7 +167,7 @@ macro toTask*(e: typed{nkCall | nkInfix | nkPrefix | nkPostfix | nkCommand | nkC
       of nnkCharLit..nnkNilLit:
         callNode.add nnkExprEqExpr.newTree(formalParams[i][0], e[i])
       else:
-        error("not supported type kinds")
+        error("'toTask'ed function cannot have a parameter of " & $param.kind & " kind", e)
 
     let scratchObjType = genSym(kind = nskType, ident = "ScratchObj")
     let scratchObj = nnkTypeSection.newTree(