fixes unexpected transforming of runnableExamples (#9158)

This commit is contained in:
Steve Kellock
2018-10-09 14:14:54 -04:00
committed by Andreas Rumpf
parent 33458894da
commit 173e8c4913
3 changed files with 9 additions and 7 deletions

View File

@@ -1660,6 +1660,11 @@ proc isCompileTimeProc*(s: PSym): bool {.inline.} =
result = s.kind == skMacro or
s.kind == skProc and sfCompileTime in s.flags
proc isRunnableExamples*(n: PNode): bool =
# Templates and generics don't perform symbol lookups.
result = n.kind == nkSym and n.sym.magic == mRunnableExamples or
n.kind == nkIdent and n.ident.s == "runnableExamples"
proc requiredParams*(s: PSym): int =
# Returns the number of required params (without default values)
# XXX: Perhaps we can store this in the `offset` field of the

View File

@@ -398,16 +398,11 @@ proc prepareExamples(d: PDoc; n: PNode) =
runnableExamples.add newTree(nkBlockStmt, newNode(nkEmpty), copyTree savedLastSon)
testExample(d, runnableExamples)
proc isRunnableExample(n: PNode): bool =
# Templates and generics don't perform symbol lookups.
result = n.kind == nkSym and n.sym.magic == mRunnableExamples or
n.kind == nkIdent and n.ident.s == "runnableExamples"
proc getAllRunnableExamplesRec(d: PDoc; n, orig: PNode; dest: var Rope) =
if n.info.fileIndex != orig.info.fileIndex: return
case n.kind
of nkCallKinds:
if isRunnableExample(n[0]) and
if isRunnableExamples(n[0]) and
n.len >= 2 and n.lastSon.kind == nkStmtList:
prepareExamples(d, n)
dispA(d.conf, dest, "\n<p><strong class=\"examples_text\">$1</strong></p>\n",

View File

@@ -493,7 +493,9 @@ proc semTemplBody(c: var TemplCtx, n: PNode): PNode =
else:
result = semTemplBodySons(c, n)
of nkCallKinds-{nkPostfix}:
result = semTemplBodySons(c, n)
# do not transform runnableExamples (bug #9143)
if not isRunnableExamples(n[0]):
result = semTemplBodySons(c, n)
of nkDotExpr, nkAccQuoted:
# dotExpr is ambiguous: note that we explicitly allow 'x.TemplateParam',
# so we use the generic code for nkDotExpr too