From 17bbb48d8a04aaf6cc53777fe4da6ba1b7fff61b Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 22 Apr 2021 17:36:28 +0100 Subject: [PATCH] Warn on redundant `auto_cast`, and make an error on `-vet` --- src/check_expr.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index a915aa92f..9818b5015 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -10075,7 +10075,16 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type return kind; } if (type_hint) { + Type *type = type_of_expr(ac->expr); check_cast(c, o, type_hint); + if (is_type_typed(type) && are_types_identical(type, type_hint)) { + if (build_context.vet) { + error(node, "Redundant 'auto_cast' applied to expression"); + } else { + warning(node, "Redundant 'auto_cast' applied to expression"); + } + } + } o->expr = node; return Expr_Expr;