Matthias Krüger
aac91f75e3
Rollup merge of #131699 - compiler-errors:better-errors-for-projections, r=lcnr
...
Try to improve error messages involving aliases in the solver
1. Treat aliases as rigid only if it may not be defined and it's well formed (i.e. for projections, its trait goal is satisfied).
2. Record goals that are related to alias normalization under a new `GoalKind`, so we can look into them in the `BestObligation` visitor.
3. Try to deduplicate errors due to self types of goals that are un-normalizable aliases.
r? lcnr
2024-10-16 19:18:32 +02:00
Michael Goulet
8528387743
Be better at reporting alias errors
2024-10-15 20:42:17 -04:00
Michael Goulet
50b8029ce1
Always recurse on predicates in BestObligation
2024-10-15 20:36:51 -04:00
GnomedDev
8de8f46f78
Swap PredicateObligation to ThinVec
2024-10-12 15:17:16 +01:00
GnomedDev
7ec06b0d1d
Swap Vec<PredicateObligation> to type alias
2024-10-12 15:17:08 +01:00
lcnr
d6fd45c2e3
impossible obligations check fast path
2024-10-10 06:09:50 -04:00
León Orell Valerian Liehr
01a063f9df
Compiler: Rename "object safe" to "dyn compatible"
2024-09-25 13:26:48 +02:00
Michael Goulet
c682aa162b
Reformat using the new identifier sorting from rustfmt
2024-09-22 19:11:29 -04:00
lcnr
675c99f4d5
more eagerly discard constraints on overflow
2024-09-12 14:32:44 +02:00
Nicholas Nethercote
4b3fa8e9f0
Remove #[macro_use] extern crate tracing from rustc_trait_selection.
2024-08-30 17:14:59 +10:00
Michael Goulet
ed7bdbb17b
Store do_not_recommend-ness in impl header
2024-08-09 22:02:20 -04:00
Nicholas Nethercote
84ac80f192
Reformat use declarations.
...
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
Michael Goulet
db638ab968
Rename a bunch of things
2024-06-21 12:32:05 -04:00
Michael Goulet
7d2be888b6
Fix impl for SolverDelegate
2024-06-18 11:04:01 -04:00
Michael Goulet
0562064959
Correctly consider depth when visiting WF goals
2024-06-14 17:19:58 -04:00
Michael Goulet
93ee07c756
Check that alias-relate terms are WF if reporting an error in alias-relate
2024-06-13 08:52:35 -04:00
Michael Goulet
44040a0670
Also passthrough for projection clauses
2024-06-12 19:10:02 -04:00
Michael Goulet
52b2c88bdf
Walk into alias-eq nested goals even if normalization fails
2024-06-12 19:03:37 -04:00
Michael Goulet
a41c44f21c
Nits and formatting
2024-06-03 10:02:08 -04:00
Michael Goulet
1e72c7f536
Add cycle errors to ScrubbedTraitError to remove a couple more calls to new_with_diagnostics
2024-06-03 09:27:52 -04:00
Michael Goulet
27f5eccd1f
Move FulfillmentErrorCode to rustc_trait_selection too
2024-06-03 09:27:52 -04:00
Michael Goulet
eb0a70a557
Opt-in diagnostics reporting to avoid doing extra work in the new solver
2024-06-03 09:27:52 -04:00
Michael Goulet
54b2b7d460
Make TraitEngines generic over error
2024-06-03 09:27:52 -04:00
lcnr
ebd9f355e2
remove proof tree formatter, make em shallow
2024-05-24 18:41:31 +00:00
Georg Semmler
2cff3e90bc
Move #[do_not_recommend] to the #[diagnostic] namespace
...
This commit moves the `#[do_not_recommend]` attribute to the
`#[diagnostic]` namespace. It still requires
`#![feature(do_not_recommend)]` to work.
2024-05-21 13:14:41 +02:00
Michael Goulet
0f528a4c08
Uplift inspect into rustc_type_ir
2024-05-18 16:21:43 -04:00
Michael Goulet
119c7bbef7
Report better WF obligation leaf obligations in new solver
2024-05-16 21:08:42 -04:00
Michael Goulet
d3e510eb9d
Don't ICE because recomputing overflow goals during find_best_leaf_obligation causes inference side-effects
2024-05-16 10:00:11 -04:00
Nicholas Nethercote
4bf20b2b55
Remove extern crate rustc_middle from rustc_trait_selection.
2024-05-13 08:20:18 +10:00
lcnr
41ebd16266
solve: replace all debug with trace
2024-05-12 03:29:50 +00:00
Michael Goulet
9108294a6c
More rename fallout
2024-05-10 10:42:57 -04:00
Michael Goulet
534e267d48
Rename some ObligationCauseCode variants
2024-05-10 10:42:57 -04:00
Michael Goulet
4bde8a8f4b
Remove glob imports for ObligationCauseCode
2024-05-10 10:42:56 -04:00
Michael Goulet
04c049498d
rename some variants in FulfillmentErrorCode
2024-05-10 10:42:14 -04:00
Michael Goulet
4e3350d43b
Don't consider candidates with no failing where clauses
2024-05-06 11:32:50 -04:00
Matthias Krüger
79071ee3a9
Rollup merge of #124717 - compiler-errors:do-not-recomment-next-solver, r=lcnr
...
Implement `do_not_recommend` in the new solver
Put the test into `diagnostic_namespace` test folder even though it's not in the diagnostic namespace, because it should be soon.
r? lcnr
cc `@weiznich`
2024-05-04 22:27:32 +02:00
Michael Goulet
b33599485b
Implement do_not_recommend in the new solver
2024-05-04 12:51:10 -04:00
Michael Goulet
6714216eaa
Only consider ambiguous goals when finding best obligation for ambiguities
2024-05-04 12:05:36 -04:00
Michael Goulet
34e91ece90
Higher ranked goal source, do overflow handling less badly
2024-05-02 21:56:14 -04:00
Michael Goulet
3e03b1b190
Use a proof tree visitor to refine the Obligation for error reporting
2024-05-02 21:56:14 -04:00
Matthias Krüger
7a48987006
avoid collecting into vecs in some places
2024-03-02 14:18:47 +01:00
lcnr
3605a09ca2
stash overflowing obligations in fulfill
2024-02-29 10:14:02 +01:00
lcnr
dd4be4cb2f
extract fulfillment err creation
2024-02-29 10:14:02 +01:00
lcnr
5ec9b8d778
distinguish recursion limit based overflow for diagnostics
...
also change the number of allowed fixpoint steps to be fixed instead
of using the `log` of the total recursion depth.
2024-02-29 10:14:02 +01:00
lcnr
1b3164f5c9
always emit AliasRelate goals when relating aliases
...
Add `StructurallyRelateAliases` to allow instantiating infer vars with rigid aliases.
Change `instantiate_query_response` to be infallible in the new solver. This requires canonicalization to not hide any information used by the query, so weaken
universe compression. It also modifies `term_is_fully_unconstrained` to allow
region inference variables in a higher universe.
2024-02-26 10:17:43 +01:00
Michael Goulet
994d55158d
Simply do not ICE
2024-02-20 02:16:36 +00:00
Boxy
b181a12623
rename instantiate_binder_with_placeholders
2024-02-08 13:01:08 +00:00
Gavin Gray
130b7e713e
Add trait obligation tracking to FulfillCtxt and expose FnCtxt in rustc_infer using callback.
...
Pass each obligation to an fn callback with its respective inference context. This avoids needing to keep around copies of obligations or inference contexts.
Specify usability of inspect_typeck in comment.
2024-01-19 15:38:27 +01:00
Matthias Krüger
1e46be6a53
Rollup merge of #119897 - compiler-errors:fulfillment-errors, r=lcnr
...
`OutputTypeParameterMismatch` -> `SignatureMismatch`
I'm probably missing something that made this rename more complicated. What did you end up getting stuck on when renaming this selection error, `@lcnr?`
**also** I renamed the `FulfillmentErrorCode` variants. This is just churn but I wanted to do it forever. I can move it out of this PR if desired.
r? lcnr
2024-01-15 08:44:48 +01:00
Michael Goulet
7724ba7bd5
assert that trait solver is only created in proper infcx
2024-01-13 22:00:35 +00:00