aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-05-20 13:32:16 +0100
committergingerBill <bill@gingerbill.org>2024-05-20 13:32:16 +0100
commit542c3d7561df82486310f355ca84a88fa5af3f9f (patch)
treebfd7be65126efc6fc677353e082bfd178b827002 /src/parser.cpp
parent5473758467610e8d18581f0dab11dd5f5c416484 (diff)
Improve "Expected a type" syntax error
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index e296e6935..5aa11b5d0 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -3499,8 +3499,14 @@ gb_internal Array<Ast *> parse_ident_list(AstFile *f, bool allow_poly_names) {
gb_internal Ast *parse_type(AstFile *f) {
Ast *type = parse_type_or_ident(f);
if (type == nullptr) {
- Token token = advance_token(f);
- syntax_error(token, "Expected a type");
+ Token prev_token = f->curr_token;
+ Token token = {};
+ if (f->curr_token.kind == Token_OpenBrace) {
+ token = f->curr_token;
+ } else {
+ token = advance_token(f);
+ }
+ syntax_error(token, "Expected a type, got '%.*s'", LIT(prev_token.string));
return ast_bad_expr(f, token, f->curr_token);
} else if (type->kind == Ast_ParenExpr &&
unparen_expr(type) == nullptr) {