Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
This commit is contained in:
commit
b579ca44eb
3 changed files with 10 additions and 9 deletions
|
|
@ -111,8 +111,9 @@ proc validateExternCName(s: PSym, info: TLineInfo) =
|
||||||
|
|
||||||
proc makeExternExport(s: PSym, extname: string, info: TLineInfo) =
|
proc makeExternExport(s: PSym, extname: string, info: TLineInfo) =
|
||||||
setExternName(s, extname)
|
setExternName(s, extname)
|
||||||
if gCmd in {cmdCompileToC, cmdCompileToCpp, cmdCompileToOC}:
|
# XXX to fix make it work with nimrtl.
|
||||||
validateExternCName(s, info)
|
#if gCmd in {cmdCompileToC, cmdCompileToCpp, cmdCompileToOC}:
|
||||||
|
# validateExternCName(s, info)
|
||||||
incl(s.flags, sfExportc)
|
incl(s.flags, sfExportc)
|
||||||
|
|
||||||
proc processImportCompilerProc(s: PSym, extname: string) =
|
proc processImportCompilerProc(s: PSym, extname: string) =
|
||||||
|
|
|
||||||
|
|
@ -752,7 +752,7 @@ template createVar(futSymName: string, asyncProc: PNimrodNode,
|
||||||
valueReceiver: expr) {.immediate, dirty.} =
|
valueReceiver: expr) {.immediate, dirty.} =
|
||||||
# TODO: Used template here due to bug #926
|
# TODO: Used template here due to bug #926
|
||||||
result = newNimNode(nnkStmtList)
|
result = newNimNode(nnkStmtList)
|
||||||
var futSym = newIdentNode(futSymName) #genSym(nskVar, "future")
|
var futSym = genSym(nskVar, "future")
|
||||||
result.add newVarStmt(futSym, asyncProc) # -> var future<x> = y
|
result.add newVarStmt(futSym, asyncProc) # -> var future<x> = y
|
||||||
result.add newNimNode(nnkYieldStmt).add(futSym) # -> yield future<x>
|
result.add newNimNode(nnkYieldStmt).add(futSym) # -> yield future<x>
|
||||||
valueReceiver = newDotExpr(futSym, newIdentNode("read")) # -> future<x>.read
|
valueReceiver = newDotExpr(futSym, newIdentNode("read")) # -> future<x>.read
|
||||||
|
|
@ -843,14 +843,11 @@ macro async*(prc: stmt): stmt {.immediate.} =
|
||||||
subtypeName = $returnType[1].ident
|
subtypeName = $returnType[1].ident
|
||||||
elif returnType.kind == nnkEmpty:
|
elif returnType.kind == nnkEmpty:
|
||||||
subtypeName = "void"
|
subtypeName = "void"
|
||||||
|
|
||||||
# TODO: Why can't I use genSym? I get illegal capture errors for Syms.
|
|
||||||
# TODO: It seems genSym is broken. Change all usages back to genSym when fixed
|
|
||||||
|
|
||||||
var outerProcBody = newNimNode(nnkStmtList)
|
var outerProcBody = newNimNode(nnkStmtList)
|
||||||
|
|
||||||
# -> var retFuture = newFuture[T]()
|
# -> var retFuture = newFuture[T]()
|
||||||
var retFutureSym = newIdentNode("retFuture") #genSym(nskVar, "retFuture")
|
var retFutureSym = genSym(nskVar, "retFuture")
|
||||||
outerProcBody.add(
|
outerProcBody.add(
|
||||||
newVarStmt(retFutureSym,
|
newVarStmt(retFutureSym,
|
||||||
newCall(
|
newCall(
|
||||||
|
|
@ -862,7 +859,7 @@ macro async*(prc: stmt): stmt {.immediate.} =
|
||||||
# -> var result: T
|
# -> var result: T
|
||||||
# -> <proc_body>
|
# -> <proc_body>
|
||||||
# -> complete(retFuture, result)
|
# -> complete(retFuture, result)
|
||||||
var iteratorNameSym = newIdentNode($prc[0].getName & "Iter") #genSym(nskIterator, $prc[0].ident & "Iter")
|
var iteratorNameSym = genSym(nskIterator, $prc[0].getName & "Iter")
|
||||||
var procBody = prc[6].processBody(retFutureSym)
|
var procBody = prc[6].processBody(retFutureSym)
|
||||||
if subtypeName != "void":
|
if subtypeName != "void":
|
||||||
procBody.insert(0, newNimNode(nnkVarSection).add(
|
procBody.insert(0, newNimNode(nnkVarSection).add(
|
||||||
|
|
@ -881,7 +878,7 @@ macro async*(prc: stmt): stmt {.immediate.} =
|
||||||
|
|
||||||
# -> var nameIterVar = nameIter
|
# -> var nameIterVar = nameIter
|
||||||
# -> var first = nameIterVar()
|
# -> var first = nameIterVar()
|
||||||
var varNameIterSym = newIdentNode($prc[0].getName & "IterVar") #genSym(nskVar, $prc[0].ident & "IterVar")
|
var varNameIterSym = genSym(nskVar, $prc[0].getName & "IterVar")
|
||||||
var varNameIter = newVarStmt(varNameIterSym, iteratorNameSym)
|
var varNameIter = newVarStmt(varNameIterSym, iteratorNameSym)
|
||||||
outerProcBody.add varNameIter
|
outerProcBody.add varNameIter
|
||||||
var varFirstSym = genSym(nskVar, "first")
|
var varFirstSym = genSym(nskVar, "first")
|
||||||
|
|
|
||||||
3
lib/pure/asyncdispatch.nimrod.cfg
Normal file
3
lib/pure/asyncdispatch.nimrod.cfg
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
@if nimdoc:
|
||||||
|
--os:linux
|
||||||
|
@end
|
||||||
Loading…
Add table
Add a link
Reference in a new issue