Michael Goulet
6ee22e184f
Make proof tree building generic
2024-05-18 16:21:43 -04:00
Michael Goulet
0f528a4c08
Uplift inspect into rustc_type_ir
2024-05-18 16:21:43 -04:00
Michael Goulet
05e0f8740a
Uplift GenericArgKind, CanonicalVarValues, QueryInput
...
and make NestedGoals generic
2024-05-18 16:21:43 -04:00
Michael Goulet
2025e44ef8
to_opt_poly_X_pred -> as_X_clause
2024-05-17 12:58:33 -04:00
Matthias Krüger
3695449a89
Rollup merge of #125191 - compiler-errors:wf, r=lcnr
...
Report better WF obligation leaf obligations in new solver
r? lcnr
2024-05-17 07:20:59 +02:00
Michael Goulet
119c7bbef7
Report better WF obligation leaf obligations in new solver
2024-05-16 21:08:42 -04:00
Michael Goulet
7b3d6dad20
Remove trivial Binder::dummy calls
2024-05-16 14:24:23 -04:00
Michael Goulet
138881b315
Uplift Goal to rustc_type_ir
2024-05-16 14:24:22 -04:00
Michael Goulet
2684655602
Make impls UpcastFrom, implement Upcast for UpcastFrom
2024-05-16 14:23:47 -04:00
Michael Goulet
412dc28d6a
Make P parameter explicit
2024-05-16 14:23:47 -04:00
Michael Goulet
11ec3eca74
Rename ToPredicate for Upcast
2024-05-16 14:23:47 -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
Michael Goulet
dbd2ca6478
Use a proper probe for shadowing impl
2024-05-13 23:58:33 -04:00
bors
34582118af
Auto merge of #125076 - compiler-errors:alias-term, r=lcnr
...
Split out `ty::AliasTerm` from `ty::AliasTy`
Splitting out `AliasTerm` (for use in project and normalizes goals) and `AliasTy` (for use in `ty::Alias`)
r? lcnr
2024-05-13 22:20:43 +00:00
Michael Goulet
fa84018c2e
Apply nits
2024-05-13 16:55:58 -04:00
Michael Goulet
3bcdf3058e
split out AliasTy -> AliasTerm
2024-05-13 11:59:42 -04:00
Nicholas Nethercote
4bf20b2b55
Remove extern crate rustc_middle
from rustc_trait_selection
.
2024-05-13 08:20:18 +10:00
Guillaume Gomez
d3625fc8df
Rollup merge of #125036 - lcnr:new-solver-trace, r=compiler-errors
...
solve: all "non-structural" logging to trace
This enables us to start with `RUSTC_LOG=rustc_trait_selection::solve=debug` to figure out *where* something went wrong, to then separately use `trace` to get to the details.
r? ``@compiler-errors``
2024-05-12 13:41:58 +02:00
lcnr
c66328f9ad
structurally important functions to debug
2024-05-12 03:46:24 +00:00
lcnr
41ebd16266
solve: replace all debug
with trace
2024-05-12 03:29:50 +00:00
Michael Goulet
905f565824
Apply nits, uplift ExistentialPredicate too
2024-05-11 18:20:00 -04:00
Michael Goulet
204cde4564
Uplift TraitPredicate
2024-05-11 18:20:00 -04:00
Michael Goulet
e444017b49
Consolidate obligation cause codes for where clauses
2024-05-11 02:10:45 -04:00
bors
19dacee0d8
Auto merge of #124982 - compiler-errors:uplift-trait-ref, r=lcnr
...
Uplift `TraitRef` into `rustc_type_ir`
Emotional rollercoaster
r? lcnr
2024-05-10 22:24:53 +00:00
Michael Goulet
1e5ec0a12c
Lift TraitRef
into rustc_type_ir
2024-05-10 15:44:03 -04:00
Michael Goulet
5e606c0bde
Lift Lift
2024-05-10 15:44:03 -04:00
Michael Goulet
6f77bfe8b6
Name tweaks
2024-05-10 10:42:57 -04: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
bors
f7b1501ce7
Auto merge of #124961 - matthiaskrgr:rollup-1jj65p6, r=matthiaskrgr
...
Rollup of 7 pull requests
Successful merges:
- #124551 (Add benchmarks for `impl Debug for str`)
- #124915 (`rustc_target` cleanups)
- #124918 (Eliminate some `FIXME(lcnr)` comments)
- #124927 (opt-dist: use xz2 instead of xz crate)
- #124936 (analyse visitor: build proof tree in probe)
- #124943 (always use `GenericArgsRef`)
- #124955 (Use fewer origins when creating type variables.)
r? `@ghost`
`@rustbot` modify labels: rollup
2024-05-10 06:50:46 +00:00
Matthias Krüger
0ee258009c
Rollup merge of #124955 - nnethercote:next_ty_var, r=lcnr
...
Use fewer origins when creating type variables.
To reduce lots of repetitive boilerplate code. Details in the individual commit messages.
r? ``@lcnr``
2024-05-10 07:30:22 +02:00
Matthias Krüger
30bd6cb726
Rollup merge of #124943 - lcnr:generic-args-ref, r=compiler-errors
...
always use `GenericArgsRef`
r? ```@compiler-errors```
2024-05-10 07:30:21 +02:00
Matthias Krüger
43ddd1d963
Rollup merge of #124936 - lcnr:cool-beans, r=compiler-errors
...
analyse visitor: build proof tree in probe
see inline comments
fixes #124791
fixes #124702
r? ```@compiler-errors```
2024-05-10 07:30:21 +02:00
Matthias Krüger
7e4f6082ce
Rollup merge of #124918 - nnethercote:FIXME-lcnr, r=lcnr
...
Eliminate some `FIXME(lcnr)` comments
In some cases this involved changing code. In some cases the comment was able to removed or replaced.
r? ``@lcnr``
2024-05-10 07:30:20 +02:00
Michael Goulet
1c19b6ad60
Rename Generics::params to Generics::own_params
2024-05-09 20:58:46 -04:00
Nicholas Nethercote
df6f7133ee
De-tuple two vtable_trait_first_method_offset
args.
...
Thus eliminating a `FIXME` comment.
2024-05-10 09:55:09 +10:00
Nicholas Nethercote
24445d3b6a
Remove out-of-date comment.
...
The use of `Binder` was removed in the recent #123900 , but the comment
wasn't removed at the same time.
2024-05-10 09:55:09 +10:00
Nicholas Nethercote
fe843feaab
Use fewer origins when creating type variables.
...
`InferCtxt::next_{ty,const}_var*` all take an origin, but the
`param_def_id` is almost always `None`. This commit changes them to just
take a `Span` and build the origin within the method, and adds new
methods for the rare cases where `param_def_id` might not be `None`.
This avoids a lot of tedious origin building.
Specifically:
- next_ty_var{,_id_in_universe,_in_universe}: now take `Span` instead of
`TypeVariableOrigin`
- next_ty_var_with_origin: added
- next_const_var{,_in_universe}: takes Span instead of ConstVariableOrigin
- next_const_var_with_origin: added
- next_region_var, next_region_var_in_universe: these are unchanged,
still take RegionVariableOrigin
The API inconsistency (ty/const vs region) seems worth it for the
large conciseness improvements.
2024-05-10 09:47:46 +10:00
lcnr
8f9062530b
always use GenericArgsRef
2024-05-09 19:52:02 +00:00
lcnr
83e6da0be5
analyse visitor: build proof tree in probe
2024-05-09 17:29:53 +00:00
Michael Goulet
7dbdbaaa8e
Fix ICEs in diagnostic::on_unimplemented
2024-05-07 23:13:44 -04:00
bors
a60f077c38
Auto merge of #124683 - estebank:issue-124651, r=compiler-errors
...
Do not ICE on foreign malformed `diagnostic::on_unimplemented`
Fix #124651 .
2024-05-08 00:54:38 +00:00
Matthias Krüger
067f6327a5
Rollup merge of #124846 - compiler-errors:const-eval, r=lcnr
...
Don't ICE when we cannot eval a const to a valtree in the new solver
Use `const_eval_resolve` instead of `try_const_eval_resolve` because naming aside, the former doesn't ICE when a value can't be evaluated to a valtree.
r? lcnr
2024-05-07 18:12:56 +02:00
Matthias Krüger
4a5bf7b06e
Rollup merge of #124827 - lcnr:generalize-incomplete, r=compiler-errors
...
generalize hr alias: avoid unconstrainable infer vars
fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/108
see inline comments for more details
r? `@compiler-errors` cc `@BoxyUwU`
2024-05-07 18:12:55 +02:00
lcnr
690d5aa417
generalize hr alias: avoid unconstrainable infer vars
2024-05-07 15:58:06 +00:00
Michael Goulet
b58f5a7800
Don't ICE when we cannot eval a const to a valtree in the new solver
2024-05-07 11:14:25 -04:00
Matthias Krüger
284b5530b8
Rollup merge of #124809 - lcnr:prepopulate-opaques, r=compiler-errors
...
borrowck: prepopulate opaque storage more eagerly
otherwise we ICE due to ambiguity when normalizing while computing implied bounds.
r? ``@compiler-errors``
2024-05-06 21:46:06 +02:00
Matthias Krüger
f76c8f7f77
Rollup merge of #124759 - compiler-errors:impl-args, r=lcnr
...
Record impl args in the proof tree in new solver
Rather than rematching them during select.
Also use `ImplSource::Param` instead of `ImplSource::Builtin` for alias-bound candidates, so we don't ICE in `Instance::resolve`.
r? lcnr
2024-05-06 21:46:05 +02:00