diff options
author | Araq <rumpf_a@web.de> | 2015-07-08 11:12:39 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-07-08 11:49:34 +0200 |
commit | 0a624bec1ef734cec0cf3376c9073ea40c0b0381 (patch) | |
tree | 64a27c0695525299d10ffc504120e0d23b09edbb /compiler/passes.nim | |
parent | a2b8b8b0dd3f9d80e897033ff9cd71f01ee38310 (diff) | |
download | Nim-0a624bec1ef734cec0cf3376c9073ea40c0b0381.tar.gz |
implemented {.noforward:on.} for type sections; useful for c2nim generated wrappers; to be documented
Diffstat (limited to 'compiler/passes.nim')
-rw-r--r-- | compiler/passes.nim | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/compiler/passes.nim b/compiler/passes.nim index e031dae10..ceb3e2b8a 100644 --- a/compiler/passes.nim +++ b/compiler/passes.nim @@ -190,8 +190,17 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = while true: var n = parseTopLevelStmt(p) if n.kind == nkEmpty: break - if not processTopLevelStmt(n, a): break - + if sfNoForward in module.flags: + # read everything, no streaming possible + var sl = newNodeI(nkStmtList, n.info) + sl.add n + while true: + var n = parseTopLevelStmt(p) + if n.kind == nkEmpty: break + sl.add n + discard processTopLevelStmt(sl, a) + break + elif not processTopLevelStmt(n, a): break closeParsers(p) if s.kind != llsStdIn: break closePasses(a) |