aboutsummaryrefslogtreecommitdiff
path: root/src/check_type.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-07-10 12:39:42 +0100
committergingerBill <bill@gingerbill.org>2024-07-10 12:39:42 +0100
commitc83307f26f1978143056df1e8881a6b81897f0b5 (patch)
treeec9eeedb7c090a15d69835052818d1d8acd3f965 /src/check_type.cpp
parent30204837cee046ed8f2bce1305f14798466cca46 (diff)
Give error message suggestion when doing `^x` instead of `x^` if `x` is an r-value
Diffstat (limited to 'src/check_type.cpp')
-rw-r--r--src/check_type.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/check_type.cpp b/src/check_type.cpp
index cd329af00..dd8559114 100644
--- a/src/check_type.cpp
+++ b/src/check_type.cpp
@@ -3337,6 +3337,10 @@ gb_internal bool check_type_internal(CheckerContext *ctx, Ast *e, Type **type, T
gbString s = expr_to_string(pt->type);
error(e, "^ is used for pointer types, did you mean '&%s'?", s);
gb_string_free(s);
+ } else if (is_type_pointer(o.type)) {
+ gbString s = expr_to_string(pt->type);
+ error(e, "^ is used for pointer types, did you mean a dereference: '%s^'?", s);
+ gb_string_free(s);
} else {
// NOTE(bill): call check_type_expr again to get a consistent error message
elem = check_type_expr(&c, pt->type, nullptr);