diff options
| author | lcnr <rust@lcnr.de> | 2025-09-06 16:05:31 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-09-06 16:05:31 +0200 |
| commit | 381b3267aeebf1b3b6d400af6b9b0f2cc62ba390 (patch) | |
| tree | 5d16e3b1f0cd9dd6d009aa072e264ed423b1f9ad /compiler/rustc_borrowck/src | |
| parent | 45b9d13b455f820c12760e0fbf6ce69110a3aeda (diff) | |
| download | rust-381b3267aeebf1b3b6d400af6b9b0f2cc62ba390.tar.gz rust-381b3267aeebf1b3b6d400af6b9b0f2cc62ba390.zip | |
identity uses are ok, even if there are no defining uses
Diffstat (limited to 'compiler/rustc_borrowck/src')
| -rw-r--r-- | compiler/rustc_borrowck/src/region_infer/opaque_types/mod.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/rustc_borrowck/src/region_infer/opaque_types/mod.rs b/compiler/rustc_borrowck/src/region_infer/opaque_types/mod.rs index 72615cb33b3..95c5366a6c8 100644 --- a/compiler/rustc_borrowck/src/region_infer/opaque_types/mod.rs +++ b/compiler/rustc_borrowck/src/region_infer/opaque_types/mod.rs @@ -503,7 +503,16 @@ pub(crate) fn apply_computed_concrete_opaque_types<'tcx>( let mut errors = Vec::new(); for &(key, hidden_type) in opaque_types { let Some(expected) = get_concrete_opaque_type(concrete_opaque_types, key.def_id) else { - assert!(tcx.use_typing_mode_borrowck(), "non-defining use in defining scope"); + if !tcx.use_typing_mode_borrowck() { + if let ty::Alias(ty::Opaque, alias_ty) = hidden_type.ty.kind() + && alias_ty.def_id == key.def_id.to_def_id() + && alias_ty.args == key.args + { + continue; + } else { + unreachable!("non-defining use in defining scope"); + } + } errors.push(DeferredOpaqueTypeError::NonDefiningUseInDefiningScope { span: hidden_type.span, opaque_type_key: key, |
