diff --git a/compiler/ic/ic.nim b/compiler/ic/ic.nim index b244d7afb7a76..867bc95aed298 100644 --- a/compiler/ic/ic.nim +++ b/compiler/ic/ic.nim @@ -944,6 +944,9 @@ proc loadSym(c: var PackedDecoder; g: var PackedModuleGraph; thisModule: int; s: result = nil else: let si = moduleIndex(c, g, thisModule, s) + if si >= g.len: + g.pm.setLen(si+1) + if g[si].status == undefined and c.config.cmd == cmdM: var cachedModules: seq[FileIndex] = @[] discard needsRecompile(g, c.config, c.cache, FileIndex(si), cachedModules) diff --git a/compiler/pipelines.nim b/compiler/pipelines.nim index c3b7a8b7ecb16..b7220760722fb 100644 --- a/compiler/pipelines.nim +++ b/compiler/pipelines.nim @@ -259,8 +259,11 @@ proc compilePipelineModule*(graph: ModuleGraph; fileIdx: FileIndex; flags: TSymF partialInitModule(result, graph, fileIdx, filename) for m in cachedModules: registerModuleById(graph, m) - replayStateChanges(graph.packed.pm[m.int].module, graph) - replayGenericCacheInformation(graph, m.int) + if sfMainModule in flags and graph.config.cmd == cmdM: + discard + else: + replayStateChanges(graph.packed.pm[m.int].module, graph) + replayGenericCacheInformation(graph, m.int) elif graph.isDirty(result): result.flags.excl sfDirty # reset module fields: diff --git a/compiler/sem.nim b/compiler/sem.nim index 568db0d0f9f66..960fc9165bf2f 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -871,6 +871,7 @@ proc semWithPContext*(c: PContext, n: PNode): PNode = proc reportUnusedModules(c: PContext) = + if c.config.cmd == cmdM: return for i in 0..high(c.unusedImports): if sfUsed notin c.unusedImports[i][0].flags: message(c.config, c.unusedImports[i][1], warnUnusedImportX, c.unusedImports[i][0].name.s)