aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/conformance/4-statements/memdebug_report_drop.zc15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/conformance/4-statements/memdebug_report_drop.zc b/tests/conformance/4-statements/memdebug_report_drop.zc
new file mode 100644
index 0000000..cf33b69
--- /dev/null
+++ b/tests/conformance/4-statements/memdebug_report_drop.zc
@@ -0,0 +1,15 @@
+// expect: leak: line 9 1 words (drop)/leak: line 10 2 words/207/
+// spec 4.11, 6.15: rt.memreport() marks a leaked value whose drop never ran with (drop): a leaked resource, not just words
+include rt;
+void pn(int x) { rt.put_n(x); rt.put_c(10); }
+struct res { int fd; void drop() { rt.put_s("closed "); } }
+memdebug on;
+fn main() {
+ unchecked {
+ res* f = rt.new(res);
+ int* q = rt.new(2);
+ pn(rt.memreport() * 100 + 7);
+ }
+ return 0;
+}
+// zc0: skip