From 2713dd70fc92787d045d7002aa11f761e42319d6 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 27 Jul 2020 15:43:05 -0500 Subject: [PATCH] Bug fixes with first class functions --- onyx | Bin 343288 -> 343368 bytes progs/fcf.onyx | 11 +++++++++-- src/onyxchecker.c | 7 +++++++ src/onyxtypes.c | 2 ++ src/onyxwasm.c | 8 ++++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/onyx b/onyx index c90b1111f5debb7bc5536bfa7ea449cdcdf3ff50..5691a378a7c311f3b29a4a1352769f9ce575a5a7 100755 GIT binary patch delta 39409 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 LqI>w!xaRX;Qu27C delta 39344 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 rdfu~M{aKmaA<9V-J?Q2rVbb!!Ru}$sOd<39bE i32, val: i32) { f(val); } @@ -25,8 +25,15 @@ execute :: proc (use dc: ^DeferredCall) -> i32 { return func(left, right); } +echo :: proc (i: i32) -> i32 { + print(i); + return i; +} + proc #export "main" { - call_me(print_i32, 10); + call_me(echo, 10); + + print(add as i32); funcs[0] = add; funcs[1] = sub; diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 5d5c7c10..d73db301 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -173,6 +173,13 @@ CHECK(call, AstCall* call) { while (actual_param != NULL) { if (check_expression((AstTyped **) &actual_param)) return 1; + if (actual_param->value->kind == Ast_Kind_Overloaded_Function) { + onyx_message_add(Msg_Type_Literal, + actual_param->token->pos, + "cannot pass overloaded functions as parameters."); + return 1; + } + // NOTE: Splat structures into multiple arguments if (actual_param->type->kind == Type_Kind_Struct) { if (!type_struct_is_simple(actual_param->type)) { diff --git a/src/onyxtypes.c b/src/onyxtypes.c index 71cab661..45b18079 100644 --- a/src/onyxtypes.c +++ b/src/onyxtypes.c @@ -154,6 +154,8 @@ b32 types_are_compatible(Type* t1, Type* t2) { if (t2->kind != Type_Kind_Function) return 0; if (t1->Function.param_count != t2->Function.param_count) return 0; + if (!types_are_compatible(t1->Function.return_type, t2->Function.return_type)) return 0; + fori (i, 0, t1->Function.param_count - 1) { if (!types_are_compatible(t1->Function.params[i], t2->Function.params[i])) return 0; } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 966b9ca8..56afd045 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -1067,6 +1067,14 @@ COMPILE_FUNC(cast, AstUnaryOp* cast) { return; } + if (to->kind == Type_Kind_Function) { + onyx_message_add(Msg_Type_Literal, + cast->token->pos, + "cannot cast to a function"); + WI(WI_DROP); + return; + } + if (to->kind == Type_Kind_Basic && to->Basic.kind == Basic_Kind_Void) { WI(WI_DROP); return; -- 2.25.1