diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2025-01-09 23:13:00 +0000 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2025-01-09 23:13:00 +0000 |
| commit | 93a19501c2bad56e73f0ac9f3ae062b614d30832 (patch) | |
| tree | fab6658d73f8e4316a09193f594cc86408868fa8 | |
| parent | a580b5c379b4fca50dfe5afc0fc0ce00921e4e00 (diff) | |
| download | rust-93a19501c2bad56e73f0ac9f3ae062b614d30832.tar.gz rust-93a19501c2bad56e73f0ac9f3ae062b614d30832.zip | |
Always force non-trimming of path in `unreachable_patterns` lint
Creating a "trimmed DefID path" when no error is being emitted is an ICE (on purpose). If we create a trimmed path for a lint that is then silenced before being emitted causes a known ICE. This side-steps the issue by always using `with_no_trimmed_path!`. This was verified to fix https://github.com/quinn-rs/quinn/, but couldn't write a repro case for the test suite. Fix #135289.
| -rw-r--r-- | compiler/rustc_mir_build/src/thir/pattern/check_match.rs | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs index a13b00e1921..66310867200 100644 --- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs +++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs @@ -1086,14 +1086,7 @@ fn find_fallback_pattern_typo<'tcx>( let vis = cx.tcx.visibility(item.owner_id); if vis.is_accessible_from(parent, cx.tcx) { accessible.push(item_name); - let path = if item_name == name { - // We know that the const wasn't in scope because it has the exact - // same name, so we suggest the full path. - with_no_trimmed_paths!(cx.tcx.def_path_str(item.owner_id)) - } else { - // The const is likely just typoed, and nothing else. - cx.tcx.def_path_str(item.owner_id) - }; + let path = with_no_trimmed_paths!(cx.tcx.def_path_str(item.owner_id)); accessible_path.push(path); } else if name == item_name { // The const exists somewhere in this crate, but it can't be imported |
