cl-typeck: Insert impls into target type's namespace
TODO: Process imports like this lazily
This commit is contained in:
parent
f76756e0e4
commit
c9266d971f
@ -272,7 +272,23 @@ impl<'a> TypeResolvable<'a> for &'a Impl {
|
|||||||
.map_err(|_| "Unresolved type in impl target")?;
|
.map_err(|_| "Unresolved type in impl target")?;
|
||||||
|
|
||||||
prj[id].module.parent = Some(target);
|
prj[id].module.parent = Some(target);
|
||||||
|
match prj.pool.get_many_mut([id, target]) {
|
||||||
|
// TODO: Better error handling
|
||||||
|
Err(_) => Err(concat!(
|
||||||
|
file!(),
|
||||||
|
line!(),
|
||||||
|
column!(),
|
||||||
|
"id and target are same"
|
||||||
|
))?,
|
||||||
|
Ok([id, target]) => {
|
||||||
|
for (name, def) in &id.module.types {
|
||||||
|
target.module.insert_type(*name, *def);
|
||||||
|
}
|
||||||
|
for (name, def) in &id.module.values {
|
||||||
|
target.module.insert_value(*name, *def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Ok(DefKind::Impl(target))
|
Ok(DefKind::Impl(target))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user