With -vet-style, give suggestion of separating where clauses with a comma rather than '&&'

This improves the error messages
This commit is contained in:
gingerBill
2024-05-09 15:56:00 +01:00
parent b0f0e4d02a
commit f54977336b
3 changed files with 16 additions and 2 deletions
+14
View File
@@ -6193,6 +6193,20 @@ gb_internal bool evaluate_where_clauses(CheckerContext *ctx, Ast *call_expr, Sco
}
return false;
}
if (ast_file_vet_style(ctx->file)) {
Ast *c = unparen_expr(clause);
if (c->kind == Ast_BinaryExpr && c->BinaryExpr.op.kind == Token_CmpAnd) {
ERROR_BLOCK();
error(c, "Prefer to separate 'where' clauses with a comma rather than '&&'");
gbString x = expr_to_string(c->BinaryExpr.left);
gbString y = expr_to_string(c->BinaryExpr.right);
error_line("\tSuggestion: '%s, %s'", x, y);
gb_string_free(y);
gb_string_free(x);
}
}
}
}
+1 -1
View File
@@ -1166,7 +1166,7 @@ gb_internal void check_bit_field_type(CheckerContext *ctx, Type *bit_field_type,
}
}
if (all_ones && all_booleans) {
if (build_context.vet_flags & VetFlag_Style) {
if (ast_file_vet_style(ctx->file)) {
char const *msg = "This 'bit_field' is better expressed as a 'bit_set' since all of the fields are booleans, of 1-bit in size, and the backing type is an integer (-vet-style)";
error(node, msg);
} else {
+1 -1
View File
@@ -1,7 +1,7 @@
#include "parser_pos.cpp"
gb_internal u64 ast_file_vet_flags(AstFile *f) {
if (f->vet_flags_set) {
if (f != nullptr && f->vet_flags_set) {
return f->vet_flags;
}
return build_context.vet_flags;