From 4a70e44f06e637762eec0fd875eb94b84c3f4037 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 13:27:15 +0000 Subject: feat(codegen): accept pointers to C-struct records in EXTERN signatures A TYPE record whose fields are all C types, C structs or pointer types to C structs now crosses the EXTERN "C" boundary through a pointer type. Records by value are rejected for now, and a pointer to a record with a non-C field names that field. Co-Authored-By: Claude Opus 5.5 --- tests/iii/extern-struct-rejected/case.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/iii/extern-struct-rejected/case.json (limited to 'tests/iii/extern-struct-rejected/case.json') diff --git a/tests/iii/extern-struct-rejected/case.json b/tests/iii/extern-struct-rejected/case.json new file mode 100644 index 0000000..6a4483f --- /dev/null +++ b/tests/iii/extern-struct-rejected/case.json @@ -0,0 +1,12 @@ +{ + "errors": [ + { + "reason": "EXTERN\\ parameter\\ 1\\ of\\ puts\\ uses\\ record\\ Person,\\ which\\ is\\ not\\ a\\ C\\ struct:\\ field\\ Name\\ of\\ Person\\ has\\ type\\ STRING", + "line": 12 + }, + { + "reason": "EXTERN\\ parameter\\ 1\\ of\\ abs\\ cannot\\ be\\ record\\ Point\\ by\\ value;\\ use\\ a\\ pointer\\ type\\ to\\ it", + "line": 13 + } + ] +} -- cgit v1.3.1-4-g156e