strictFuncs+views: add test that imports stdlib modules (#16878)

This commit attempts to improve testing of strictFuncs and views, and
prevent regressions like #16873 (resolved by 0b01eddace).

We previously only explicitly tested strictFuncs and views with a
smaller number of stdlib modules, mostly in:
- tests/effects/tstrict_funcs.nim
- tests/views/tcan_compile_nim.nim

Note that this commit leaves the `pegs` module commented out; it
cannot currently be compiled with `--experimental:views` (see #16892).

Note also that this commit is not sufficient to test strictFuncs and
views, but it does detect a subset of problems.
This commit is contained in:
ee7
2021-02-03 16:00:29 +01:00
committed by GitHub
parent 6f1289b80c
commit 14c61ecf24
3 changed files with 198 additions and 12 deletions

View File

@@ -3,18 +3,6 @@ discard """
"""
import tables, streams, parsecsv
# We import the below modules to check that they compile with `strictFuncs`.
# They are otherwise unused in this file.
import
complex,
critbits,
httpcore,
math,
nre,
rationals,
sequtils,
strutils,
uri
type
Contig2Reads = TableRef[string, seq[string]]

View File

@@ -0,0 +1,177 @@
discard """
cmd: "nim $target $options --hints:on --experimental:strictFuncs --experimental:views --threads:on -d:ssl -d:nimCoroutines $file"
targets: "c"
"""
{.warning[UnusedImport]: off.}
when defined(linux):
import linenoise
import
algorithm,
asyncdispatch,
asyncfile,
asyncftpclient,
asyncfutures,
asynchttpserver,
asyncmacro,
asyncnet,
asyncstreams,
atomics,
base64,
bitops,
browsers,
cgi,
chains,
colors,
complex,
cookies,
coro,
cpuinfo,
cpuload,
critbits,
cstrutils,
db_common,
db_mysql,
db_odbc,
db_postgres,
db_sqlite,
deques,
distros,
dynlib,
encodings,
endians,
epoll,
fenv,
hashes,
heapqueue,
hotcodereloading,
htmlgen,
htmlparser,
httpclient,
httpcore,
inotify,
intsets,
json,
kqueue,
lenientops,
lexbase,
lists,
locks,
logging,
macrocache,
macros,
marshal,
math,
md5,
memfiles,
mersenne,
mimetypes,
nativesockets,
net,
nimhcr,
# nimprof,
nre,
oids,
options,
os,
osproc,
parsecfg,
parsecsv,
parsejson,
parseopt,
parsesql,
parseutils,
parsexml,
pathnorm,
# pegs,
posix_utils,
prelude,
punycode,
random,
rationals,
rdstdin,
re,
registry,
reservedmem,
rlocks,
ropes,
rtarrays,
selectors,
sequtils,
sets,
sharedlist,
sharedtables,
smtp,
ssl_certs,
ssl_config,
stats,
streams,
streamwrapper,
strformat,
strmisc,
strscans,
strtabs,
strutils,
sugar,
tables,
terminal,
threadpool,
times,
typeinfo,
typetraits,
unicode,
unidecode,
unittest,
uri,
volatile,
winlean,
xmlparser,
xmltree
import experimental/[
diff,
]
import packages/docutils/[
highlite,
rst,
rstast,
rstgen,
]
import std/[
compilesettings,
decls,
editdistance,
effecttraits,
enumerate,
enumutils,
exitprocs,
isolation,
jsonutils,
logic,
monotimes,
packedsets,
setutils,
sha1,
socketstreams,
stackframes,
sums,
time_t,
varints,
with,
wordwrap,
wrapnils,
]
import std/private/[
asciitables,
decode_helpers,
gitutils,
globs,
miscdollars,
since,
strimpl,
underscored_calls,
]

View File

@@ -0,0 +1,21 @@
discard """
cmd: "nim $target $options --hints:on --experimental:strictFuncs --experimental:views $file"
targets: "js"
"""
{.warning[UnusedImport]: off.}
import
asyncjs,
dom,
dom_extensions,
jsconsole,
jsffi,
jsre
import std/[
jsbigints,
]
import std/private/[
jsutils,
]