ffi 0.8: #foreign call sites inside struct/protocol/closure/inline-if

95/95 regression tests pass (+ffi-08-foreign-in-method).

One trivial C helper (`ffi_method_helper`) called from each of the
major sx surface constructs that can host an FFI site:

  1. struct method body                Counter.next
  2. protocol impl method body         impl Doubler for Counter
  3. closure value body                make_adder's `closure(...)`
  4. comptime-gated branch             `inline if OS == .macos { ... }`

No new ABI shapes — the lowering route a `#foreign` call site takes
shouldn't depend on its enclosing construct, and the test pins that
lemma. A future lowering refactor that, say, breaks protocol-dispatch
fast-paths for FFI-calling impl methods will fail here directly
instead of being caught only by the chess Android regression.

The `inline if` branches for ios/linux compile down to nothing on
macOS, so only the macOS arm fires at runtime — useful smoke test
that the comptime gate works around FFI sites too.
This commit is contained in:
agra
2026-05-19 11:57:44 +03:00
parent 3855f2351e
commit d0ccb92ef7
5 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1,5 @@
method next 1 = 10
method next 2 = 20
protocol = 60
closure(5) = 150
inline if macos = 70