Fix merging of segment_index in path resolution

This commit is contained in:
Jonas Schievink 2021-02-05 15:14:33 +01:00
parent ac5958485e
commit 6239fe4730

View file

@ -108,7 +108,6 @@ impl DefMap {
shadow: BuiltinShadowMode, shadow: BuiltinShadowMode,
) -> ResolvePathResult { ) -> ResolvePathResult {
let mut result = ResolvePathResult::empty(ReachedFixedPoint::No); let mut result = ResolvePathResult::empty(ReachedFixedPoint::No);
result.segment_index = Some(usize::max_value());
let mut arc; let mut arc;
let mut current_map = self; let mut current_map = self;
@ -128,7 +127,11 @@ impl DefMap {
} }
// FIXME: this doesn't seem right; what if the different namespace resolutions come from different crates? // FIXME: this doesn't seem right; what if the different namespace resolutions come from different crates?
result.krate = result.krate.or(new.krate); result.krate = result.krate.or(new.krate);
result.segment_index = result.segment_index.min(new.segment_index); result.segment_index = match (result.segment_index, new.segment_index) {
(Some(idx), None) => Some(idx),
(Some(old), Some(new)) => Some(old.max(new)),
(None, new) => new,
};
match &current_map.block { match &current_map.block {
Some(block) => { Some(block) => {