7568: Fix merging of `segment_index` in path resolution r=jonas-schievink a=jonas-schievink

This caused associated item lookup to fail when modifying `resolver.rs` to handle block expressions with inner items.

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
This commit is contained in:
bors[bot] 2021-02-05 14:16:12 +00:00 committed by GitHub
commit 5009958847
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -108,7 +108,6 @@ pub(super) fn resolve_path_fp_with_macro(
shadow: BuiltinShadowMode,
) -> ResolvePathResult {
let mut result = ResolvePathResult::empty(ReachedFixedPoint::No);
result.segment_index = Some(usize::max_value());
let mut arc;
let mut current_map = self;
@ -128,7 +127,11 @@ pub(super) fn resolve_path_fp_with_macro(
}
// FIXME: this doesn't seem right; what if the different namespace resolutions come from different crates?
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 {
Some(block) => {