// `#import c` foreign-name exemption: C names that collide with sx's reserved // type spellings import unedited. Foreign decls are treated as RAW — their names // are never type-classified nor reserved-checked — so the generated `#foreign` // bindings import and call without hand-edits (no backticks needed). This covers // parameter names (`s1`/`s2`), a function whose own NAME is a reserved spelling // (`s2`), and bare-calling that function (its callee spelling parses as a type // but resolves to the foreign fn). Before issue 0089 the params errored with // "'s1' is a reserved type name and cannot be used as an identifier", and the // bare call errored with "unresolved 's2'". // Regression (issue 0089). #import "modules/std.sx"; #import c { #include "1220-ffi-c-import-reserved-name-params.h"; #source "1220-ffi-c-import-reserved-name-params.c"; }; main :: () -> s32 { print("pick(10,20,0) = {}\n", ffi_pick(10, 20, 0)); print("pick(10,20,1) = {}\n", ffi_pick(10, 20, 1)); print("sum(10,20) = {}\n", ffi_sum(10, 20)); print("s2(4) bare = {}\n", s2(4)); 0 }