From dca5508d13249c261d322b499098439b4fc294a9 Mon Sep 17 00:00:00 2001 From: def Date: Sun, 22 Feb 2015 23:03:46 +0100 Subject: [PATCH] Make compiler read files from stdin Special "-" file as stdin. --- compiler/modules.nim | 2 +- compiler/passes.nim | 6 +++++- compiler/service.nim | 7 ++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/compiler/modules.nim b/compiler/modules.nim index db05ccc6cb..a2b739efc7 100644 --- a/compiler/modules.nim +++ b/compiler/modules.nim @@ -116,7 +116,7 @@ proc newModule(fileIdx: int32): PSym = result.kind = skModule let filename = fileIdx.toFullPath result.name = getIdent(splitFile(filename).name) - if not isNimIdentifier(result.name.s): + if result.name.s != "-" and not isNimIdentifier(result.name.s): rawMessage(errInvalidModuleName, result.name.s) result.info = newLineInfo(fileIdx, 1, 1) diff --git a/compiler/passes.nim b/compiler/passes.nim index f9c3d75f94..1491165021 100644 --- a/compiler/passes.nim +++ b/compiler/passes.nim @@ -170,7 +170,11 @@ proc processModule(module: PSym, stream: PLLStream, rd: PRodReader) = openPasses(a, module) if stream == nil: let filename = fileIdx.toFullPathConsiderDirty - s = llStreamOpen(filename, fmRead) + if module.name.s == "-": + module.name.s = "stdin" + s = llStreamOpen(stdin) + else: + s = llStreamOpen(filename, fmRead) if s == nil: rawMessage(errCannotOpenFile, filename) return diff --git a/compiler/service.nim b/compiler/service.nim index 1d51ef2a10..7cb9d7d297 100644 --- a/compiler/service.nim +++ b/compiler/service.nim @@ -33,7 +33,12 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string) = parseopt.next(p) case p.kind of cmdEnd: break - of cmdLongoption, cmdShortOption: processSwitch(pass, p) + of cmdLongoption, cmdShortOption: + if p.key == " ": + p.key = "-" + if processArgument(pass, p, argsCount): break + else: + processSwitch(pass, p) of cmdArgument: if processArgument(pass, p, argsCount): break if pass == passCmd2: