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:
1
tests/expected/ffi-08-foreign-in-method.exit
Normal file
1
tests/expected/ffi-08-foreign-in-method.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
5
tests/expected/ffi-08-foreign-in-method.txt
Normal file
5
tests/expected/ffi-08-foreign-in-method.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
method next 1 = 10
|
||||
method next 2 = 20
|
||||
protocol = 60
|
||||
closure(5) = 150
|
||||
inline if macos = 70
|
||||
Reference in New Issue
Block a user