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()

View file

@ -1,31 +0,0 @@
discard """
action: compile
"""
import strutils
const
HelpText = """
+-----------------------------------------------------------------+
| Maintenance program for Nim |
| Version $1|
| (c) 2012 Andreas Rumpf |
+-----------------------------------------------------------------+
Compiled at: $2, $3
Usage:
koch [options] command [options for command]
Options:
--force, -f, -B, -b forces rebuild
--help, -h shows this help and quits
Possible Commands:
boot [options] bootstraps with given command line options
clean cleans Nim project; removes generated files
web generates the website
csource [options] builds the C sources for installation
zip builds the installation ZIP package
inno builds the Inno Setup installer
""" % [NimVersion & spaces(44-len(NimVersion)),
CompileDate, CompileTime]
echo HelpText

View file

@ -9,16 +9,6 @@ import os
import math
import strutils
template forceConst(a: untyped): untyped =
## Force evaluation at CT, useful for example here:
## `callFoo(forceConst(getBar1()), getBar2())`
## instead of:
## block:
## const a = getBar1()
## `callFoo(a, getBar2())`
const ret = a
ret
static:
# TODO: add more tests
block: #getAppFilename, gorgeEx, gorge
@ -51,6 +41,6 @@ static:
block:
# Check against bugs like #9176
doAssert getCurrentCompilerExe() == forceConst(getCurrentCompilerExe())
doAssert getCurrentCompilerExe() == getCurrentCompilerExe().static
if false: #pending #9176
doAssert gorgeEx("unexistant") == forceConst(gorgeEx("unexistant"))
doAssert gorgeEx("unexistant") == gorgeEx("unexistant").static