diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-03-11 13:17:04 +0000 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-03-11 13:17:04 +0000 |
commit | 4924f5b14a4cdef412cb4b809a9fa81d3b58be98 (patch) | |
tree | aecc51d3372bcfcbe3b8b42ef8aa6a760247d451 | |
parent | fd51c1c984789d0e198a3586a0366100b0082e75 (diff) | |
parent | a4009e32ead7983e508bc2c7858b37cb31a65868 (diff) | |
download | Nim-4924f5b14a4cdef412cb4b809a9fa81d3b58be98.tar.gz |
Merge pull request #2311 from def-/result-macros
Get rid of 'result shadowed' warning for async procs
-rw-r--r-- | lib/pure/asyncdispatch.nim | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index bf905ed49..a8caf809e 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -1323,14 +1323,25 @@ macro async*(prc: stmt): stmt {.immediate.} = newLit(prc[0].getName)))) # Get type from return type of this proc # -> iterator nameIter(): FutureBase {.closure.} = + # -> {.push warning[resultshadowed]: off.} # -> var result: T + # -> {.pop.} # -> <proc_body> # -> complete(retFuture, result) var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter") var procBody = prc[6].processBody(retFutureSym, subtypeIsVoid, nil) if not subtypeIsVoid: - procBody.insert(0, newNimNode(nnkVarSection, prc[6]).add( + procBody.insert(0, newNimNode(nnkPragma).add(newIdentNode("push"), + newNimNode(nnkExprColonExpr).add(newNimNode(nnkBracketExpr).add( + newIdentNode("warning"), newIdentNode("resultshadowed")), + newIdentNode("off")))) # -> {.push warning[resultshadowed]: off.} + + procBody.insert(1, newNimNode(nnkVarSection, prc[6]).add( newIdentDefs(newIdentNode("result"), returnType[1]))) # -> var result: T + + procBody.insert(2, newNimNode(nnkPragma).add( + newIdentNode("pop"))) # -> {.pop.}) + procBody.add( newCall(newIdentNode("complete"), retFutureSym, newIdentNode("result"))) # -> complete(retFuture, result) |