1
Fork 0

Auto merge of #100251 - compiler-errors:tuple-trait-2, r=jackh726

Implement `std::marker::Tuple`

Split out from #99943 (https://github.com/rust-lang/rust/pull/99943#pullrequestreview-1064459183).

Implements part of rust-lang/compiler-team#537
r? `@jackh726`
This commit is contained in:
bors 2022-09-12 03:24:29 +00:00
commit 3194958217
15 changed files with 181 additions and 11 deletions

View file

@ -1609,7 +1609,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
};
// (*) Prefer `BuiltinCandidate { has_nested: false }`, `PointeeCandidate`,
// `DiscriminantKindCandidate`, and `ConstDestructCandidate` to anything else.
// `DiscriminantKindCandidate`, `ConstDestructCandidate`, and `TupleCandidate`
// to anything else.
//
// This is a fix for #53123 and prevents winnowing from accidentally extending the
// lifetime of a variable.
@ -1629,7 +1630,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
BuiltinCandidate { has_nested: false }
| DiscriminantKindCandidate
| PointeeCandidate
| ConstDestructCandidate(_),
| ConstDestructCandidate(_)
| TupleCandidate,
_,
) => true,
(
@ -1637,7 +1639,8 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
BuiltinCandidate { has_nested: false }
| DiscriminantKindCandidate
| PointeeCandidate
| ConstDestructCandidate(_),
| ConstDestructCandidate(_)
| TupleCandidate,
) => false,
(ParamCandidate(other), ParamCandidate(victim)) => {