mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-15 16:13:45 +00:00
29 lines
1.2 KiB
Nim
29 lines
1.2 KiB
Nim
import std/intsets
|
|
import ast, options, lineinfos, pathutils, msgs, modulegraphs, packages
|
|
|
|
proc skipCodegen*(config: ConfigRef; n: PNode): bool {.inline.} =
|
|
# can be used by codegen passes to determine whether they should do
|
|
# something with `n`. Currently, this ignores `n` and uses the global
|
|
# error count instead.
|
|
result = config.errorCounter > 0
|
|
|
|
proc resolveMod*(conf: ConfigRef; module, relativeTo: string): FileIndex =
|
|
let fullPath = findModule(conf, module, relativeTo)
|
|
if fullPath.isEmpty:
|
|
result = InvalidFileIdx
|
|
else:
|
|
result = fileInfoIdx(conf, fullPath)
|
|
|
|
proc prepareConfigNotes*(graph: ModuleGraph; module: PSym) =
|
|
# don't be verbose unless the module belongs to the main package:
|
|
if graph.config.belongsToProjectPackage(module):
|
|
graph.config.notes = graph.config.mainPackageNotes
|
|
else:
|
|
if graph.config.mainPackageNotes == {}: graph.config.mainPackageNotes = graph.config.notes
|
|
graph.config.notes = graph.config.foreignPackageNotes
|
|
|
|
proc moduleHasChanged*(graph: ModuleGraph; module: PSym): bool {.inline.} =
|
|
# under `nim nifc` a module whose cached translation unit is reused
|
|
# does not generate code; the set is empty for every other command
|
|
result = module.position notin graph.icReusedModules
|