Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7dce0b3
Revive amdgpu-kernel calling convention
Flakebi Jan 2, 2025
94399e0
Remove rust-analyzer changes
Flakebi Jan 2, 2025
6805183
Fix unsupported calling conv tests
Flakebi Jan 2, 2025
3c31861
Don't allow transmuting ZSTs in dispatch_from_dyn impl
compiler-errors Jan 8, 2025
11bc805
Don't allow DispatchFromDyn impls that transmute ZST to non-ZST
compiler-errors Jan 8, 2025
ebd5ce1
for purely return-type based searches, deprioritize clone-like functions
lolbinarycat Jan 9, 2025
2c4ee54
Introduce gpu-kernel instead of amdgpu-kernel
Flakebi Jan 3, 2025
b8d962b
Fix tests and tidy
Flakebi Jan 14, 2025
68b2639
Disable test for not-yet-merged amdgpu target
Flakebi Jan 14, 2025
516a933
Make sure we can produce ConstArgHasWrongType errors for valtree consts
compiler-errors Jan 11, 2025
3cd7581
Normalize field before checking PhantomData in coerce/dispatch impl v…
compiler-errors Jan 8, 2025
2669f2a
Do not consider traits that have unsatisfied const conditions to be c…
compiler-errors Jan 13, 2025
b89a6e4
Consider more erroneous layouts as LayoutError::ReferencesError to su…
compiler-errors Jan 8, 2025
5775190
Make sure to scrape region constraints from deeply normalizing type o…
compiler-errors Dec 30, 2024
603fdb9
Rollup merge of #134940 - compiler-errors:scrape, r=lcnr
matthiaskrgr Jan 14, 2025
75029dc
Rollup merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee
matthiaskrgr Jan 14, 2025
5af7c9d
Rollup merge of #135228 - compiler-errors:normalizes-ur-dispatch, r=B…
matthiaskrgr Jan 14, 2025
92a6c67
Rollup merge of #135264 - compiler-errors:layout-propagate-errors, r=…
matthiaskrgr Jan 14, 2025
e351eae
Rollup merge of #135302 - lolbinarycat:rustdoc-search-return-sort-134…
matthiaskrgr Jan 14, 2025
625c948
Rollup merge of #135380 - compiler-errors:mismatch-valtree, r=lcnr
matthiaskrgr Jan 14, 2025
d0fb971
Rollup merge of #135425 - compiler-errors:not-conditionally-const, r=…
matthiaskrgr Jan 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Make sure we can produce ConstArgHasWrongType errors for valtree consts
  • Loading branch information
compiler-errors committed Jan 14, 2025
commit 516a93353d63ab9079e5ea5709f338f14d165272
5 changes: 3 additions & 2 deletions compiler/rustc_trait_selection/src/solve/fulfill.rs
Original file line number Diff line number Diff line change
Expand Up @@ -264,9 +264,10 @@ fn fulfillment_error_for_no_solution<'tcx>(
infcx.tcx.type_of(uv.def).instantiate(infcx.tcx, uv.args)
}
ty::ConstKind::Param(param_ct) => param_ct.find_ty_from_env(obligation.param_env),
_ => span_bug!(
ty::ConstKind::Value(ty, _) => ty,
kind => span_bug!(
obligation.cause.span,
"ConstArgHasWrongType failed but we don't know how to compute type"
"ConstArgHasWrongType failed but we don't know how to compute type for {kind:?}"
),
};
FulfillmentErrorCode::Select(SelectionError::ConstArgHasWrongType {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
error: the constant `N` is not of type `bool`
--> $DIR/type-mismatch-in-nested-goal.rs:9:50
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^ expected `bool`, found `usize`
|
note: required by a const generic parameter in `A`
--> $DIR/type-mismatch-in-nested-goal.rs:5:9
|
LL | trait A<const B: bool> {}
| ^^^^^^^^^^^^^ required by this const generic parameter in `A`

error: the constant `true` is not of type `usize`
--> $DIR/type-mismatch-in-nested-goal.rs:13:13
|
LL | needs_a([]);
| ------- ^^ expected `usize`, found `bool`
| |
| required by a bound introduced by this call
|
note: required by a const generic parameter in `needs_a`
--> $DIR/type-mismatch-in-nested-goal.rs:9:12
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^^^^^^^^^^^ required by this const generic parameter in `needs_a`

error[E0308]: mismatched types
--> $DIR/type-mismatch-in-nested-goal.rs:13:13
|
LL | needs_a([]);
| ------- ^^ expected an array with a size of true, found one with a size of 0
| |
| arguments to this function are incorrect
|
= note: expected array `[u8; true]`
found array `[_; 0]`
note: function defined here
--> $DIR/type-mismatch-in-nested-goal.rs:9:4
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^^^^ ----------

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0308`.
45 changes: 45 additions & 0 deletions tests/ui/const-generics/type-mismatch-in-nested-goal.next.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
error: the constant `N` is not of type `bool`
--> $DIR/type-mismatch-in-nested-goal.rs:9:50
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^ expected `bool`, found `usize`
|
note: required by a const generic parameter in `A`
--> $DIR/type-mismatch-in-nested-goal.rs:5:9
|
LL | trait A<const B: bool> {}
| ^^^^^^^^^^^^^ required by this const generic parameter in `A`

error: the constant `true` is not of type `usize`
--> $DIR/type-mismatch-in-nested-goal.rs:13:13
|
LL | needs_a([]);
| ------- ^^ expected `usize`, found `bool`
| |
| required by a bound introduced by this call
|
note: required by a const generic parameter in `needs_a`
--> $DIR/type-mismatch-in-nested-goal.rs:9:12
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^^^^^^^^^^^ required by this const generic parameter in `needs_a`

error[E0308]: mismatched types
--> $DIR/type-mismatch-in-nested-goal.rs:13:13
|
LL | needs_a([]);
| ------- ^^ expected an array with a size of true, found one with a size of 0
| |
| arguments to this function are incorrect
|
= note: expected array `[u8; true]`
found array `[_; 0]`
note: function defined here
--> $DIR/type-mismatch-in-nested-goal.rs:9:4
|
LL | fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
| ^^^^^^^ ----------

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0308`.
17 changes: 17 additions & 0 deletions tests/ui/const-generics/type-mismatch-in-nested-goal.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//@ revisions: current next
//@[next] compile-flags: -Znext-solver
//@ ignore-compare-mode-next-solver (explicit revisions)

trait A<const B: bool> {}

impl A<true> for () {}

fn needs_a<const N: usize>(_: [u8; N]) where (): A<N> {}
//~^ ERROR the constant `N` is not of type `bool`

pub fn main() {
needs_a([]);
//~^ ERROR the constant `true` is not of type `usize`
//~| ERROR mismatched types
// FIXME(const_generics): we should hide this error as we've already errored above
}
Loading