From af42b61ed68387e27df97efe0b3952f9dbdb4e19 Mon Sep 17 00:00:00 2001 From: Niels Bross Date: Mon, 27 Jan 2025 21:38:54 +0100 Subject: [PATCH] Struct output shenanigans --- Parsing.jai | 7 +++++++ module.jai | 1 + test/struct_output_vertex.ink | 15 +++++++++++++++ 3 files changed, 23 insertions(+) create mode 100644 test/struct_output_vertex.ink diff --git a/Parsing.jai b/Parsing.jai index 0514b28..94ec26f 100644 --- a/Parsing.jai +++ b/Parsing.jai @@ -393,6 +393,9 @@ advance :: (parse_state : *Parse_State) { parse_state.previous = parse_state.current; while true { + if parse_state.current_token_index >= parse_state.tokens.count { + break; + } parse_state.current = *parse_state.tokens[parse_state.current_token_index]; parse_state.current_token_index += 1; if parse_state.current.kind != .TOKEN_ERROR break; @@ -799,6 +802,10 @@ argument_list :: (parse_state : *Parse_State) -> *AST_Node { if check(parse_state, .TOKEN_RIGHTPAREN) break; consume(parse_state, .TOKEN_COMMA, "Expect ',' after function argument."); + + if parse_state.result.had_error { + break; + } } consume(parse_state, .TOKEN_RIGHTPAREN, "Expect ')' after function call."); diff --git a/module.jai b/module.jai index 6df2b3f..59c70a5 100644 --- a/module.jai +++ b/module.jai @@ -372,6 +372,7 @@ type_variable_to_field :: (type_variables : []Type_Variable, scope_stack : Scope field_hint.kind = .Target; } else { field_hint.custom_hint_name = copy_string(hint.ident_value); + field_hint.kind = .Custom; } array_add(*field.hints, field_hint); } diff --git a/test/struct_output_vertex.ink b/test/struct_output_vertex.ink new file mode 100644 index 0000000..7ebf857 --- /dev/null +++ b/test/struct_output_vertex.ink @@ -0,0 +1,15 @@ +VS_Out :: struct { + pos : float4 @outposition; +} + +vertex main :: (pos : float3 @position) -> VS_Out { + vs_out : VS_Out; + + vs_out.pos = float4(pos, 1.0); + + return vs_out; +} + +pixel main :: (ps_in : VS_Out) -> float4 @target { + return float4(1, 1, 1, 1); +}