| Age | Commit message (Collapse) | Author | Lines | |
|---|---|---|---|---|
| 2024-10-11 | remove outdated FIXMEs | lcnr | -0/+2 | |
| 2024-10-10 | impossible obligations check fast path | lcnr | -7/+8 | |
| 2024-09-25 | Compiler: Rename "object safe" to "dyn compatible" | León Orell Valerian Liehr | -1/+1 | |
| 2024-09-22 | Reformat using the new identifier sorting from rustfmt | Michael Goulet | -30/+29 | |
| 2024-09-12 | more eagerly discard constraints on overflow | lcnr | -1/+1 | |
| 2024-08-30 | Remove `#[macro_use] extern crate tracing` from `rustc_trait_selection`. | Nicholas Nethercote | -0/+4 | |
| 2024-08-14 | Rollup merge of #128828 - lcnr:search-graph-11, r=compiler-errors | 许杰友 Jieyou Xu (Joe) | -7/+3 | |
| `-Znext-solver` caching This PR has two major changes while also fixing multiple issues found via fuzzing. The main optimization is the ability to not discard provisional cache entries when popping the highest cycle head the entry depends on. This fixes the hang in Fuchsia with `-Znext-solver=coherence`. It also bails if the result of a fixpoint iteration is ambiguous, even without reaching a fixpoint. This is necessary to avoid exponential blowup if a coinductive cycle results in ambiguity, e.g. due to unknowable candidates in coherence. Updating stack entries pretty much exclusively happens lazily now, so `fn check_invariants` ended up being mostly useless and I've removed it. See https://gist.github.com/lcnr/8de338fdb2685581e17727bbfab0622a for the invariants we would be able to assert with it. For a general overview, see the in-process update of the relevant rustc-dev-guide chapter: https://hackmd.io/1ALkSjKlSCyQG-dVb_PUHw r? ```@compiler-errors``` | ||||
| 2024-08-12 | Rollup merge of #128912 - compiler-errors:do-not-recommend-impl, r=lcnr | Matthias Krüger | -5/+1 | |
| Store `do_not_recommend`-ness in impl header Alternative to #128674 It's less flexible, but also less invasive. Hopefully it's also performant. I'd recommend we think separately about the design for how to gate arbitrary diagnostic attributes moving forward. | ||||
| 2024-08-12 | do not use the global solver cache for proof trees | lcnr | -7/+3 | |
| doing so requires overwriting global cache entries and generally adds significant complexity to the solver. This is also only ever done for root goals, so it feels easier to wrap the `evaluate_canonical_goal` in an ordinary query if necessary. | ||||
| 2024-08-11 | Use assert_matches around the compiler | Michael Goulet | -3/+6 | |
| 2024-08-09 | Store do_not_recommend-ness in impl header | Michael Goulet | -5/+1 | |
| 2024-07-29 | Reformat `use` declarations. | Nicholas Nethercote | -9/+9 | |
| The previous commit updated `rustfmt.toml` appropriately. This commit is the outcome of running `x fmt --all` with the new formatting options. | ||||
| 2024-07-21 | Move all error reporting into rustc_trait_selection | Michael Goulet | -1/+2 | |
| 2024-07-18 | valtree construction: keep track of which type was valtree-incompatible | Ralf Jung | -2/+2 | |
| 2024-07-09 | Split out overflow handling into its own module | Michael Goulet | -1/+1 | |
| 2024-07-08 | Move trait selection error reporting to its own top-level module | Michael Goulet | -1/+1 | |
| 2024-07-08 | Rollup merge of #127439 - compiler-errors:uplift-elaborate, r=lcnr | 许杰友 Jieyou Xu (Joe) | -8/+0 | |
| Uplift elaboration into `rustc_type_ir` Allows us to deduplicate and consolidate elaboration (including these stupid elaboration duplicate fns i added for pretty printing like 3 years ago) so I'm pretty hyped about this change :3 r? lcnr | ||||
| 2024-07-07 | Finish uplifting supertraits | Michael Goulet | -8/+0 | |
| 2024-07-07 | Get rid of trait_ref_is_knowable from delegate | Michael Goulet | -10/+0 | |
| 2024-07-05 | Split SolverDelegate back out from InferCtxtLike | Michael Goulet | -169/+2 | |
| 2024-06-21 | Rename a bunch of things | Michael Goulet | -6/+6 | |
| 2024-06-18 | Fix transmute goal | Michael Goulet | -1/+27 | |
| 2024-06-18 | Fix impl for SolverDelegate | Michael Goulet | -76/+297 | |
| 2024-06-18 | Uplift the new trait solver | Michael Goulet | -7260/+0 | |
| 2024-06-18 | SolverDelegate | Michael Goulet | -148/+339 | |
| 2024-06-18 | Make SearchGraph fully generic | Michael Goulet | -73/+49 | |
| 2024-06-16 | Uplift OpaqueTypeKey too, use it in response | Michael Goulet | -9/+3 | |
| 2024-06-16 | Uplift ExternalConstraintData | Michael Goulet | -15/+27 | |
| 2024-06-16 | Make ExternalConstraints just carry outlives | Michael Goulet | -18/+22 | |
| 2024-06-16 | Stop using AssocKind in new solver | Michael Goulet | -13/+11 | |
| 2024-06-16 | Move InferCtxtSelectExt out of eval_ctxt module | Michael Goulet | -3/+3 | |
| 2024-06-16 | Auto merge of #126505 - compiler-errors:no-vtable, r=lcnr | bors | -60/+21 | |
| Only compute vtable information during codegen This PR removes vtable information from the `Object` and `TraitUpcasting` candidate sources in the trait solvers, and defers the computation of relevant information to `Instance::resolve`. This is because vtables really aren't a thing in the trait world -- they're an implementation detail in codegen. Previously it was just easiest to tangle this information together since we were already doing the work of looking at all the supertraits in the trait solver, and specifically because we use traits to represent when it's possible to call a method via a vtable (`Object` candidate) and do upcasting (`Unsize` candidate). but I am somewhat suspicious we're doing a *lot* of extra work, especially in polymorphic contexts, so let's see what perf says. | ||||
| 2024-06-15 | Rollup merge of #126496 - compiler-errors:more-generics, r=lcnr | Guillaume Gomez | -143/+151 | |
| Make proof tree probing and `Candidate`/`CandidateSource` generic over interner `<TyCtxt<'tcx>>` is ugly, but will become `<I>` when things actually become generic. r? lcnr | ||||
| 2024-06-15 | Rollup merge of #126404 - compiler-errors:alias-relate-terms, r=lcnr | Guillaume Gomez | -1/+40 | |
| Check that alias-relate terms are WF if reporting an error in alias-relate Check that each of the left/right term is WF when deriving a best error obligation for an alias-relate goal. This will make sure that given `<i32 as NotImplemented>::Assoc = ()` will drill down into `i32: NotImplemented` since we currently treat the projection as rigid. r? lcnr | ||||
| 2024-06-15 | Rollup merge of #126354 - compiler-errors:variance, r=lcnr | Matthias Krüger | -4/+4 | |
| Use `Variance` glob imported variants everywhere Fully commit to using the globbed variance. Could be convinced the other way, and change this PR to not use the globbed variants anywhere, but I'd rather we do one or the other. r? lcnr | ||||
| 2024-06-14 | Only compute vtable information during codegen | Michael Goulet | -60/+21 | |
| 2024-06-14 | Correctly consider depth when visiting WF goals | Michael Goulet | -3/+18 | |
| 2024-06-14 | Add TyCtxt::is_lang_item | Michael Goulet | -38/+36 | |
| 2024-06-14 | Make proof tree probing generic | Michael Goulet | -38/+45 | |
| 2024-06-14 | Make Candidate generic over interner | Michael Goulet | -106/+107 | |
| 2024-06-13 | Address nits | Michael Goulet | -23/+30 | |
| - Remove the ValuePairs glob import - Make DummyPairs -> ValuePairs::Dummy and make it bug more - Fix WC - Make interner return `impl IntoIterator`s | ||||
| 2024-06-13 | Fix some TODOs | Michael Goulet | -5/+4 | |
| 2024-06-13 | Finish uplifting all of structural_traits | Michael Goulet | -187/+156 | |
| 2024-06-13 | Rework most of structural_traits to be Interner-agnostic | Michael Goulet | -103/+114 | |
| 2024-06-13 | LangItem-ify Coroutine trait in solvers | Michael Goulet | -5/+8 | |
| 2024-06-13 | Check that alias-relate terms are WF if reporting an error in alias-relate | Michael Goulet | -0/+24 | |
| 2024-06-12 | Also passthrough for projection clauses | Michael Goulet | -1/+3 | |
| 2024-06-12 | Walk into alias-eq nested goals even if normalization fails | Michael Goulet | -7/+15 | |
| 2024-06-12 | Use Variance glob import everywhere | Michael Goulet | -4/+4 | |
| 2024-06-11 | Try not to make obligations in handle_opaque_type | Michael Goulet | -8/+7 | |
