Skip to content

Commit 4323939

Browse files
authored
Rollup merge of #140284 - bend-n:fix-expectation-unmet, r=jieyouxu
remove expect() in `unnecessary_transmutes` removes expect() from #136083 and fixes #140277 includes regression test r? lcnr
2 parents 8888488 + d3a4ebc commit 4323939

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

compiler/rustc_mir_transform/src/check_unnecessary_transmutes.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,8 @@ impl<'tcx> Visitor<'tcx> for UnnecessaryTransmuteChecker<'_, 'tcx> {
8787
&& let Some((func_def_id, _)) = func.const_fn_def()
8888
&& self.tcx.is_intrinsic(func_def_id, sym::transmute)
8989
&& let span = self.body.source_info(location).span
90-
&& let Some(lint) = self.is_unnecessary_transmute(
91-
func,
92-
self.tcx.sess.source_map().span_to_snippet(arg).expect("ok"),
93-
span,
94-
)
90+
&& let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(arg)
91+
&& let Some(lint) = self.is_unnecessary_transmute(func, snippet, span)
9592
&& let Some(hir_id) = terminator.source_info.scope.lint_root(&self.body.source_scopes)
9693
{
9794
self.tcx.emit_node_span_lint(UNNECESSARY_TRANSMUTES, hir_id, span, lint);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@ compile-flags: --remap-path-prefix=/=/non-existent
2+
// helper for ../unnecessary-transmute-path-remap-ice-140277.rs
3+
4+
#[macro_export]
5+
macro_rules! transmute {
6+
($e:expr) => {{
7+
let e = $e;
8+
std::mem::transmute(e)
9+
}};
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@ aux-crate: zerocopy=unnecessary-transmute-path-remap-ice-140277-trans.rs
2+
//@ check-pass
3+
// tests for a regression in linting for unnecessary transmutes
4+
// where a span was inacessible for snippet procuring,
5+
// when remap-path-prefix was set, causing a panic.
6+
7+
fn bytes_at_home(x: [u8; 4]) -> u32 {
8+
unsafe { zerocopy::transmute!(x) }
9+
}
10+
fn main() {}

0 commit comments

Comments
 (0)