diff options
| author | lcnr <rust@lcnr.de> | 2022-08-13 13:49:11 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2022-08-13 21:04:52 +0200 |
| commit | 1ec2b9bce8caf6d132b0fc42affe51b8cac8f458 (patch) | |
| tree | 70f7fbc247a26398dd2ee02b14308026f8564b6b /compiler/rustc_trait_selection/src | |
| parent | 75b7e52e92c3b00fc891b47f5b2efdff0a2be55a (diff) | |
wf correctly shallow_resolve consts
Diffstat (limited to 'compiler/rustc_trait_selection/src')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/wf.rs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/wf.rs b/compiler/rustc_trait_selection/src/traits/wf.rs index 414857f0acc..7a5e67ff74b 100644 --- a/compiler/rustc_trait_selection/src/traits/wf.rs +++ b/compiler/rustc_trait_selection/src/traits/wf.rs @@ -31,9 +31,9 @@ pub fn obligations<'a, 'tcx>( if resolved_ty == ty { // No progress, bail out to prevent "livelock". return None; + } else { + resolved_ty } - - resolved_ty } _ => ty, } @@ -41,16 +41,14 @@ pub fn obligations<'a, 'tcx>( } GenericArgKind::Const(ct) => { match ct.kind() { - ty::ConstKind::Infer(infer) => { - let resolved = infcx.shallow_resolve(infer); - if resolved == infer { + ty::ConstKind::Infer(_) => { + let resolved = infcx.shallow_resolve(ct); + if resolved == ct { // No progress. return None; + } else { + resolved } - - infcx - .tcx - .mk_const(ty::ConstS { kind: ty::ConstKind::Infer(resolved), ty: ct.ty() }) } _ => ct, } |
