Skip to content

Commit 05a62c5

Browse files
committed
Remove clone_code method
1 parent dc21fcb commit 05a62c5

File tree

3 files changed

+15
-31
lines changed

3 files changed

+15
-31
lines changed

compiler/rustc_infer/src/traits/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl<'tcx> TraitObligation<'tcx> {
8080

8181
pub fn derived_cause(
8282
&self,
83-
variant: fn(DerivedObligationCause<'tcx>) -> ObligationCauseCode<'tcx>,
83+
variant: impl FnOnce(DerivedObligationCause<'tcx>) -> ObligationCauseCode<'tcx>,
8484
) -> ObligationCause<'tcx> {
8585
self.cause.clone().derived_cause(self.predicate, variant)
8686
}

compiler/rustc_middle/src/traits/mod.rs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,6 @@ impl<'tcx> ObligationCause<'tcx> {
163163
self.code.as_deref().unwrap_or(&MISC_OBLIGATION_CAUSE_CODE)
164164
}
165165

166-
pub fn clone_code(&self) -> Lrc<ObligationCauseCode<'tcx>> {
167-
match &self.code {
168-
Some(code) => code.clone(),
169-
None => Lrc::new(MISC_OBLIGATION_CAUSE_CODE),
170-
}
171-
}
172-
173166
pub fn map_code(
174167
&mut self,
175168
f: impl FnOnce(Lrc<ObligationCauseCode<'tcx>>) -> Lrc<ObligationCauseCode<'tcx>>,

compiler/rustc_trait_selection/src/traits/select/confirmation.rs

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ use rustc_span::def_id::DefId;
1919
use crate::traits::project::{normalize_with_depth, normalize_with_depth_to};
2020
use crate::traits::util::{self, closure_trait_ref_and_return_type, predicate_for_trait_def};
2121
use crate::traits::{
22-
BuiltinDerivedObligation, DerivedObligationCause, ImplDerivedObligation,
23-
ImplDerivedObligationCause, ImplSource, ImplSourceAutoImplData, ImplSourceBuiltinData,
24-
ImplSourceClosureData, ImplSourceConstDestructData, ImplSourceDiscriminantKindData,
25-
ImplSourceFnPointerData, ImplSourceGeneratorData, ImplSourceObjectData, ImplSourcePointeeData,
26-
ImplSourceTraitAliasData, ImplSourceTraitUpcastingData, ImplSourceUserDefinedData, Normalized,
27-
ObjectCastObligation, Obligation, ObligationCause, OutputTypeParameterMismatch,
28-
PredicateObligation, Selection, SelectionError, TraitNotObjectSafe, TraitObligation,
29-
Unimplemented, VtblSegment,
22+
BuiltinDerivedObligation, ImplDerivedObligation, ImplDerivedObligationCause, ImplSource,
23+
ImplSourceAutoImplData, ImplSourceBuiltinData, ImplSourceClosureData,
24+
ImplSourceConstDestructData, ImplSourceDiscriminantKindData, ImplSourceFnPointerData,
25+
ImplSourceGeneratorData, ImplSourceObjectData, ImplSourcePointeeData, ImplSourceTraitAliasData,
26+
ImplSourceTraitUpcastingData, ImplSourceUserDefinedData, Normalized, ObjectCastObligation,
27+
Obligation, ObligationCause, OutputTypeParameterMismatch, PredicateObligation, Selection,
28+
SelectionError, TraitNotObjectSafe, TraitObligation, Unimplemented, VtblSegment,
3029
};
3130

3231
use super::BuiltinImplConditions;
@@ -1125,21 +1124,13 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
11251124
let substs = self.rematch_impl(impl_def_id, &new_obligation);
11261125
debug!(?substs, "impl substs");
11271126

1128-
let derived = DerivedObligationCause {
1129-
parent_trait_pred: obligation.predicate,
1130-
parent_code: obligation.cause.clone_code(),
1131-
};
1132-
let derived_code = ImplDerivedObligation(Box::new(ImplDerivedObligationCause {
1133-
derived,
1134-
impl_def_id,
1135-
span: obligation.cause.span,
1136-
}));
1137-
1138-
let cause = ObligationCause::new(
1139-
obligation.cause.span,
1140-
obligation.cause.body_id,
1141-
derived_code,
1142-
);
1127+
let cause = obligation.derived_cause(|derived| {
1128+
ImplDerivedObligation(Box::new(ImplDerivedObligationCause {
1129+
derived,
1130+
impl_def_id,
1131+
span: obligation.cause.span,
1132+
}))
1133+
});
11431134
ensure_sufficient_stack(|| {
11441135
self.vtable_impl(
11451136
impl_def_id,

0 commit comments

Comments
 (0)