From ed245f6c084809d03ee1575347f2f438928c4435 Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Thu, 17 Aug 2023 16:52:50 +0900 Subject: [PATCH] fix: `self` typing bug --- crates/erg_compiler/context/register.rs | 5 +---- tests/should_ok/class_attr.er | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/erg_compiler/context/register.rs b/crates/erg_compiler/context/register.rs index d7be69e7..c80e132a 100644 --- a/crates/erg_compiler/context/register.rs +++ b/crates/erg_compiler/context/register.rs @@ -403,13 +403,10 @@ impl Context { ast::ParamPattern::RefMut(_) => ref_mut(self_t, None), _ => self_t, }; - // spec_t == self_t (not spec_t <: self_t) + // spec_t <: self_t if let Err(es) = self.sub_unify(spec_t, &self_t, name, Some(name.inspect())) { errs.extend(es); } - if let Err(es) = self.sub_unify(&self_t, spec_t, name, Some(name.inspect())) { - errs.extend(es); - } } else { log!(err "self_t is None"); } diff --git a/tests/should_ok/class_attr.er b/tests/should_ok/class_attr.er index 24aaf180..a29ce080 100644 --- a/tests/should_ok/class_attr.er +++ b/tests/should_ok/class_attr.er @@ -4,6 +4,7 @@ C:: aaa = 1 C. bbb = 1 + id self = self f self = None D = Inherit C @@ -24,3 +25,4 @@ D. d = D.new({.x = 1}) print! d.bbb, d.ddd, d.g() +assert d.id().ddd == 1