diff options
| author | 2026-10-15 02:37:04 +0330 | |
|---|---|---|
| committer | 2026-10-15 02:40:51 +0330 | |
| commit | b02bdd043673419357eadd6c646b9a77c62e5792 (patch) | |
| tree | 629a8b700ecf64f19d70d2a6b00aa3eb79ade004 /src/compiler/expr.zc | |
| parent | destructors: nothing moves out of a value with a drop: pop on an array with a... (diff) | |
destructors: hint: x: has drop and is live at spawn; the worker's copy drops it too, on x.spawn() of a mailbox struct for each live owned local with a drop; spec 6.15.4, lsp hint check
Diffstat (limited to 'src/compiler/expr.zc')
| -rw-r--r-- | src/compiler/expr.zc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/compiler/expr.zc b/src/compiler/expr.zc index 7687394..1cd765b 100644 --- a/src/compiler/expr.zc +++ b/src/compiler/expr.zc @@ -1199,6 +1199,7 @@ word field(int c) { st = xty; if (rt.eq_w(n, "drop") && (is_op(s_lp) || is_op(s_eq)) && (isptr(st) || st == tword) && !(isptr(st) && st[4][0] == TY_STRUCT && tfindfield(st[4], n) >= 0)) return drop_member(c, borrowed); if (rt.eq_w(n, "send") && is_op(s_lp) && isptr(st) && st[4][0] == TY_STRUCT && tfindfield(st[4], intern("__mailbox")) >= 0) send_check = 1; + if (rt.eq_w(n, "spawn") && is_op(s_lp) && isptr(st) && st[4][0] == TY_STRUCT && tfindfield(st[4], intern("__mailbox")) >= 0) spawn_hint(); if (st[0] == TY_ARR || st[0] == TY_DYN) { if (pmatch) probe_member(st); if (is_op(s_lp) && array_method(n)) { xaf = borrowed; return array_member(c, n); } |
