diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2019-07-22 07:22:57 -0700 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-07-22 16:22:57 +0200 |
commit | 8c93c692b95da7b19a88cc0d56a8cdd20e3ae576 (patch) | |
tree | beb483894fa86518ab65f95b2c8c8536d37234b5 /tests/magics | |
parent | 30f2cec67164e3e774a4dd5948828a5c6a439532 (diff) | |
download | Nim-8c93c692b95da7b19a88cc0d56a8cdd20e3ae576.tar.gz |
run runnableExamples in the module scope (#11732) [feature]
Diffstat (limited to 'tests/magics')
-rw-r--r-- | tests/magics/trunnableexamples.nim | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/magics/trunnableexamples.nim b/tests/magics/trunnableexamples.nim new file mode 100644 index 000000000..e6b2b70f8 --- /dev/null +++ b/tests/magics/trunnableexamples.nim @@ -0,0 +1,60 @@ +discard """ +cmd: "nim doc $file" +action: "compile" +nimout: ''' +foo1 +foo2 +foo3 +foo5 +foo6 +foo7 +foo8 +foo9 +''' +joinable: false +""" + +proc fun*() = + runnableExamples: + block: # `defer` only allowed inside a block + defer: echo "foo1" + + runnableExamples: + # `fun*` only allowed at top level + proc fun*()=echo "foo2" + fun() + block: + defer: echo "foo3" + + runnableExamples: + # ditto + proc fun*()=echo "foo5" + fun() + + runnableExamples: + # `codeReordering` only allowed at top level + {.experimental: "codeReordering".} + proc fun1() = fun2() + proc fun2() = echo "foo6" + fun1() + + runnableExamples: + # only works at top level + import std/macros + macro myImport(a: static string): untyped = + newTree(nnkImportStmt, [newLit a]) + myImport "str" & "utils" + doAssert declared(isAlphaAscii) + echo "foo7" + +# also check for runnableExamples at module scope +runnableExamples: + block: + defer: echo "foo8" + +runnableExamples: + proc fun*()=echo "foo9" + fun() + +# note: there are yet other examples where putting runnableExamples at module +# scope is needed, for example when using an `include` before an `import`, etc. |