diff --git a/src/ir/lower.zig b/src/ir/lower.zig index 2fb0ad8..22620bd 100644 --- a/src/ir/lower.zig +++ b/src/ir/lower.zig @@ -1992,6 +1992,16 @@ pub const Lowering = struct { break :blk self.emitPlaceholder(eff_fn_name); } } + // NOTE: `xx : *void` (e.g. + // `class_addMethod(_, _, xx my_imp, _)`) + // is intentionally NOT diagnosed here. + // Manually-constructed Closure values + // legitimately store default-conv sx fns + // into a `*void` slot for sx-side dispatch + // through the closure trampoline ABI. The + // compiler can't distinguish C-side vs + // sx-side use from the cast alone. + // examples/50-smoke.sx has both shapes. } } break :blk self.builder.emit(.{ .func_ref = fid }, .s64);