diff options
Diffstat (limited to 'tests/errors')
| -rw-r--r-- | tests/errors/lend_branch.zc | 6 | ||||
| -rw-r--r-- | tests/errors/lend_give.zc | 6 | ||||
| -rw-r--r-- | tests/errors/lend_return.zc | 6 | ||||
| -rw-r--r-- | tests/errors/lend_unrestored.zc | 6 | ||||
| -rw-r--r-- | tests/errors/move_live_owner.zc | 5 | ||||
| -rw-r--r-- | tests/errors/recast_plain.zc | 6 | ||||
| -rw-r--r-- | tests/errors/unused.zc | 2 |
7 files changed, 36 insertions, 1 deletions
diff --git a/tests/errors/lend_branch.zc b/tests/errors/lend_branch.zc new file mode 100644 index 0000000..594047f --- /dev/null +++ b/tests/errors/lend_branch.zc @@ -0,0 +1,6 @@ +namespace; +include rt; + +// expect: buf: is lent to global sink; assign the global again before the block that lent it ends +word sink; +fn main() { word buf = rt.new(4); sink = m*buf; if (buf[0]) { sink = 0; } return 0; } diff --git a/tests/errors/lend_give.zc b/tests/errors/lend_give.zc new file mode 100644 index 0000000..2fd2f5b --- /dev/null +++ b/tests/errors/lend_give.zc @@ -0,0 +1,6 @@ +namespace; +include rt; + +// expect: buf: is lent to global sink; assign the global again before giving the local away +word sink; +fn main() { word buf = rt.new(4); sink = m*buf; rt.free(buf); sink = 0; return 0; } diff --git a/tests/errors/lend_return.zc b/tests/errors/lend_return.zc new file mode 100644 index 0000000..b0c4b53 --- /dev/null +++ b/tests/errors/lend_return.zc @@ -0,0 +1,6 @@ +namespace; +include rt; + +// expect: buf: is lent to global sink; assign the global again before the block that lent it ends +word sink; +fn main() { word buf = rt.new(4); sink = m*buf; if (buf[0]) return 1; sink = 0; return 0; } diff --git a/tests/errors/lend_unrestored.zc b/tests/errors/lend_unrestored.zc new file mode 100644 index 0000000..1b316df --- /dev/null +++ b/tests/errors/lend_unrestored.zc @@ -0,0 +1,6 @@ +namespace; +include rt; + +// expect: buf: is lent to global sink; assign the global again before the block that lent it ends +word sink; +fn main() { word buf = rt.new(4); sink = m*buf; buf[0] = 1; return 0; } diff --git a/tests/errors/move_live_owner.zc b/tests/errors/move_live_owner.zc new file mode 100644 index 0000000..e36909c --- /dev/null +++ b/tests/errors/move_live_owner.zc @@ -0,0 +1,5 @@ +namespace; +include rt; + +// expect: still owns an object; overwriting it would leak it +fn main() { word r = rt.new(4); { word n = rt.new(8); n[0] = 1; r = n; } r[0] = 2; return 0; } diff --git a/tests/errors/recast_plain.zc b/tests/errors/recast_plain.zc new file mode 100644 index 0000000..7d26f3c --- /dev/null +++ b/tests/errors/recast_plain.zc @@ -0,0 +1,6 @@ +namespace; +include rt; + +// expect: p: isn't an owned object, so there is no ownership to recast +word sink; +fn main() { word p = m*rt.new(4); sink = d*p; return 0; } diff --git a/tests/errors/unused.zc b/tests/errors/unused.zc index 5c88ce3..7a1c7e4 100644 --- a/tests/errors/unused.zc +++ b/tests/errors/unused.zc @@ -1,5 +1,5 @@ namespace; include rt; -// expect: x is never read +// expect: x: owned object is never used fn main() { let x = rt.new(3); return 0; } |
