Oli Scherer
e4c9a8cf9b
Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type
2024-06-19 14:58:29 +00:00
Michael Goulet
4b188d9d66
Only compute specializes query if specialization is enabled in the crate of the specialized impl
2024-06-07 15:58:50 -04:00
Michael Goulet
1653a2d34a
Failing test
2024-06-07 14:59:38 -04:00
Matthias Krüger
e1745122ae
Rollup merge of #125792 - compiler-errors:dont-drop-upcast-cand, r=lcnr
...
Don't drop `Unsize` candidate in intercrate mode
Fixes #125767
2024-06-05 18:21:09 +02:00
Michael Goulet
20699fe6b2
Stop using translate_args in the new solver
2024-05-31 09:42:30 -04:00
Matthias Krüger
ab55d42b74
Rollup merge of #125786 - compiler-errors:fold-item-bounds, r=lcnr
...
Fold item bounds before proving them in `check_type_bounds` in new solver
Vaguely confident that this is sufficient to prevent rust-lang/trait-system-refactor-initiative#46 and rust-lang/trait-system-refactor-initiative#62 .
This is not the "correct" solution, but will probably suffice until coinduction, at which point we implement the right solution (`check_type_bounds` must prove `Assoc<...> alias-eq ConcreteType`, normalizing requires proving item bounds).
r? lcnr
2024-05-31 08:50:23 +02:00
r0cky
ed5205fe66
Avoid unwrap diag.code directly
2024-05-31 08:29:42 +08:00
Michael Goulet
e485b193d0
Don't drop Upcast candidate in intercrate mode
2024-05-30 19:45:59 -04:00
Michael Goulet
2f4b7dc047
Fold item bound before checking that they hold
2024-05-30 15:52:29 -04:00
Boxy
d5bd4e233d
Partially implement ConstArgHasType
2024-05-29 17:06:54 +01:00
Oli Scherer
9dc76207ff
Fail relating constants of different types
2024-05-24 09:15:43 +00:00
lcnr
da969d41a3
fix NormalizesTo
proof tree issue
2024-04-30 20:03:33 +00:00
Gurinder Singh
c30e15aded
Fail candidate assembly for erroneous types
...
Trait predicates for types which have errors may still
evaluate to OK leading to downstream ICEs. Now we return
a selection error for such types in candidate assembly and
thereby prevent such issues
2024-04-16 12:42:48 +05:30
Oli Scherer
b8bd981545
Specialization already rejects defining opaque types
2024-04-04 10:01:45 +00:00
Michael Goulet
b8396d10c4
Always make inductive cycles as ambig during typeck
2024-03-31 20:44:30 -04:00
Matthias Krüger
877f29363d
Rollup merge of #122988 - matthiaskrgr:icetests, r=petrochenkov
...
add even more tests!
Fixes https://github.com/rust-lang/rust/issues/109869
Fixes https://github.com/rust-lang/rust/issues/110453
Fixes https://github.com/rust-lang/rust/issues/109020
Fixes https://github.com/rust-lang/rust/issues/108580
Fixes https://github.com/rust-lang/rust/issues/108220
Fixes https://github.com/rust-lang/rust/issues/113045
Fixes https://github.com/rust-lang/rust/issues/113133
Fixes https://github.com/rust-lang/rust/issues/114464
Fixes https://github.com/rust-lang/rust/issues/116599
Fixes https://github.com/rust-lang/rust/issues/119731
2024-03-25 17:05:34 +01:00
bors
dda2372cf3
Auto merge of #122802 - estebank:unconstrained-generic-const, r=Nadrieril
...
Provide structured suggestion for unconstrained generic constant
```
error: unconstrained generic constant
--> $DIR/const-argument-if-length.rs:18:10
|
LL | pad: [u8; is_zst::<T>()],
| ^^^^^^^^^^^^^^^^^^^
|
help: try adding a `where` bound
|
LL | pub struct AtLeastByte<T: ?Sized> where [(); is_zst::<T>()]: {
| ++++++++++++++++++++++++++
```
Detect when the constant expression isn't `usize` and suggest casting:
```
error: unconstrained generic constant
--> f300.rs:6:10
|
6 | bb::<{!N}>();
| ^^^^
-Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/traits/error_reporting/type_err_ctxt_ext.rs:3539:36
|
help: try adding a `where` bound
|
5 | fn b<const N: bool>() where [(); {!N} as usize]: {
| ++++++++++++++++++++++++++
```
Fix #122395 .
2024-03-25 09:59:37 +00:00
Matthias Krüger
b151e06659
add test for ICE: min_specialization: Ok(['?0, Const { ty: usize, kind: Leaf(0x0000000000000000) }]) is not fully resolved #113045
...
Fixes https://github.com/rust-lang/rust/issues/113045
2024-03-24 10:19:25 +01:00
Matthias Krüger
368bfb2c10
add test for #107228
...
Fixes #107228
2024-03-23 13:05:22 +01:00
Esteban Küber
6b24fdf811
Provide structured suggestion for unconstrained generic constant
...
```
error: unconstrained generic constant
--> $DIR/const-argument-if-length.rs:18:10
|
LL | pad: [u8; is_zst::<T>()],
| ^^^^^^^^^^^^^^^^^^^
|
help: try adding a `where` bound
|
LL | pub struct AtLeastByte<T: ?Sized> where [(); is_zst::<T>()]: {
| ++++++++++++++++++++++++++
```
Detect when the constant expression isn't `usize` and suggest casting:
```
error: unconstrained generic constant
--> f300.rs:6:10
|
6 | bb::<{!N}>();
| ^^^^
-Ztrack-diagnostics: created at compiler/rustc_trait_selection/src/traits/error_reporting/type_err_ctxt_ext.rs:3539:36
|
help: try adding a `where` bound
|
5 | fn b<const N: bool>() where [(); {!N} as usize]: {
| ++++++++++++++++++++++++++
```
Fix #122395 .
2024-03-21 00:03:59 +00:00
Esteban Küber
6c31f6ce12
Provide structured suggestion for #![feature(foo)]
...
```
error: `S2<'_>` is forbidden as the type of a const generic parameter
--> $DIR/lifetime-in-const-param.rs:5:23
|
LL | struct S<'a, const N: S2>(&'a ());
| ^^
|
= note: the only supported types are integers, `bool` and `char`
help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types
|
LL + #![feature(adt_const_params)]
|
```
Fix #55941 .
2024-03-18 16:08:58 +00:00
许杰友 Jieyou Xu (Joe)
ec2cc761bc
[AUTO-GENERATED] Migrate ui tests from //
to //@
directives
2024-02-16 20:02:50 +00:00
Oli Scherer
5f6390f947
Continue compilation after check_mod_type_wf errors
2024-02-14 11:00:30 +00:00
Michael Goulet
b4eee2e8b3
Do not assemble candidates for default impls
2024-02-13 19:20:13 +00:00
Zalathar
7b73e4fd44
Allow restricted trait impls in macros with min_specialization
...
Implementing traits marked with `#[rustc_specialization_trait]` normally
requires (min-)specialization to be enabled for the enclosing crate.
With this change, that permission can also be granted by an
`allow_internal_unstable` attribute on the macro that generates the impl.
2024-02-10 18:14:02 +11:00
Oli Scherer
eab2adb660
Continue to borrowck even if there were previous errors
2024-02-08 08:10:43 +00:00
bors
870a01a30e
Auto merge of #120558 - oli-obk:missing_impl_item_ice, r=estebank
...
Stop bailing out from compilation just because there were incoherent traits
fixes #120343
but also has a lot of "type annotations needed" fallout. Some are fixed in the second commit.
2024-02-08 05:01:09 +00:00
r0cky
c7519d42c2
Update tests
2024-02-07 10:42:01 +08:00
Oli Scherer
83738a9b1c
Stop bailing out from compilation just because there were incoherent traits
2024-02-05 10:17:31 +00:00
Esteban Küber
6efddac288
Provide more context on derived obligation error primary label
...
Expand the primary span of E0277 when the immediate unmet bound is not what the user wrote:
```
error[E0277]: the trait bound `i32: Bar` is not satisfied
--> f100.rs:6:6
|
6 | <i32 as Foo>::foo();
| ^^^ the trait `Bar` is not implemented for `i32`, which is required by `i32: Foo`
|
help: this trait has no implementations, consider adding one
--> f100.rs:2:1
|
2 | trait Bar {}
| ^^^^^^^^^
note: required for `i32` to implement `Foo`
--> f100.rs:3:14
|
3 | impl<T: Bar> Foo for T {}
| --- ^^^ ^
| |
| unsatisfied trait bound introduced here
```
Fix #40120 .
2024-01-30 21:28:18 +00:00
Guillaume Gomez
f7043a41ce
Rollup merge of #120400 - estebank:bound-error-cleanup, r=oli-obk
...
Bound errors span label cleanup
Consolidate span labels for "this type doesn't satisfy a bound" for more compact diagnostic output.
2024-01-30 11:19:15 +01:00
Esteban Küber
7df4a09fc4
Use single label for method not found due to unmet bound
2024-01-26 20:47:19 +00:00
Oli Scherer
db7cd57091
Remove track_errors entirely
2024-01-23 15:23:22 +00:00
Oli Scherer
9454b51b05
Make generic const type mismatches not hide trait impls from the trait solver
2024-01-22 13:23:45 +00:00
bors
5378c1cf07
Auto merge of #119821 - oli-obk:reveal_all_const_evals, r=lcnr
...
Always use RevealAll for const eval queries
implements what is described in https://github.com/rust-lang/rust/pull/116803#discussion_r1364089471
Using `UserFacing` for const eval does not make sense anymore, unless we significantly change things like avoiding revealing opaque types.
New tests are copied from https://github.com/rust-lang/rust/pull/101478
2024-01-20 04:57:51 +00:00
Oli Scherer
867831a170
Always use RevealAll for const eval queries
2024-01-19 11:32:34 +00:00
Matthias Krüger
0891cb4d81
Rollup merge of #119963 - clubby789:spec-allow-internal-unstable, r=compiler-errors
...
Fix `allow_internal_unstable` for `(min_)specialization`
Fixes #119950
Blocked on #119949 (comment doesn't make sense until that merges)
I'd like to follow this up and look for more instances of not properly checking spans for features but I wanted to fix the motivating issue.
2024-01-15 08:44:49 +01:00
clubby789
0529ccf341
Fix allow_internal_unstable
for (min_)specialization
2024-01-14 13:50:02 +00:00
George-lewis
d56cdd48cb
Bless tests
...
Update tests
2024-01-13 12:46:58 -05:00
bors
5113ed28ea
Auto merge of #118297 - shepmaster:warn-dead-tuple-fields, r=WaffleLapkin
...
Merge `unused_tuple_struct_fields` into `dead_code`
This implicitly upgrades the lint from `allow` to `warn` and places it into the `unused` lint group.
[Discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Moving.20.60unused_tuple_struct_fields.60.20from.20allow.20to.20warn )
2024-01-05 04:51:55 +00:00
Jake Goulding
53eca9fa87
Adjust compiler tests for unused_tuple_struct_fields -> dead_code
2024-01-02 15:34:37 -05:00
Oli Scherer
cd4c352fb4
Reorder check_item_type
diagnostics so they occur next to the corresponding check_well_formed
diagnostics
2024-01-02 14:17:56 +00:00
León Orell Valerian Liehr
3eb48a35c8
Introduce const Trait
(always-const trait bounds)
2023-12-27 12:51:32 +01:00
lcnr
11d16c4082
update use of feature flags
2023-12-14 15:22:37 +01:00
surechen
40ae34194c
remove redundant imports
...
detects redundant imports that can be eliminated.
for #117772 :
In order to facilitate review and modification, split the checking code and
removing redundant imports code into two PR.
2023-12-10 10:56:22 +08:00
Nilstrieb
41e8d152dc
Show number in error message even for one error
...
Co-authored-by: Adrian <adrian.iosdev@gmail.com>
2023-11-24 19:15:52 +01:00
Oli Scherer
beaf46f7e5
Work around the fact that check_mod_type_wf
may spuriously return ErrorGuaranteed
, even if that error is only emitted by check_modwitem_types
2023-10-25 12:04:54 +00:00
Michael Goulet
592163fb71
Extend impl's def_span to include where clauses
2023-10-09 11:47:02 +00:00
Michael Goulet
82e7cec16d
Tweak expected message to explain what it's actually signifying
2023-09-23 00:57:17 +00:00
Michael Goulet
30e6cea0ae
Point out if a local trait has no implementations
2023-09-10 21:20:36 +00:00