diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-05-17 15:45:41 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-05-17 15:45:41 +0200 |
commit | b2c7910fb60528520d71686ac7c80a30553f9320 (patch) | |
tree | bb473793fc12785dbb532a602d607df977ddd895 /compiler/cgen.nim | |
parent | bf6c2c5ccfd33cc8aab53b98dbce0619f8633d84 (diff) | |
download | Nim-b2c7910fb60528520d71686ac7c80a30553f9320.tar.gz |
compiler/ropes.nim has no global error handler anymore
Diffstat (limited to 'compiler/cgen.nim')
-rw-r--r-- | compiler/cgen.nim | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/compiler/cgen.nim b/compiler/cgen.nim index 98223e976..666b39ec8 100644 --- a/compiler/cgen.nim +++ b/compiler/cgen.nim @@ -19,7 +19,8 @@ import import strutils except `%` # collides with ropes.`%` from modulegraphs import ModuleGraph -from configuration import warnGcMem, errXMustBeCompileTime, hintDependency, errGenerated +from configuration import + warnGcMem, errXMustBeCompileTime, hintDependency, errGenerated, errCannotOpenFile import dynlib when not declared(dynlib.libCandidates): @@ -1347,7 +1348,8 @@ proc writeHeader(m: BModule) = result.addf("N_CDECL(void, NimMain)(void);$n", []) if optUseNimNamespace in m.config.globalOptions: result.add closeNamespaceNim() result.addf("#endif /* $1 */$n", [guard]) - writeRope(result, m.filename) + if not writeRope(result, m.filename): + rawMessage(m.config, errCannotOpenFile, m.filename) proc getCFile(m: BModule): string = let ext = @@ -1395,12 +1397,14 @@ proc shouldRecompile(m: BModule; code: Rope, cfile: Cfile): bool = echo "diff ", cfile.cname, ".backup ", cfile.cname else: echo "new file ", cfile.cname - writeRope(code, cfile.cname) + if not writeRope(code, cfile.cname): + rawMessage(m.config, errCannotOpenFile, cfile.cname) return if existsFile(cfile.obj) and os.fileNewer(cfile.obj, cfile.cname): result = false else: - writeRope(code, cfile.cname) + if not writeRope(code, cfile.cname): + rawMessage(m.config, errCannotOpenFile, cfile.cname) # We need 2 different logics here: pending modules (including # 'nim__dat') may require file merging for the combination of dead code @@ -1435,7 +1439,8 @@ proc writeModule(m: BModule, pending: bool) = genInitCode(m) finishTypeDescriptions(m) var code = genModule(m, cf) - writeRope(code, cfile) + if not writeRope(code, cfile): + rawMessage(m.config, errCannotOpenFile, cfile) addFileToCompile(m.config, cf) else: # Consider: first compilation compiles ``system.nim`` and produces @@ -1456,7 +1461,8 @@ proc updateCachedModule(m: BModule) = finishTypeDescriptions(m) var code = genModule(m, cf) - writeRope(code, cfile) + if not writeRope(code, cfile): + rawMessage(m.config, errCannotOpenFile, cfile) else: cf.flags = {CfileFlag.Cached} addFileToCompile(m.config, cf) |