about summary refs log tree commit diff
path: root/compiler/rustc_next_trait_solver
AgeCommit message (Collapse)AuthorLines
2025-01-28Do not assume child bound assumptions for rigid aliasMichael Goulet-14/+49
2025-01-23Rollup merge of #135766 - lcnr:candidate-assembly-3, r=compiler-errorsMatthias Krüger-21/+28
handle global trait bounds defining assoc types This also fixes the compare-mode for - tests/ui/coherence/coherent-due-to-fulfill.rs - tests/ui/codegen/mono-impossible-2.rs - tests/ui/trivial-bounds/trivial-bounds-inconsistent-projection.rs - tests/ui/nll/issue-61320-normalize.rs I first considered the alternative to always prefer where-bounds during normalization, regardless of how the trait goal has been proven by changing `fn merge_candidates` instead. https://github.com/rust-lang/rust/blob/ecda83b30f0f68cf5692855dddc0bc38ee8863fc/compiler/rustc_next_trait_solver/src/solve/assembly/mod.rs#L785 This approach is more restrictive than behavior of the old solver to avoid mismatches between trait and normalization goals. This may be breaking in case the where-bound adds unnecessary region constraints and we currently don't ever try to normalize an associated type. I would like to detect these cases and change the approach to exactly match the old solver if required. I want to minimize cases where attempting to normalize in more places causes code to break. r? `@compiler-errors`
2025-01-22Use `structurally_normalize` instead of manual `normalizes-to` goalsBoxy-23/+19
2025-01-20handle global trait bounds defining assoc typelcnr-2/+22
2025-01-20remove unnecessary collectionlcnr-19/+6
2025-01-19Run `clippy --fix` for `unnecessary_map_or` lintYotam Ofek-1/+1
2025-01-17new solver: prefer trivial builtin impls over where-clausesRémy Rakic-2/+27
for now, only builtin `Sized` impls are tracked as being `Trivial`
2025-01-14Prefer lower TraitUpcasting candidatesMichael Goulet-3/+5
2025-01-08Implement const Destruct in old solverMichael Goulet-0/+2
2025-01-06Recurse on GAT where clauses in fulfillment error proof tree visitorMichael Goulet-2/+2
2025-01-06Add derived causes for host effect predicatesMichael Goulet-1/+1
2025-01-03Also in the new solverMichael Goulet-18/+27
2024-12-22Begin to implement type system layer of unsafe bindersMichael Goulet-3/+37
2024-12-18update new solver candidate assemblylcnr-89/+180
2024-12-18canonicalizer: keep 'static in the param_envlcnr-40/+102
2024-12-11Rename projection_def_id to item_def_idMichael Goulet-1/+1
2024-12-05do not implement unsafe auto traits for types with unsafe fieldsJack Wrenn-0/+8
If a type has unsafe fields, its safety invariants are not simply the conjunction of its field types' safety invariants. Consequently, it's invalid to reason about the safety properties of these types in a purely structural manner — i.e., the manner in which `auto` traits are implemented. Makes progress towards #132922.
2024-11-28support revealing defined opaque post borrowcklcnr-33/+53
2024-11-23remove remaining references to `Reveal`lcnr-2/+1
2024-11-23no more Reveal :(lcnr-13/+9
2024-11-22Implement ~const Destruct in new solverMichael Goulet-4/+97
2024-11-21Rollup merge of #133218 - compiler-errors:const-opaque, r=fee1-deadMatthias Krüger-5/+2
Implement `~const` item bounds in RPIT an RPIT in a `const fn` is allowed to be conditionally const itself :) r? fee1-dead or reroll
2024-11-20Rip out built-in PointerLike implMichael Goulet-50/+0
2024-11-19Implement ~const Fn trait goals in the new solverMichael Goulet-17/+128
2024-11-19Rename implied_const_bounds to explicit_implied_const_boundsMichael Goulet-5/+2
2024-11-18use `TypingEnv` when no `infcx` is availablelcnr-1/+5
the behavior of the type system not only depends on the current assumptions, but also the currentnphase of the compiler. This is mostly necessary as we need to decide whether and how to reveal opaque types. We track this via the `TypingMode`.
2024-11-12Consolidate type system const evaluation under `traits::evaluate_const`Boxy-8/+8
mew
2024-11-07Remove unused intercrate dependenciesclubby789-1/+0
2024-11-03Rename the FIXMEs, remove a few that dont matter anymoreMichael Goulet-3/+1
2024-10-30Merge HostPolarity and BoundConstnessMichael Goulet-4/+7
2024-10-29remove outdated debug_assertionlcnr-3/+0
2024-10-29TypingMode :thinking:lcnr-87/+73
2024-10-24Add support for ~const item boundsMichael Goulet-1/+77
2024-10-24Implement const effect predicate in new solverMichael Goulet-0/+300
2024-10-24Remove associated type based effects logicMichael Goulet-121/+0
2024-10-22remove unused fieldlcnr-11/+7
2024-10-22fix typolcnr-1/+1
2024-10-21don't bail when encountering many placeholderslcnr-1/+2
2024-10-21normalizes-to disable infer var checklcnr-7/+16
2024-10-19Fix transmute goalMichael Goulet-1/+37
2024-10-18Rollup merge of #131857 - WaffleLapkin:dyn-drop-principal-3, r=compiler-errorsMatthias Krüger-1/+2
Allow dropping dyn principal Revival of #126660, which was a revival of #114679. Fixes #126313. Allows dropping principal when coercing trait objects, e.g. `dyn Debug + Send` -> `dyn Send`. cc `@compiler-errors` `@Jules-Bertholet` r? `@lcnr`
2024-10-17Rollup merge of #131825 - lcnr:probe-no-more-leak-2, r=compiler-errorsMatthias Krüger-3/+2
SolverDelegate add assoc type for Infcx makes writing trait bounds on it a lot nicer going forward. r? `@compiler-errors`
2024-10-17Allow dropping dyn principalMichael Goulet-1/+2
2024-10-17SolverDelegate add assoc type for Infcxlcnr-3/+2
2024-10-17move `defining_opaque_types` out of `Canonical`lcnr-11/+18
2024-10-16Auto merge of #131792 - matthiaskrgr:rollup-480nwg4, r=matthiaskrgrbors-6/+79
Rollup of 8 pull requests Successful merges: - #130822 (Add `from_ref` and `from_mut` constructors to `core::ptr::NonNull`.) - #131381 (Implement edition 2024 match ergonomics restrictions) - #131594 (rustdoc: Rename "object safe" to "dyn compatible") - #131686 (Add fast-path when computing the default visibility) - #131699 (Try to improve error messages involving aliases in the solver) - #131757 (Ignore lint-non-snake-case-crate#proc_macro_ on targets without unwind) - #131783 (Fix explicit_iter_loop in rustc_serialize) - #131788 (Fix mismatched quotation mark) r? `@ghost` `@rustbot` modify labels: rollup
2024-10-15update bootstrap configsJosh Stone-1/+1
2024-10-15Register a dummy candidate for failed structural normalization during ↵Michael Goulet-0/+20
candiate assembly
2024-10-15Be better at reporting alias errorsMichael Goulet-9/+13
2024-10-15Make sure the alias is actually rigidMichael Goulet-2/+51