diff options
| author | Oli Scherer <github333195615777966@oli-obk.de> | 2024-12-10 10:12:36 +0000 |
|---|---|---|
| committer | Oli Scherer <github333195615777966@oli-obk.de> | 2024-12-12 20:06:03 +0000 |
| commit | 2ffe3b1e70a55867de5c85b9cb24cb1a2a3d6162 (patch) | |
| tree | 8b53d33212677e3b2d417a61e102ebb335d4f412 /compiler/rustc_hir_analysis/src | |
| parent | c0e0d8f8746740768c13bdb632d7b7f1fef2f17a (diff) | |
| download | rust-2ffe3b1e70a55867de5c85b9cb24cb1a2a3d6162.tar.gz rust-2ffe3b1e70a55867de5c85b9cb24cb1a2a3d6162.zip | |
Move impl constness into impl trait header
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/collect.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/compiler/rustc_hir_analysis/src/collect.rs b/compiler/rustc_hir_analysis/src/collect.rs index 96d2714252a..debfe6af0fb 100644 --- a/compiler/rustc_hir_analysis/src/collect.rs +++ b/compiler/rustc_hir_analysis/src/collect.rs @@ -1611,7 +1611,7 @@ fn impl_trait_header(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::ImplTrai impl_.of_trait.as_ref().map(|ast_trait_ref| { let selfty = tcx.type_of(def_id).instantiate_identity(); - check_impl_constness(tcx, tcx.is_const_trait_impl(def_id.to_def_id()), ast_trait_ref); + check_impl_constness(tcx, impl_.constness, ast_trait_ref); let trait_ref = icx.lowerer().lower_impl_trait_ref(ast_trait_ref, selfty); @@ -1619,22 +1619,23 @@ fn impl_trait_header(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::ImplTrai trait_ref: ty::EarlyBinder::bind(trait_ref), safety: impl_.safety, polarity: polarity_of_impl(tcx, def_id, impl_, item.span), + constness: impl_.constness, } }) } fn check_impl_constness( tcx: TyCtxt<'_>, - is_const: bool, + constness: hir::Constness, hir_trait_ref: &hir::TraitRef<'_>, -) -> Option<ErrorGuaranteed> { - if !is_const { - return None; +) { + if let hir::Constness::NotConst = constness { + return; } - let trait_def_id = hir_trait_ref.trait_def_id()?; + let Some(trait_def_id) = hir_trait_ref.trait_def_id() else { return }; if tcx.is_const_trait(trait_def_id) { - return None; + return; } let trait_name = tcx.item_name(trait_def_id).to_string(); @@ -1650,14 +1651,14 @@ fn check_impl_constness( ), (false, _) | (_, false) => (None, ""), }; - Some(tcx.dcx().emit_err(errors::ConstImplForNonConstTrait { + tcx.dcx().emit_err(errors::ConstImplForNonConstTrait { trait_ref_span: hir_trait_ref.path.span, trait_name, local_trait_span, suggestion_pre, marking: (), adding: (), - })) + }); } fn polarity_of_impl( |
