about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/traits
AgeCommit message (Collapse)AuthorLines
2022-06-30Make `evaluate_obligation` not succeed unconditionally if it registered new ↵Oli Scherer-4/+14
hidden types for opaque types
2022-06-28Fix trait object reborrow suggestionMichael Goulet-1/+1
2022-06-27Rollup merge of #98506 - compiler-errors:object-safety-suggestions, r=oli-obkMatthias Krüger-38/+29
Fix span issues in object safety suggestions Fixes #98500
2022-06-27Rollup merge of #97780 - compiler-errors:field-wfcheck-before-sized, r=jackh726Matthias Krüger-1/+1
Check ADT field is well-formed before checking it is sized Fixes #96810. There is one diagnostics regression, in [`src/test/ui/generic-associated-types/bugs/issue-80626.stderr`](https://github.com/rust-lang/rust/pull/97780/files#diff-53795946378e78a0af23a10277c628ff79091c18090fdc385801ee70c1ba6963). I am not super concerned about it, since it's GAT related. We _could_ fix it, possibly by using the `FieldSized` obligation cause code instead of `BuiltinDerivedObligation`. But that would require changing `Sized` trait confirmation and the `adt_sized_constraint` query.
2022-06-25Fix span issues in object safety suggestionsMichael Goulet-38/+29
2022-06-21Point at return expression for RPIT-related errorMichael Goulet-0/+3
2022-06-14implement valtrees as the type-system representation for constant valuesb-naber-2/+1
2022-06-13remove unnecessary `to_string` and `String::new`Takayuki Maeda-2/+2
2022-06-05Do wfcheck on ADT field before Sized checkMichael Goulet-1/+1
2022-05-22Lifetime variance fixes for rustcMichael Goulet-5/+7
2022-05-18Rollup merge of #95979 - lcnr:coherence-docs, r=compiler-errorsDylan DPC-0/+3
update coherence docs, fix generator + opaque type ICE the world is confusing, this makes it slightly less so
2022-05-17Auto merge of #96892 - oli-obk:🐌_obligation_cause_code_🐌, r=estebankbors-35/+75
Clean up derived obligation creation r? `@estebank` working on fixing the perf regression from https://github.com/rust-lang/rust/pull/91030#issuecomment-1083360210
2022-05-16Force inline InternedObligationCauseCode creationOli Scherer-4/+4
2022-05-13Avoid invoking the full `eq` infrastructure when all we want is to check a ↵Oli Scherer-1/+3
discriminant
2022-05-12Give the inliner some hintsOli Scherer-0/+2
2022-05-11Gracefully fail to resolve associated items instead of `delay_span_bug`.Camille GILLOT-0/+18
2022-05-10Use InternedObligationCauseCode everywhereOli Scherer-28/+20
2022-05-10Make `FunctionArgumentObligation` also use the "no allocation for misc" trickOli Scherer-6/+16
2022-05-10Don't allocate misc obligation parents of derived obligationsOli Scherer-6/+7
2022-05-10Make the derived obligation cause parent privateOli Scherer-1/+9
2022-05-10Add a helper function for a common piece of codeOli Scherer-13/+15
2022-05-10Remove `clone_code` methodOli Scherer-7/+0
2022-05-10Remove another use of clone_codeOli Scherer-1/+1
2022-05-10Move an extension trait method onto the type directly and reuse itOli Scherer-0/+24
2022-05-10Remove some unnecessary clonesOli Scherer-4/+10
2022-05-10update coherence docs, fix opaque type + generator icelcnr-0/+3
2022-05-02fix most compiler/ doctestsElliot Roberts-3/+5
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