mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-06 20:04:18 +00:00
@@ -289,6 +289,7 @@ proc genArg(p: BProc, n: PNode, param: PSym; call: PNode, needsTmp = false): Rop
|
||||
else:
|
||||
initLocExprSingleUse(p, n, a)
|
||||
result = rdLoc(withTmpIfNeeded(p, a, needsTmp))
|
||||
#assert result != nil
|
||||
|
||||
proc genArgNoParam(p: BProc, n: PNode, needsTmp = false): Rope =
|
||||
var a: TLoc
|
||||
|
||||
@@ -427,7 +427,8 @@ proc addExprAssgn(ctx: Ctx, output, input: PNode, sym: PSym) =
|
||||
|
||||
proc convertExprBodyToAsgn(ctx: Ctx, exprBody: PNode, res: PSym): PNode =
|
||||
result = newNodeI(nkStmtList, exprBody.info)
|
||||
ctx.addExprAssgn(result, exprBody, res)
|
||||
if exprBody.typ != nil:
|
||||
ctx.addExprAssgn(result, exprBody, res)
|
||||
|
||||
proc newNotCall(g: ModuleGraph; e: PNode): PNode =
|
||||
result = newTree(nkCall, newSymNode(g.getSysMagic(e.info, "not", mNot), e.info), e)
|
||||
|
||||
34
tests/arc/torcmisc.nim
Normal file
34
tests/arc/torcmisc.nim
Normal file
@@ -0,0 +1,34 @@
|
||||
discard """
|
||||
output: '''success'''
|
||||
cmd: "nim c --gc:orc -d:release $file"
|
||||
"""
|
||||
|
||||
# bug #17170
|
||||
|
||||
when true:
|
||||
import asyncdispatch
|
||||
|
||||
type
|
||||
Flags = ref object
|
||||
returnedEof, reading: bool
|
||||
|
||||
proc dummy(): Future[string] {.async.} =
|
||||
result = "foobar"
|
||||
|
||||
proc hello(s: Flags) {.async.} =
|
||||
let buf =
|
||||
try:
|
||||
await dummy()
|
||||
except CatchableError as exc:
|
||||
# When an exception happens here, the Bufferstream is effectively
|
||||
# broken and no more reads will be valid - for now, return EOF if it's
|
||||
# called again, though this is not completely true - EOF represents an
|
||||
# "orderly" shutdown and that's not what happened here..
|
||||
s.returnedEof = true
|
||||
raise exc
|
||||
finally:
|
||||
s.reading = false
|
||||
|
||||
waitFor hello(Flags())
|
||||
echo "success"
|
||||
|
||||
Reference in New Issue
Block a user