[ ] Add macros.
- [ ] #solidify polymoprhic procedures.
+ [X] #solidify polymoprhic procedures.
API Expansion:
There are many different places where the standard API for WASI and JS
compose :: proc (a: $A, f: proc (A) -> $B, g: proc (B) -> $C) -> C do return g(f(a));
-specific_compose :: #solidify compose { A = f32, B = f32, C = u32 };
+specific_compose_0 :: #solidify compose { B = u32 };
+specific_compose_1 :: #solidify specific_compose_0 { A = f32 };
main :: proc (args: [] cstr) {
printf("max(1, 2) = %i\n", math.max(1, 2));
// printf("max_f32(1, 2) = %i\n", max_f32(cast(u32) 1, cast(u32) 2));
-
+ println(specific_compose_1(
+ 2,
+ proc (a: f32) -> i32 { return ~~(a * 2); },
+ proc (b: i32) -> i32 { return ~~(b + 6); }));
}
\ No newline at end of file
*psolid = (AstDirectiveSolidify *) solid->resolved_proc;
symres_expression((AstTyped **) &solid->poly_proc);
+ if (solid->poly_proc && solid->poly_proc->kind == Ast_Kind_Directive_Solidify) {
+ solid->poly_proc = (AstPolyProc *) ((AstDirectiveSolidify *) solid->poly_proc)->resolved_proc;
+ }
+
if (!solid->poly_proc || solid->poly_proc->kind != Ast_Kind_Polymorphic_Proc) {
onyx_report_error(solid->token->pos, "Expected polymorphic procedure in #solidify directive.");
return;