diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/data/spawn_hint.zc | 11 | ||||
| -rwxr-xr-x | tests/test.sh | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tests/data/spawn_hint.zc b/tests/data/spawn_hint.zc new file mode 100644 index 0000000..b59657d --- /dev/null +++ b/tests/data/spawn_hint.zc @@ -0,0 +1,11 @@ +namespace; +include rt, actor; +struct res { int fd; void drop() { rt.put_s("closed"); } } +actor Echo { int total; int handle(int x) { return x; } } +fn main() { + res* r = rt.new(res); r.fd = 3; + Echo* e = rt.new(Echo); + e.spawn(); + e.close(); + return r.fd; +} diff --git a/tests/test.sh b/tests/test.sh index 9aee6d0..6dfecf1 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -580,6 +580,7 @@ s_lsp() { chk "$($lsp < examples/struct_closure_opt.zc | grep -c error)" "0" "lsp: methods and closures check clean" case "$($lsp < tests/data/drop_hint.zc)" in *"value with drop is never bound; it drops at the end of this statement"*) chk 1 1 "lsp hint: a value with drop that is never bound";; *) chk 0 1 "lsp hint: a value with drop that is never bound";; esac case "$($lsp < tests/data/reassign_hint.zc)" in *"p: reassigning frees the old value"*) chk 1 1 "lsp hint: reassigning an owner frees the old value";; *) chk 0 1 "lsp hint: reassigning an owner frees the old value";; esac + case "$($lsp < tests/data/spawn_hint.zc)" in *"r: has drop and is live at spawn; the worker's copy drops it too"*) chk 1 1 "lsp hint: a value with drop live at spawn";; *) chk 0 1 "lsp hint: a value with drop live at spawn";; esac # a file of a larger build checks on its own: its bodyless declarations are not errors in check mode for f in src/runtime/rt.zc src/runtime/run.zc src/lsp/server.zc; do chk "$($lsp < $f | grep -c ': error:')" "0" "lsp: $f checks alone"; done # the compiler is several files that only make sense together: check them as one document |
