refactor(ffi-linkage): Phase 7.2 — migrate 13xx ffi-objc examples #foreign→extern

18 obj-c examples migrated (1308/1311-1317/1319/1320/1321/1341-1347): import
runtime classes '#foreign #objc_class("X") {' → '#objc_class("X") extern {'
(prefix→postfix) + fn/comment '#foreign'→'extern'. No 13xx snapshot asserts on
'foreign' text → all behavior-preserving; empty snapshot diff, corpus-validated.

Per the keep-list policy: KEPT identity-#foreign tests 1306/1318 (filename
ffi-*-foreign*); LEFT comment-only #foreign in the extern/export test files
1332/1348/1349 (no decls). Bare defined #objc_class examples (no #foreign) untouched
— not a purge target. Suite green (647 corpus / 444 unit, 0 failed).
This commit is contained in:
agra
2026-06-15 06:53:33 +03:00
parent 496390e442
commit a68f7c2e64
18 changed files with 21 additions and 21 deletions

View File

@@ -13,7 +13,7 @@
#import "modules/std.sx";
#import "modules/build.sx";
NSObject :: #foreign #objc_class("NSObject") {
NSObject :: #objc_class("NSObject") extern {
// Default mangling would yield selector "gimme" — NSObject has no
// such IMP. The override pins it to the real selector
// "description". Static method (no `self: *Self` first param).
@@ -25,7 +25,7 @@ NSObject :: #foreign #objc_class("NSObject") {
// only on this side — main only invokes the static path because we
// don't have a real NSDictionary in scope, but the declaration locks
// in the parser + AST + lowering wiring for the multi-arg shape.
NSDictionary :: #foreign #objc_class("NSDictionary") {
NSDictionary :: #objc_class("NSDictionary") extern {
lookup :: (self: *Self, key: *void) -> *void #selector("objectForKey:");
}