Skip to content

Commit

Permalink
strictFuncs+views: add test that imports stdlib modules (nim-lang#16878)
Browse files Browse the repository at this point in the history
This commit attempts to improve testing of strictFuncs and views, and
prevent regressions like nim-lang#16873 (resolved by 0b01edd).

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 nim-lang#16892).

Note also that this commit is not sufficient to test strictFuncs and
views, but it does detect a subset of problems.
  • Loading branch information
ee7 authored Feb 3, 2021
1 parent 6f1289b commit 14c61ec
Show file tree
Hide file tree
Showing 3 changed files with 198 additions and 12 deletions.
12 changes: 0 additions & 12 deletions tests/effects/tstrict_funcs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
Expand Down
177 changes: 177 additions & 0 deletions tests/effects/tstrict_funcs_imports.nim
Original file line number Diff line number Diff line change
@@ -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,
]
21 changes: 21 additions & 0 deletions tests/effects/tstrict_funcs_imports_js.nim
Original file line number Diff line number Diff line change
@@ -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,
]

0 comments on commit 14c61ec

Please sign in to comment.