mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-04 02:39:20 +00:00
fix: trait impl check for declared classes
This commit is contained in:
parent
22c2016eae
commit
44b4b8d82a
4 changed files with 24 additions and 6 deletions
|
@ -1129,15 +1129,23 @@ impl Context {
|
|||
}
|
||||
|
||||
pub(crate) fn register_methods(&mut self, t: &Type, ctx: &Self) {
|
||||
let declared_in = NormalizedPathBuf::from(self.module_path());
|
||||
let declared_in = declared_in.exists().then_some(declared_in);
|
||||
for impl_trait in ctx.super_traits.iter() {
|
||||
let declared_in = NormalizedPathBuf::from(self.module_path());
|
||||
let declared_in = declared_in.exists().then_some(declared_in);
|
||||
if let Some(mut impls) = self.trait_impls().get_mut(&impl_trait.qual_name()) {
|
||||
impls.insert(TraitImpl::new(t.clone(), impl_trait.clone(), declared_in));
|
||||
impls.insert(TraitImpl::new(
|
||||
t.clone(),
|
||||
impl_trait.clone(),
|
||||
declared_in.clone(),
|
||||
));
|
||||
} else {
|
||||
self.trait_impls().register(
|
||||
impl_trait.qual_name(),
|
||||
set![TraitImpl::new(t.clone(), impl_trait.clone(), declared_in)],
|
||||
set![TraitImpl::new(
|
||||
t.clone(),
|
||||
impl_trait.clone(),
|
||||
declared_in.clone()
|
||||
)],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue