summary refs log tree commit diff
path: root/compiler/rustc_middle/src/traits
AgeCommit message (Collapse)AuthorLines
2022-04-04Auto merge of #95031 - compiler-errors:param-env-cache, r=Aaron1011bors-3/+10
Do not use `ParamEnv::and` when building a cache key from a param-env and trait eval candidate Do not use `ParamEnv::and` to cache a param-env with a selection/evaluation candidate. This is because if the param-env is `RevealAll` mode, and the candidate looks global (i.e. it has erased regions, which can show up when we normalize a projection type under a binder<sup>1</sup>), then when we use `ParamEnv::and` to pair the candidate and the param-env for use as a cache key, we will throw away the param-env's caller bounds, and we'll end up caching a candidate that we inferred from the param-env with a empty param-env, which may cause cache-hit later when we have an empty param-env, and possibly mess with normalization like we see in the referenced issue during codegen. Not sure how to trigger this with a more structured test, but changing `check-pass` to `build-pass` triggers the case that https://github.com/rust-lang/rust/issues/94903 detected. <sup>1.</sup> That is, we will replace the late-bound region with a placeholder, which gets canonicalized and turned into an infererence variable, which gets erased during region freshening right before we cache the result. Sorry, it's quite a few steps. Fixes #94903 r? `@Aaron1011` (or reassign as you see fit)
2022-04-01update commentlcnr-2/+1
2022-04-01convert more `DefId`s to `LocalDefId`lcnr-3/+3
2022-03-31obligation cause: `RepeatVec` -> `RepeatValueCopy`lcnr-5/+6
2022-03-30Spellchecking compiler commentsYuri Astrakhan-2/+2
This PR cleans up the rest of the spelling mistakes in the compiler comments. This PR does not change any literal or code spelling issues.
2022-03-26Do not use ParamEnv::and to cache param-env with candidateMichael Goulet-3/+10
2022-03-25Auto merge of #95280 - InfRandomness:infrandomness/Dtorck_clarification, ↵bors-7/+7
r=oli-obk Swap DtorckConstraint to DropckConstraint This change was made as per suspicion that this struct was never renamed after consistent use of DropCk. This also clarifies the meaning behind the name of this structure. Fixes https://github.com/rust-lang/rust/issues/94310
2022-03-25Rollup merge of #94391 - light4:issue-90319, r=estebankDylan DPC-2/+15
Fix ice when error reporting recursion errors Fixes: #90319, #92148, #93955
2022-03-24Swap DtorckConstraint to DropckConstraintInfRandomness-7/+7
This change was made as per suspicion that this struct was never renamed after consistent use of DropCk. This also clarifies the meaning behind the name of this structure.
2022-03-25Fix ice when error reporting recursion errorslightning1141-2/+15
Fixes: #90319, #92148, #93955
2022-03-24Properly track `ImplObligation`sEsteban Kuber-7/+20
Instead of probing for all possible impls that could have caused an `ImplObligation`, keep track of its `DefId` and obligation spans for accurate error reporting. Follow up to #89580. Addresses #89418. Remove some unnecessary clones. Tweak output for auto trait impl obligations.
2022-03-21Rename `~const Drop` to `~const Destruct`Deadbeef-12/+14
2022-03-16rustc_error: make ErrorReported impossible to constructmark-4/+6
There are a few places were we have to construct it, though, and a few places that are more invasive to change. To do this, we create a constructor with a long obvious name.
2022-03-11Improve `AdtDef` interning.Nicholas Nethercote-1/+1
This commit makes `AdtDef` use `Interned`. Much the commit is tedious changes to introduce getter functions. The interesting changes are in `compiler/rustc_middle/src/ty/adt.rs`.
2022-03-02rename ErrorReported -> ErrorGuaranteedmark-3/+3
2022-02-26suggest a float literal when dividing a floating-point type by {integer}Takayuki Maeda-0/+5
fix a message implement a rustfix-applicable suggestion implement `suggest_floating_point_literal` add `ObligationCauseCode::BinOp` remove duplicate code fix function names in uitests use `Diagnostic` instead of `DiagnosticBuilder`
2022-02-23Replace `&mut DiagnosticBuilder`, in signatures, with `&mut Diagnostic`.Eduard-Mihai Burtescu-2/+2
2022-02-17Suggest copying trait associated type bounds on lifetime errorJack Huey-0/+6
2022-02-09Ensure that queries only return Copy types.Camille GILLOT-5/+4
2022-01-31Do not store overlap_mode, just pass it down on insertSantiago Pastorino-13/+1
2022-01-31Move overlap_mode into trait level attribute + feature flagSantiago Pastorino-1/+49
2022-01-26Improve selection errors for `~const` trait boundsDeadbeef-4/+4
2022-01-18Check const Drop impls considering ConstIfConst boundsMichael Goulet-13/+20
2022-01-07Add query to avoid name comparison in `leaf_def`Matthew Jasper-29/+16
2021-12-23Auto merge of #92167 - pierwill:chalk-update, r=jackh726bors-30/+31
Update chalk to 0.75.0 - Compute flags in `intern_ty` - Remove `tracing-serde` from `PERMITTED_DEPENDENCIES` - Bump `tracing-tree` to 0.2.0 - Bump `tracing-subscriber` to 0.3.3
2021-12-22Update chalk to 0.75.0pierwill-30/+31
- Compute flags in `intern_ty` - Remove tracing-serde from PERMITTED_DEPENDENCIES - Disable `tracing-full` feature in `chalk-solve` - Bump tracing-tree to 0.2.0
2021-12-20Eliminate `ObligationCauseData`.Nicholas Nethercote-42/+40
This makes `Obligation` two words bigger, but avoids allocating a lot of the time. I previously tried this in #73983 and it didn't help much, but local timings look more promising now.
2021-12-15Remove `in_band_lifetimes` from `rustc_middle`Aaron Hill-3/+3
See #91867 This was mostly straightforward. In several places, I take advantage of the fact that lifetimes are non-hygenic: a macro declares the 'tcx' lifetime, which is then used in types passed in as macro arguments.
2021-12-13Keep info on pre-desugaring expression for better "incorrect `.await`" ↵Esteban Kuber-1/+1
suggestion Keep the `HirId` of `.await`ed expressions so in the case of a `fn` call on on a sync `fn`, we can suggest maybe turning it into an `async fn`.
2021-12-13Reduce verbosity for `?` on non-`Try` expressionsEsteban Kuber-0/+2
2021-12-13Reduce verbosity when calling `for`-loop on non-`Iterator` expressionEsteban Kuber-0/+2
2021-12-13When `.await` is called on a non-`Future` expression, suggest removalEsteban Kuber-0/+2
Keep track of the origin of a `T: Future` obligation when caused by an `.await` expression. Address #66731.
2021-12-12Revert "Auto merge of #91491 - spastorino:revert-91354, r=oli-obk"Deadbeef-8/+6
This reverts commit ff2439b7b9bafcfdff86b7847128014699df8442, reversing changes made to 2a9e0831d6603d87220cedd1b1293e2eb82ef55c.
2021-12-09Remove redundant [..]sest31-9/+9
2021-12-03Revert "Auto merge of #91354 - fee1-dead:const_env, r=spastorino"Santiago Pastorino-6/+8
This reverts commit 18bb8c61a975fff6424cda831ace5b0404277145, reversing changes made to d9baa361902b172be716f96619b909f340802dea.
2021-11-29Fix toolsDeadbeef-2/+2
2021-11-29Avoid storing the ImplPolarity and Constness next to a TraitRef and use ↵Oli Scherer-1/+1
TraitPredicate instead
2021-11-29Replace `ConstnessAnd<TraitRef>` with `TraitPredicate` which conveys the ↵Oli Scherer-4/+2
same information
2021-11-29Prefer TraitPredicate over ConstnessAnd<TraitRef>Oli Scherer-1/+1
2021-11-23Add supertraits method to rustc_middleMichael Goulet-0/+50
2021-11-14Simplify ObligationCauseData hash to skip ObligationCauseCodeThe8472-1/+10
selection deduplicates obligations through a hashset at some point, computing the hashes for ObligationCauseCode appears to dominate the hashing cost. bodyid + span + discriminant hash hopefully will sufficiently unique unique enough.
2021-11-07Remove some fields from `ObligationCauseCode`Matthew Jasper-2/+0
2021-10-24Point at overlapping impls when type annotations are neededEsteban Kuber-0/+12
2021-10-20Make EvaluationCache consider polarity as cache's keySantiago Pastorino-2/+4
2021-10-20Consider negative polarity on overlap checkSantiago Pastorino-2/+2
2021-10-10Fix spelling: Cannonical -> CanonicalJohn Kugelman-2/+2
2021-10-05Issue 89275 fix and testTom Farmer-4/+11
Issue 89275 fix and test Fix librustdoc OverflowError usage rust tidy run Issue 89275 fix and test
2021-10-03Remove re-export.Camille GILLOT-1/+1
2021-10-01Rollup merge of #88963 - fee1-dead:const-iterator, r=oli-obkManish Goregaokar-1/+3
Coerce const FnDefs to implement const Fn traits You can now pass a FnDef to a function expecting `F` where `F: ~const FnTrait`. r? ``@oli-obk`` ``@rustbot`` label T-compiler F-const_trait_impl
2021-09-21use indexmap instead of hashmaplcnr-13/+3