change runnableExamples implementation; fixes #8641; fixes #7135; runnableExamples works for templates and generics
This commit is contained in:
parent
4cf704bb3e
commit
1948eadc24
5 changed files with 70 additions and 42 deletions
|
|
@ -607,28 +607,6 @@ proc myProcess(context: PPassContext, n: PNode): PNode =
|
|||
#if c.config.cmd == cmdIdeTools: findSuggest(c, n)
|
||||
rod.storeNode(c.graph, c.module, result)
|
||||
|
||||
proc testExamples(c: PContext) =
|
||||
let outputDir = c.config.getNimcacheDir / "runnableExamples"
|
||||
createDir(outputDir)
|
||||
let inp = toFullPath(c.config, c.module.info)
|
||||
let outp = outputDir / extractFilename(inp.changeFileExt"" & "_examples.nim")
|
||||
let nimcache = outp.changeFileExt"" & "_nimcache"
|
||||
renderModule(c.runnableExamples, inp, outp, conf = c.config)
|
||||
let backend = if isDefined(c.config, "js"): "js"
|
||||
elif isDefined(c.config, "cpp"): "cpp"
|
||||
elif isDefined(c.config, "objc"): "objc"
|
||||
else: "c"
|
||||
if os.execShellCmd(os.getAppFilename() & " " & backend & " --nimcache:" & nimcache & " -r " & outp) != 0:
|
||||
quit "[Examples] failed: see " & outp
|
||||
else:
|
||||
# keep generated source file `outp` to allow inspection.
|
||||
rawMessage(c.config, hintSuccess, ["runnableExamples: " & outp])
|
||||
removeFile(outp.changeFileExt(ExeExt))
|
||||
try:
|
||||
removeDir(nimcache)
|
||||
except OSError:
|
||||
discard
|
||||
|
||||
proc myClose(graph: ModuleGraph; context: PPassContext, n: PNode): PNode =
|
||||
var c = PContext(context)
|
||||
if c.config.cmd == cmdIdeTools and not c.suggestionsMade:
|
||||
|
|
@ -644,7 +622,6 @@ proc myClose(graph: ModuleGraph; context: PPassContext, n: PNode): PNode =
|
|||
popOwner(c)
|
||||
popProcCon(c)
|
||||
storeRemaining(c.graph, c.module)
|
||||
if c.runnableExamples != nil: testExamples(c)
|
||||
|
||||
const semPass* = makePass(myOpen, myProcess, myClose,
|
||||
isFrontend = true)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue