From cb3183ba64bfb7440e8b414bb1124f8e50b697f6 Mon Sep 17 00:00:00 2001 From: Slendi Date: Tue, 9 Apr 2024 02:34:41 +0300 Subject: [PATCH] Fix bug with empty returns Signed-off-by: Slendi --- src/type_checker.odin | 4 +++- test_type_checker.cat | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/type_checker.odin b/src/type_checker.odin index 8cef177..fc7d9f6 100644 --- a/src/type_checker.odin +++ b/src/type_checker.odin @@ -468,6 +468,9 @@ type_check :: proc(ast: ^Node, parent_ast: ^Node) { message_create(.Error, fmt.aprintf("Return statement outside of function"), ast.range), ) } else { + if function_return_type.kind == .Integer && function_return_type.bit_size == 0 && ast.children[0] == nil { + break + } type_check(ast.children[0], ast) ok, cast_required := compare_types(function_return_type, ast.children[0].return_type) if cast_required { @@ -736,7 +739,6 @@ find_function_definitions :: proc(ast_: ^Node) -> (ret: [dynamic]^FunctionType) } append(&ret, fn) case .Struct: - fmt.printf("Struct found\n") struct_ := struct_create() should_ignore := true for field in ast.children { diff --git a/test_type_checker.cat b/test_type_checker.cat index fd3dd33..8f57595 100644 --- a/test_type_checker.cat +++ b/test_type_checker.cat @@ -28,6 +28,7 @@ fn DrawRectangleWrap(x y w h: i32, c: Color) { fn DrawCircleWrap(x y: i32, r: f32, c: Color) { DrawCircle x y r (ColorToRaylib c) + ret } let white :: .Color{69 69 69 255}