bors
0b8a61b235
Auto merge of #118267 - compiler-errors:ambiguity-causes, r=spastorino
...
`AmbiguityCause` should not eagerly format strings
Minor tweak found when working on some coherence diagnostics stuff (towards `-Ztrait-solver=next-coherence` stabilization)
2023-11-26 12:44:38 +00:00
Michael Goulet
8dd8db5073
Rollup merge of #118288 - compiler-errors:is_some_and, r=lqd,dtolnay
...
Use `is_{some,ok}_and` more in the compiler
slightly more fluent-reading code
2023-11-25 17:23:34 -05:00
Guillaume Gomez
9a59b059d5
Rollup merge of #117871 - klensy:unused-pub, r=cjgillot
...
remove unused pub fns
This removes some unused `pub fn`; also fixes few obsoleted fn names or added fixmes with reminders to update them.
2023-11-25 19:51:54 +01:00
Michael Goulet
079a2e865f
is_{some,ok}_and
2023-11-25 18:47:16 +00:00
Michael Goulet
0750a5df4d
AmbiguityCause should not eagerly format strings
2023-11-24 22:29:59 +00:00
lcnr
d51ef5c1af
fix intercrate ambiguity causes
2023-11-23 12:25:41 +00:00
klensy
57c9eb7381
review
2023-11-23 14:11:09 +03:00
klensy
b06d5b205c
few more
2023-11-23 14:11:08 +03:00
Nilstrieb
90e4c2dc3a
Rollup merge of #118115 - spastorino:fix-old-fn-names, r=compiler-errors
...
Fix occurrences of old fn names in comment and tracing
2023-11-21 09:06:30 +01:00
Santiago Pastorino
8cf94c955f
Fix occurrences of old fn names in comment and tracing
2023-11-20 22:45:28 -03:00
Matthias Krüger
6c62b42347
Rollup merge of #118089 - lcnr:intercrate-ambig-msg, r=compiler-errors
...
intercrate_ambiguity_causes: handle self ty infer + reservation impls
r? `@compiler-errors`
2023-11-20 20:56:43 +01:00
Michael Goulet
253f5023c3
Don't require intercrate mode for negative coherence
2023-11-20 18:49:48 +00:00
Michael Goulet
19a5e1dfc6
Don't drop region constraints that come from plugging infer regions with placeholders
2023-11-20 18:49:41 +00:00
lcnr
35c8a37a6f
handle reservation impls, track impl source
2023-11-20 15:01:31 +01:00
Michael Goulet
6388c0ef04
Rollup merge of #118000 - compiler-errors:placeholder-ty-outlives, r=aliemjay
...
Make regionck care about placeholders in outlives components
Currently, we don't consider a placeholder type `!T` to be a type component when it comes to processing type-outlives obligations. This means that they are essentially treated like unit values with no sub-components, and always outlive any region. This is problematic for `non_lifetime_binders`, and even more problematic for `with_negative_coherence`, since negative coherence uses placeholders as universals.
This PR adds `Component::Placeholder` which acts much like `Component::Param`. This currently causes a regression in some non-lifetime-binders tests because `for<T> T: 'static` doesn't imply itself when processing outlives obligations, so code like this will fail:
```
fn foo() where for<T> T: 'static {
foo() //~ fails
}
```
Since the where clause doesn't imply itself. This requires making the `MatchAgainstHigherRankedOutlives` relation smarter when it comes to binders.
r? types
2023-11-19 19:14:35 -08:00
Michael Goulet
488dcb7af3
Ignore but do not assume region obligations from unifying headers in negative coherence
2023-11-19 19:20:02 +00:00
Michael Goulet
8f267e2b87
Make regionck care about placeholders in outlives components
2023-11-19 19:12:20 +00:00
bors
6b771f6b5a
Auto merge of #117878 - gavinleroy:proper-depth-check, r=lcnr
...
Fix depth check in ProofTreeVisitor.
The hack to cutoff overflows and cycles in the new trait solver was incorrect. We want to inspect everything with depth [0..10].
This fix exposed a previously unseen bug, which caused the compiler to ICE when invoking `trait_ref` on a non-assoc type projection. I simply added the guard in the `AmbiguityCausesVisitor`, and updated the expected output for the `auto-trait-coherence` test which now includes the extra note:
```text
|
= note: upstream crates may add a new impl of trait `std::marker::Send` for type `OpaqueType` in future versions
```
r? `@lcnr`
2023-11-15 18:53:04 +00:00
Gavin Gray
caae1e08ec
Add guard checking for associated types before computing intercrate ambiguity of projections. Bless test with more specific notes on the ambiguity cause.
2023-11-14 13:55:59 +01:00
lcnr
42945fc1e2
args~~_ref~~_may_unify
2023-11-13 11:27:15 +00:00
Michael Goulet
0626f2e7d0
nits
2023-10-23 23:35:27 +00:00
Michael Goulet
1d99ddbfe8
Consider regions
2023-10-23 23:35:27 +00:00
Michael Goulet
8597bf1df7
Make things work by using the new solver
2023-10-23 23:35:27 +00:00
Michael Goulet
7f3c2c7e2c
Rework negative coherence
2023-10-23 23:35:27 +00:00
Michael Goulet
66d7cfd3b5
Remove FnPtr hack from trait_ref_is_knowable
2023-10-23 23:35:27 +00:00
Michael Goulet
b706b9d176
pre-cleanups
2023-10-23 23:35:27 +00:00
Oli Scherer
60956837cf
s/Generator/Coroutine/
2023-10-20 21:10:38 +00:00
Camille GILLOT
44ac8dcc71
Remove GeneratorWitness and rename GeneratorWitnessMIR.
2023-09-23 13:47:30 +00:00
lcnr
614760f612
review
2023-09-21 08:57:47 +02:00
lcnr
de53877f8b
proof trees: use for intercrate_ambiguity_causes
2023-09-21 08:17:58 +02:00
Michael Goulet
4647aea7aa
Don't record spans for predicates in coherence
2023-08-30 18:24:18 +00:00
Michael Goulet
0e20155662
more nits
2023-08-15 03:44:21 +00:00
Michael Goulet
ca49a37390
Reuse the selection context, compute failing obligations first in ambig mode
2023-08-15 03:40:19 +00:00
Michael Goulet
56f5704ff8
Implement lint against coinductive impl overlap
2023-08-15 03:40:19 +00:00
Michael Goulet
2ae4bedd85
more span info
2023-08-15 03:40:19 +00:00
lcnr
9eeaf1fd13
normalize in trait_ref_is_knowable
in new solver
2023-08-12 20:37:53 +02:00
Matthias Krüger
3ce90b1649
inline format!() args up to and including rustc_codegen_llvm
2023-07-30 14:22:50 +02:00
Mahdi Dibaiee
e55583c4b8
refactor(rustc_middle): Substs -> GenericArg
2023-07-14 13:27:35 +01:00
Mark Rousskov
cc907f80b9
Re-format let-else per rustfmt update
2023-07-12 21:49:27 -04:00
lcnr
b468bfb361
-Ztrait-solver=next: stop depending on old solver
2023-07-04 10:06:39 +02:00
lcnr
5378f07d64
use deeply_normalize
for assumed_wf_types
2023-07-03 09:12:14 +02:00
Michael Goulet
fbdef58414
Migrate predicates_of and caller_bounds to Clause
2023-06-26 23:12:03 +00:00
Oli Scherer
f3b7dd6388
Add AliasKind::Weak
for type aliases.
...
Only use it when the type alias contains an opaque type.
Also does wf-checking on such type aliases.
2023-06-16 19:39:48 +00:00
bohan
b7921981d5
fix: inline predicate_may_hold_fatal
2023-06-16 11:09:53 +08:00
Michael Goulet
9e210522bc
Improve docs/clean up negative overlap functions
2023-06-14 02:18:30 +00:00
Michael Goulet
b637048a89
Add -Ztrait-solver=next-coherence
2023-06-06 18:43:20 +00:00
lcnr
a0245bb3cb
rework the leak_check to take the outer_universe
...
clean up coherence to not rely on probes anymore
2023-05-30 13:03:38 +02:00
lcnr
200ed9f8cd
leak_check: remove unused codepath
2023-05-30 12:40:35 +02:00
Michael Goulet
a2d7ffc635
Move DefiningAnchor
2023-05-25 03:21:21 +00:00
Maybe Waffle
fb0f74a8c9
Use Option::is_some_and
and Result::is_ok_and
in the compiler
2023-05-24 14:20:41 +00:00