feat(ffi-linkage): consume extern LIB "csym" rename for fns (Phase 1.2b)
parseFnDecl parses the optional [LIB] ["csym"] tail after the extern/export keyword into FnDecl.extern_lib/extern_name (mirrors '#foreign LIB "csym"'). declareFunction unifies the symbol-name override: rename_c_name = foreign_expr.c_name (for #foreign) OR fd.extern_name (for extern) -> declare under the C name and map sx->C in foreign_name_map; the dedupe guard now covers extern too. examples/1224 green: 'c_abs :: (n) -> i32 extern "abs";' resolves c_abs to libc abs -> c_abs(-42) = 42. 1223 (bare extern) unregressed. Suite green (635 corpus / 443 unit). extern_lib is parsed + stored but not a linking driver — like '#foreign libc', it references a lib; the #library decl + build flags remain the separate linking axis (decision 4). green commit.
This commit is contained in:
@@ -75,6 +75,11 @@ historical carve-out — keep `issues/*.md` provenance, gate the live tree only.
|
||||
hand-authored success snapshot (`c_abs(-42) = 42`). RED (635 ran, 1 failed — parse
|
||||
error: `"abs"` after `extern` not yet accepted). `xfail`; 1.2b greens it. (Also
|
||||
recovered a formatter-clobbered `parser.zig` — see Known issues.)
|
||||
- (1.2b) `parseFnDecl` parses the optional `[LIB] ["csym"]` tail into
|
||||
`extern_lib`/`extern_name`; `declareFunction` unifies the rename (foreign c_name OR
|
||||
extern_name → declare under C name, map sx→C) and extends the dedupe guard to
|
||||
extern. 1224 green (`c_abs`→`abs`); 1223 unregressed. Suite green (635/443).
|
||||
`green` commit. extern_lib parsed+stored (lib linking stays the `#library` axis).
|
||||
|
||||
## Known issues
|
||||
- **Workflow hazard (1.2):** an editor format-on-save (or `zig fmt`) clobbered the
|
||||
|
||||
Reference in New Issue
Block a user