From 003dbcb7e6deff1a8872b8a0c85d8efa645755aa Mon Sep 17 00:00:00 2001 From: nub31 Date: Sat, 17 May 2025 21:58:15 +0200 Subject: [PATCH] ... --- example/c/bindings.nub | 31 +++++++++++++++++++++- example/program.nub | 10 ------- src/compiler/Nub.Lang/Backend/Generator.cs | 2 +- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/example/c/bindings.nub b/example/c/bindings.nub index 9738661..e3fc6c4 100644 --- a/example/c/bindings.nub +++ b/example/c/bindings.nub @@ -1,2 +1,31 @@ +extern func printf(fmt: string, ...args: any) +extern func getchar(): i32 extern func puts(str: string) -extern func printf(fmt: string, ...args: any) \ No newline at end of file +extern func putchar(c: i32): i32 +extern func fgets(str: ^u8, size: i32, stream: ^any): ^u8 +extern func fputs(str: ^u8, stream: ^any): i32 +extern func fopen(filename: ^u8, mode: ^u8): ^any +extern func fclose(stream: ^any): i32 + +extern func malloc(size: i64): ^any +extern func calloc(num: i64, size: i64): ^any +extern func realloc(ptr: ^any, size: i64): ^any +extern func free(ptr: ^any) + +extern func strlen(str: ^u8): i64 +extern func strcpy(dest: ^u8, src: ^u8): ^u8 +extern func strncpy(dest: ^u8, src: ^u8, n: i64): ^u8 +extern func strcat(dest: ^u8, src: ^u8): ^u8 +extern func strcmp(s1: ^u8, s2: ^u8): i32 +extern func strstr(haystack: ^u8, needle: ^u8): ^u8 + +extern func sin(x: f64): f64 +extern func cos(x: f64): f64 +extern func tan(x: f64): f64 +extern func sqrt(x: f64): f64 +extern func pow(x: f64, y: f64): f64 +extern func abs(x: i32): i32 + +extern func time(t: ^i64): i64 +extern func clock(): i64 +extern func sleep(seconds: u32): i32 diff --git a/example/program.nub b/example/program.nub index 2818f3b..21c647e 100644 --- a/example/program.nub +++ b/example/program.nub @@ -1,15 +1,5 @@ import c -struct Test { - text: ^string -} - global func main(argc: i64, argv: i64) { - text = "test" - - x = new Test { - text = &text - } - printf("%s\n", (&x)^.text^) } \ No newline at end of file diff --git a/src/compiler/Nub.Lang/Backend/Generator.cs b/src/compiler/Nub.Lang/Backend/Generator.cs index c3aa160..b60e9af 100644 --- a/src/compiler/Nub.Lang/Backend/Generator.cs +++ b/src/compiler/Nub.Lang/Backend/Generator.cs @@ -301,7 +301,7 @@ public class Generator GenerateBlock(node.Body); - if (node.Body.Statements.Last() is not ReturnNode) + if (node.Body.Statements.LastOrDefault() is not ReturnNode) { if (!node.ReturnType.HasValue && node.Name == "main") {