Prechádzať zdrojové kódy

Give error message suggestion when doing `^x` instead of `x^` if `x` is an r-value

gingerBill 1 rok pred
rodič
commit
c83307f26f
1 zmenil súbory, kde vykonal 4 pridanie a 0 odobranie
  1. 4 0
      src/check_type.cpp

+ 4 - 0
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);