about summary refs log tree commit diff
diff options
context:
space:
mode:
author许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>2025-01-20 12:38:31 +0800
committerGitHub <noreply@github.com>2025-01-20 12:38:31 +0800
commit3f2f695d68334ca4ecc8aec0aa38b5391051c987 (patch)
treef9416f39096ebe4d787479f8375cee4502c9119a
parent1419f79acf0ef701ba6fdfcc4f2e7040ed31f0ae (diff)
parent93a19501c2bad56e73f0ac9f3ae062b614d30832 (diff)
downloadrust-3f2f695d68334ca4ecc8aec0aa38b5391051c987.tar.gz
rust-3f2f695d68334ca4ecc8aec0aa38b5391051c987.zip
Rollup merge of #135310 - estebank:issue-135289, r=Nadrieril
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.rs9
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