diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-05-06 13:30:03 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-06 13:30:03 +0200 |
| commit | bcc9aa01b59432bed050f922e04391ea469263b4 (patch) | |
| tree | 96efe525f18a0b1b70f0e21184f63a52f4cd29c8 /compiler/rustc_hir_analysis/src/structured_errors.rs | |
| parent | 151a070afe09c0c844e8d9af98a20fee56a5a7f2 (diff) | |
| parent | 2e346b6f3f3be75d0e0b536a6a8cf2f82241b3b4 (diff) | |
| download | rust-bcc9aa01b59432bed050f922e04391ea469263b4.tar.gz rust-bcc9aa01b59432bed050f922e04391ea469263b4.zip | |
Rollup merge of #110577 - compiler-errors:drop-impl-fulfill, r=lcnr
Use fulfillment to check `Drop` impl compatibility Use an `ObligationCtxt` to ensure that a `Drop` impl does not have stricter requirements than the ADT that it's implemented for, rather than using a `SimpleEqRelation` to (more or less) syntactically equate predicates on an ADT with predicates on an impl. r? types ### Some background The old code reads: ```rust // An earlier version of this code attempted to do this checking // via the traits::fulfill machinery. However, it ran into trouble // since the fulfill machinery merely turns outlives-predicates // 'a:'b and T:'b into region inference constraints. It is simpler // just to look for all the predicates directly. ``` I'm not sure what this means, but perhaps in the 8 years since that this comment was written (cc #23638) it's gotten easier to process region constraints after doing fulfillment? I don't know how this logic differs from anything we do in the `compare_impl_item` module. Ironically, later on it says: ```rust // However, it may be more efficient in the future to batch // the analysis together via the fulfill (see comment above regarding // the usage of the fulfill machinery), rather than the // repeated `.iter().any(..)` calls. ``` Also: * Removes `SimpleEqRelation` which was far too syntactical in its relation. * Fixes #110557
Diffstat (limited to 'compiler/rustc_hir_analysis/src/structured_errors.rs')
0 files changed, 0 insertions, 0 deletions
