misc fixes: remove forceConst (obsolete by static), add more runnableExamples to system (#17896)

* misc fixes

* add runnableExamples for compileOption

* add runnableExamples for runnableExamples

* move tconsteval => tconst

* cleanup
This commit is contained in:
Timothee Cour 2021-04-30 22:26:52 -07:00 • committed by GitHub
commit 82996aee3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 78 additions and 88 deletions

35
tests/vm/tconst.nim Normal file
View file

@ -0,0 +1,35 @@
discard """
targets: "c cpp js"
"""
import std/strutils
template forceConst(a: untyped): untyped =
## Force evaluation at CT, but `static(a)` is simpler
const ret = a
ret
proc isNimVm(): bool =
when nimvm: result = true
else: result = false
block:
doAssert forceConst(isNimVm())
doAssert not isNimVm()
doAssert forceConst(isNimVm()) == static(isNimVm())
doAssert forceConst(isNimVm()) == isNimVm().static
template main() =
# xxx merge more const related tests here
block:
const
a = """
Version $1|
Compiled at: $2, $3
""" % [NimVersion & spaces(44-len(NimVersion)), CompileDate, CompileTime]
let b = $a
doAssert CompileTime in b
doAssert NimVersion in b
static: main()
main()