diff options
-rw-r--r-- | compiler/main.nim | 2 | ||||
-rw-r--r-- | compiler/modules.nim | 2 | ||||
-rw-r--r-- | compiler/nim.nim | 2 | ||||
-rw-r--r-- | compiler/passes.nim | 6 | ||||
-rw-r--r-- | compiler/service.nim | 7 |
5 files changed, 15 insertions, 4 deletions
diff --git a/compiler/main.nim b/compiler/main.nim index 42a782c02..f7592a891 100644 --- a/compiler/main.nim +++ b/compiler/main.nim @@ -62,7 +62,7 @@ proc commandCompileToC = compileProject() cgenWriteModules() if gCmd != cmdRun: - extccomp.callCCompiler(changeFileExt(gProjectFull, "")) + extccomp.callCCompiler(if gProjectName == "-": "stdinfile" else: changeFileExt(gProjectFull, "")) if isServing: # caas will keep track only of the compilation commands diff --git a/compiler/modules.nim b/compiler/modules.nim index db05ccc6c..a2b739efc 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/nim.nim b/compiler/nim.nim index 215f1986e..b8ba2c6da 100644 --- a/compiler/nim.nim +++ b/compiler/nim.nim @@ -61,6 +61,8 @@ proc handleCmdLine() = if gCmd == cmdRun: tccgen.run(commands.arguments) if optRun in gGlobalOptions: + if gProjectName == "-": + gProjectFull = "stdinfile" if gCmd == cmdCompileToJS: var ex: string if options.outFile.len > 0: diff --git a/compiler/passes.nim b/compiler/passes.nim index f9c3d75f9..96088bd88 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 = "stdinfile" + 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 1d51ef2a1..7cb9d7d29 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: |