From 4eda4366c86ab3b4edfb6f388f7ff864c6344d52 Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Wed, 9 Apr 2025 20:23:19 -0700 Subject: [PATCH] check types in debug mode in impl Debug for Expr, helping to catch bugs --- crates/fayalite/src/expr.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/fayalite/src/expr.rs b/crates/fayalite/src/expr.rs index f511c97..e070674 100644 --- a/crates/fayalite/src/expr.rs +++ b/crates/fayalite/src/expr.rs @@ -274,6 +274,17 @@ pub struct Expr { impl fmt::Debug for Expr { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + #[cfg(debug_assertions)] + { + let Self { + __enum, + __ty, + __flow, + } = self; + let expr_ty = __ty.canonical(); + let enum_ty = __enum.to_expr().__ty; + assert_eq!(expr_ty, enum_ty, "expr ty mismatch:\nExpr {{\n__enum: {__enum:?},\n__ty: {__ty:?},\n__flow: {__flow:?}\n}}"); + } self.__enum.fmt(f) } }