From 929f777960c87bb0f6775c38e2d253cf50c46adb Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Tue, 27 Dec 2022 16:11:50 +0900 Subject: [PATCH] Update tyvar.rs --- compiler/erg_compiler/context/tyvar.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/compiler/erg_compiler/context/tyvar.rs b/compiler/erg_compiler/context/tyvar.rs index 97c00719..2805333f 100644 --- a/compiler/erg_compiler/context/tyvar.rs +++ b/compiler/erg_compiler/context/tyvar.rs @@ -657,22 +657,27 @@ impl Context { super_exists } - fn check_trait_impl( - &self, - class: &Type, - trait_: &Type, - loc: Location, - ) -> SingleTyCheckResult<()> { + fn check_trait_impl(&self, class: &Type, trait_: &Type, loc: Location) -> TyCheckResult<()> { if !self.trait_impl_exists(class, trait_) { - Err(TyCheckError::no_trait_impl_error( + let class = if cfg!(feature = "debug") { + class.clone() + } else { + self.deref_tyvar(class.clone(), Variance::Covariant, loc)? + }; + let trait_ = if cfg!(feature = "debug") { + trait_.clone() + } else { + self.deref_tyvar(trait_.clone(), Variance::Covariant, loc)? + }; + Err(TyCheckErrors::from(TyCheckError::no_trait_impl_error( self.cfg.input.clone(), line!() as usize, - class, - trait_, + &class, + &trait_, loc, self.caused_by(), None, - )) + ))) } else { Ok(()) }