aboutsummaryrefslogtreecommitdiff
path: root/src/check_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-03-19 13:32:37 +0000
committergingerBill <bill@gingerbill.org>2024-03-19 13:32:37 +0000
commit80ecf5b68aa02a2445aa4cbf3d1d46ed5a007d75 (patch)
tree1bd9e3ef8a9ebed6fa59f51ab98bba538724e700 /src/check_stmt.cpp
parent5159f30c9cec63e467e82ed76d54988f58e3bdcd (diff)
On `x: [?]T = {...}`, minimize errors by using the `[?]T` expression as a kind of hint
Diffstat (limited to 'src/check_stmt.cpp')
-rw-r--r--src/check_stmt.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp
index a6ca4b9dd..4280e7578 100644
--- a/src/check_stmt.cpp
+++ b/src/check_stmt.cpp
@@ -1919,17 +1919,19 @@ gb_internal void check_value_decl_stmt(CheckerContext *ctx, Ast *node, u32 mod_f
e->Variable.thread_local_model = ac.thread_local_model;
}
- if (is_arch_wasm() && e->Variable.thread_local_model.len != 0) {
- // error(e->token, "@(thread_local) is not supported for this target platform");
- }
-
-
if (ac.is_static && ac.thread_local_model != "") {
error(e->token, "The 'static' attribute is not needed if 'thread_local' is applied");
}
}
+ // NOTE(bill): This is to improve error handling for things like `x: [?]T = {...}`
+ Ast *prev_type_hint_expr = ctx->type_hint_expr;
+ ctx->type_hint_expr = vd->type;
+
check_init_variables(ctx, entities, entity_count, vd->values, str_lit("variable declaration"));
+
+ ctx->type_hint_expr = prev_type_hint_expr;
+
check_arity_match(ctx, vd, false);
for (isize i = 0; i < entity_count; i++) {