Skip to content

Commit 238756e

Browse files
committedApr 19, 2023
Fix ICE for transmutability in candidate assembly
Don't skip transmutability check just because there may be generics in the ParamEnv. Fixes #110467
1 parent 7908a1d commit 238756e

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed
 

‎compiler/rustc_trait_selection/src/traits/select/candidate_assembly.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
775775
obligation: &TraitObligation<'tcx>,
776776
candidates: &mut SelectionCandidateSet<'tcx>,
777777
) {
778-
if obligation.has_non_region_param() {
778+
if obligation.predicate.has_non_region_param() {
779779
return;
780780
}
781781

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// check-pass
2+
#![crate_type = "lib"]
3+
#![feature(transmutability)]
4+
use std::mem::BikeshedIntrinsicFrom;
5+
pub struct Context;
6+
7+
pub fn is_maybe_transmutable<Src, Dst>()
8+
where
9+
Dst: BikeshedIntrinsicFrom<Src, Context>,
10+
{
11+
}
12+
13+
// The `T` here should not have any effect on checking
14+
// if transmutability is allowed or not.
15+
fn function_with_generic<T>() {
16+
is_maybe_transmutable::<(), ()>();
17+
}

0 commit comments

Comments
 (0)
Please sign in to comment.