Browse Source

Warn on redundant `auto_cast`, and make an error on `-vet`

gingerBill 4 years ago
parent
commit
17bbb48d8a
1 changed files with 9 additions and 0 deletions
  1. 9 0
      src/check_expr.cpp

+ 9 - 0
src/check_expr.cpp

@@ -10075,7 +10075,16 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type
 			return kind;
 			return kind;
 		}
 		}
 		if (type_hint) {
 		if (type_hint) {
+			Type *type = type_of_expr(ac->expr);
 			check_cast(c, o, type_hint);
 			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;
 		o->expr = node;
 		return Expr_Expr;
 		return Expr_Expr;