From bce00747af9b69191ba4e63f3db44afd51509b8b Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Fri, 23 Dec 2022 22:44:45 +0900 Subject: [PATCH] Update inquire.rs --- compiler/erg_compiler/context/inquire.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/erg_compiler/context/inquire.rs b/compiler/erg_compiler/context/inquire.rs index afa58eb9..bae67d63 100644 --- a/compiler/erg_compiler/context/inquire.rs +++ b/compiler/erg_compiler/context/inquire.rs @@ -2234,19 +2234,20 @@ impl Context { } fn get_gen_t_require_attr_t<'a>(&'a self, gen: &'a GenTypeObj, attr: &str) -> Option<&'a Type> { - match gen.require_or_sup().unwrap().typ() { - Type::Record(rec) => { + match gen.require_or_sup().map(|req_sup| req_sup.typ()) { + Some(Type::Record(rec)) => { if let Some(t) = rec.get(attr) { return Some(t); } } - other => { + Some(other) => { let obj = self.rec_get_const_obj(&other.local_name()); let obj = enum_unwrap!(obj, Some:(ValueObj::Type:(TypeObj::Generated:(_)))); if let Some(t) = self.get_gen_t_require_attr_t(obj, attr) { return Some(t); } } + None => {} } if let Some(additional) = gen.additional() { if let Type::Record(gen) = additional.typ() {