From b4ee9953d8dd037fcfce60a0d10c0da90ec81650 Mon Sep 17 00:00:00 2001 From: reddevilmidzy Date: Tue, 10 Feb 2026 16:01:13 +0000 Subject: [PATCH] modify error comment and bless test, delete tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.rs --- tests/crashes/133966.rs | 3 -- .../byte-string-u8-validation.rs | 2 + .../byte-string-u8-validation.stderr | 2 +- .../generic_const_exprs/issue-105257.rs | 6 +-- .../generic_const_exprs/lit_type_mismatch.rs | 22 ----------- .../lit_type_mismatch.stderr | 21 ---------- .../mgca/generic_const_type_mismatch.rs | 7 ++-- .../mgca/generic_const_type_mismatch.stderr | 6 +-- .../mgca/tuple_expr_type_mismatch.rs | 6 +-- .../mgca/tuple_expr_type_mismatch.stderr | 28 ++++--------- .../mgca/type_const-mismatched-types.rs | 4 +- .../mgca/type_const-mismatched-types.stderr | 26 +++++++++---- .../invalid-patterns.32bit.stderr | 4 +- .../type-dependent/type-mismatch.full.stderr | 14 ++++++- .../type-dependent/type-mismatch.min.stderr | 14 ++++++- .../type-dependent/type-mismatch.rs | 3 +- .../const-eval/array-len-mismatch-type.rs | 8 ++++ .../const-eval/array-len-mismatch-type.stderr | 39 +++++++++++++++++++ tests/ui/issues/issue-34373.rs | 6 +-- tests/ui/issues/issue-34373.stderr | 21 +--------- tests/ui/repeat-expr/repeat_count.rs | 19 +++++---- tests/ui/repeat-expr/repeat_count.stderr | 36 ++++++++++------- 22 files changed, 159 insertions(+), 138 deletions(-) delete mode 100644 tests/crashes/133966.rs delete mode 100644 tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.rs delete mode 100644 tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.stderr create mode 100644 tests/ui/consts/const-eval/array-len-mismatch-type.rs create mode 100644 tests/ui/consts/const-eval/array-len-mismatch-type.stderr diff --git a/tests/crashes/133966.rs b/tests/crashes/133966.rs deleted file mode 100644 index 25a881ae99b4..000000000000 --- a/tests/crashes/133966.rs +++ /dev/null @@ -1,3 +0,0 @@ -//@ known-bug: #133966 -pub struct Data([[&'static str]; 5_i32]); -const _: &'static Data = unsafe { &*(&[] as *const Data) }; diff --git a/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.rs b/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.rs index 063a38c8aa01..d49fb49d253c 100644 --- a/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.rs +++ b/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.rs @@ -9,10 +9,12 @@ //~^ ERROR rustc_dump_predicates //~| NOTE Binder { value: ConstArgHasType(T/#0, &'static [*mut u8; 3_usize]), bound_vars: [] } //~| NOTE Binder { value: TraitPredicate( as std::marker::Sized>, polarity:Positive), bound_vars: [] } + where ConstBytes: Sized; //~^ ERROR mismatched types //~| NOTE expected `&[*mut u8; 3]`, found `&[u8; 3]` //~| NOTE expected reference `&'static [*mut u8; 3]` +//~| NOTE found reference `&'static [u8; 3]` fn main() {} diff --git a/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.stderr b/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.stderr index d4b8ac7f021d..1273a74102a2 100644 --- a/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.stderr +++ b/tests/ui/const-generics/adt_const_params/byte-string-u8-validation.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/byte-string-u8-validation.rs:13:16 + --> $DIR/byte-string-u8-validation.rs:14:16 | LL | ConstBytes: Sized; | ^^^^^^ expected `&[*mut u8; 3]`, found `&[u8; 3]` diff --git a/tests/ui/const-generics/generic_const_exprs/issue-105257.rs b/tests/ui/const-generics/generic_const_exprs/issue-105257.rs index 85a28f2b3303..947410cbe0dc 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-105257.rs +++ b/tests/ui/const-generics/generic_const_exprs/issue-105257.rs @@ -2,9 +2,9 @@ #![expect(incomplete_features)] trait Trait { - fn fnc(&self) {} //~ERROR defaults for generic parameters are not allowed here - //~^ ERROR: mismatched types - fn foo() }>(&self) {} //~ERROR defaults for generic parameters are not allowed here + fn fnc(&self) {} //~ ERROR defaults for generic parameters are not allowed here + //~^ ERROR mismatched types + fn foo() }>(&self) {} //~ ERROR defaults for generic parameters are not allowed here } fn main() {} diff --git a/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.rs b/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.rs deleted file mode 100644 index 1ed0965e1bde..000000000000 --- a/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! ICE regression test for #114317 and #126182 -//! Type mismatches of literals cause errors int typeck, -//! but those errors cannot be propagated to the various -//! `lit_to_const` call sites. Now `lit_to_const` just delays -//! a bug and produces an error constant on its own. - -#![feature(adt_const_params)] -#![feature(generic_const_exprs)] -#![allow(incomplete_features)] - -struct A(C); -//~^ ERROR: generic parameters with a default must be trailing -//~| ERROR: mismatched types - -struct Cond; - -struct Thing>(T); -//~^ ERROR: mismatched types - -impl Thing {} - -fn main() {} diff --git a/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.stderr b/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.stderr deleted file mode 100644 index e4613e498b27..000000000000 --- a/tests/ui/const-generics/generic_const_exprs/lit_type_mismatch.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error: generic parameters with a default must be trailing - --> $DIR/lit_type_mismatch.rs:11:16 - | -LL | struct A(C); - | ^ - -error[E0308]: mismatched types - --> $DIR/lit_type_mismatch.rs:11:24 - | -LL | struct A(C); - | ^ expected `()`, found integer - -error[E0308]: mismatched types - --> $DIR/lit_type_mismatch.rs:17:23 - | -LL | struct Thing>(T); - | ^ expected `bool`, found integer - -error: aborting due to 3 previous errors - -For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/const-generics/mgca/generic_const_type_mismatch.rs b/tests/ui/const-generics/mgca/generic_const_type_mismatch.rs index ffde84522a26..948b8ce72148 100644 --- a/tests/ui/const-generics/mgca/generic_const_type_mismatch.rs +++ b/tests/ui/const-generics/mgca/generic_const_type_mismatch.rs @@ -1,6 +1,7 @@ //! Regression test for #![expect(incomplete_features)] #![feature( + adt_const_params, generic_const_items, generic_const_parameter_types, min_generic_const_args, @@ -12,9 +13,7 @@ struct Foo { field: T, } -#[type_const] -const WRAP : T = { - Foo::{field : 1} //~ ERROR: type annotations needed for the literal -}; +type const WRAP : T = Foo::{field : 1}; +//~^ ERROR: type annotations needed for the literal fn main() {} diff --git a/tests/ui/const-generics/mgca/generic_const_type_mismatch.stderr b/tests/ui/const-generics/mgca/generic_const_type_mismatch.stderr index 10e37b327eec..fdb0995bff5d 100644 --- a/tests/ui/const-generics/mgca/generic_const_type_mismatch.stderr +++ b/tests/ui/const-generics/mgca/generic_const_type_mismatch.stderr @@ -1,8 +1,8 @@ error: type annotations needed for the literal - --> $DIR/generic_const_type_mismatch.rs:17:22 + --> $DIR/generic_const_type_mismatch.rs:16:59 | -LL | Foo::{field : 1} - | ^ +LL | type const WRAP : T = Foo::{field : 1}; + | ^ error: aborting due to 1 previous error diff --git a/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.rs b/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.rs index 373cce1d6220..4bf62b3a3070 100644 --- a/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.rs +++ b/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.rs @@ -12,11 +12,9 @@ fn qux() {} fn main() { foo::<{ (1, true) }>(); //~^ ERROR: type annotations needed for the literal - //~| ERROR: mismatched types: expected `i32`, found `bool` bar::<{ (1_u32, [1, 2]) }>(); //~^ ERROR: expected `i32`, found const array - //~| ERROR: mismatched types: expected `[u8; 2]`, found `u32` qux::<{ (1i32, 'a') }>(); - //~^ ERROR: mismatched types: expected `char`, found `i32` - //~| ERROR: mismatched types: expected `i32`, found `char` + //~^ ERROR: the constant `1` is not of type `char` + //~| ERROR: the constant `'a'` is not of type `i32 } diff --git a/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.stderr b/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.stderr index 13e2789ccb67..4136c7337cd4 100644 --- a/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.stderr +++ b/tests/ui/const-generics/mgca/tuple_expr_type_mismatch.stderr @@ -4,35 +4,23 @@ error: type annotations needed for the literal LL | foo::<{ (1, true) }>(); | ^ -error: mismatched types: expected `i32`, found `bool` - --> $DIR/tuple_expr_type_mismatch.rs:13:17 - | -LL | foo::<{ (1, true) }>(); - | ^^^^ - -error: mismatched types: expected `[u8; 2]`, found `u32` - --> $DIR/tuple_expr_type_mismatch.rs:16:14 - | -LL | bar::<{ (1_u32, [1, 2]) }>(); - | ^^^^^ - error: expected `i32`, found const array - --> $DIR/tuple_expr_type_mismatch.rs:16:21 + --> $DIR/tuple_expr_type_mismatch.rs:15:21 | LL | bar::<{ (1_u32, [1, 2]) }>(); | ^^^^^^ -error: mismatched types: expected `char`, found `i32` - --> $DIR/tuple_expr_type_mismatch.rs:19:14 +error: the constant `1` is not of type `char` + --> $DIR/tuple_expr_type_mismatch.rs:17:13 | LL | qux::<{ (1i32, 'a') }>(); - | ^^^^ + | ^^^^^^^^^^^ expected `char`, found `i32` -error: mismatched types: expected `i32`, found `char` - --> $DIR/tuple_expr_type_mismatch.rs:19:20 +error: the constant `'a'` is not of type `i32` + --> $DIR/tuple_expr_type_mismatch.rs:17:13 | LL | qux::<{ (1i32, 'a') }>(); - | ^^^ + | ^^^^^^^^^^^ expected `i32`, found `char` -error: aborting due to 6 previous errors +error: aborting due to 4 previous errors diff --git a/tests/ui/const-generics/mgca/type_const-mismatched-types.rs b/tests/ui/const-generics/mgca/type_const-mismatched-types.rs index deac97383b04..c73785f9a3e3 100644 --- a/tests/ui/const-generics/mgca/type_const-mismatched-types.rs +++ b/tests/ui/const-generics/mgca/type_const-mismatched-types.rs @@ -2,9 +2,11 @@ #![feature(min_generic_const_args)] type const FREE: u32 = 5_usize; -//~^ ERROR mismatched types +//~^ ERROR the constant `5` is not of type `u32` +//~| ERROR mismatched types type const FREE2: isize = FREE; +//~^ ERROR the constant `5` is not of type `isize` trait Tr { type const N: usize; diff --git a/tests/ui/const-generics/mgca/type_const-mismatched-types.stderr b/tests/ui/const-generics/mgca/type_const-mismatched-types.stderr index 1c04ac508569..f7f64c535f60 100644 --- a/tests/ui/const-generics/mgca/type_const-mismatched-types.stderr +++ b/tests/ui/const-generics/mgca/type_const-mismatched-types.stderr @@ -1,3 +1,21 @@ +error: the constant `5` is not of type `u32` + --> $DIR/type_const-mismatched-types.rs:4:1 + | +LL | type const FREE: u32 = 5_usize; + | ^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `usize` + +error: the constant `5` is not of type `isize` + --> $DIR/type_const-mismatched-types.rs:8:1 + | +LL | type const FREE2: isize = FREE; + | ^^^^^^^^^^^^^^^^^^^^^^^ expected `isize`, found `usize` + +error[E0308]: mismatched types + --> $DIR/type_const-mismatched-types.rs:16:27 + | +LL | type const N: usize = false; + | ^^^^^ expected `usize`, found `bool` + error[E0308]: mismatched types --> $DIR/type_const-mismatched-types.rs:4:24 | @@ -10,12 +28,6 @@ LL - type const FREE: u32 = 5_usize; LL + type const FREE: u32 = 5_u32; | -error[E0308]: mismatched types - --> $DIR/type_const-mismatched-types.rs:18:22 - | -LL | type const N: usize = false; - | ^^^^^ expected `usize`, found `bool` - -error: aborting due to 2 previous errors +error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr b/tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr index b85856db9287..df7c2a0a8629 100644 --- a/tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr +++ b/tests/ui/const-generics/min_const_generics/invalid-patterns.32bit.stderr @@ -22,7 +22,7 @@ error[E0308]: mismatched types LL | get_flag::<42, 0x5ad>(); | ^^^^^ expected `char`, found `u8` -error[E0080]: reading memory at ALLOC6[0x0..0x4], but memory is uninitialized at [0x1..0x4], and this operation requires initialized memory +error[E0080]: reading memory at ALLOC0[0x0..0x4], but memory is uninitialized at [0x1..0x4], and this operation requires initialized memory --> $DIR/invalid-patterns.rs:40:32 | LL | get_flag::(); @@ -54,7 +54,7 @@ LL | get_flag::<{ unsafe { bool_raw.boolean } }, { unsafe { char_raw.character 42 │ B } -error[E0080]: reading memory at ALLOC12[0x0..0x4], but memory is uninitialized at [0x1..0x4], and this operation requires initialized memory +error[E0080]: reading memory at ALLOC1[0x0..0x4], but memory is uninitialized at [0x1..0x4], and this operation requires initialized memory --> $DIR/invalid-patterns.rs:44:58 | LL | get_flag::<{ unsafe { bool_raw.boolean } }, { unsafe { char_raw.character } }>(); diff --git a/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr index 95d20de1b432..9de140dab9eb 100644 --- a/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr +++ b/tests/ui/const-generics/type-dependent/type-mismatch.full.stderr @@ -1,3 +1,15 @@ +error: the constant `1` is not of type `u8` + --> $DIR/type-mismatch.rs:8:27 + | +LL | assert_eq!(R.method::<1u16>(), 1); + | ^^^^ expected `u8`, found `u16` + | +note: required by a const generic parameter in `R::method` + --> $DIR/type-mismatch.rs:5:15 + | +LL | fn method(&self) -> u8 { N } + | ^^^^^^^^^^^ required by this const generic parameter in `R::method` + error[E0308]: mismatched types --> $DIR/type-mismatch.rs:8:27 | @@ -10,6 +22,6 @@ LL - assert_eq!(R.method::<1u16>(), 1); LL + assert_eq!(R.method::<1u8>(), 1); | -error: aborting due to 1 previous error +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr b/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr index 95d20de1b432..9de140dab9eb 100644 --- a/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr +++ b/tests/ui/const-generics/type-dependent/type-mismatch.min.stderr @@ -1,3 +1,15 @@ +error: the constant `1` is not of type `u8` + --> $DIR/type-mismatch.rs:8:27 + | +LL | assert_eq!(R.method::<1u16>(), 1); + | ^^^^ expected `u8`, found `u16` + | +note: required by a const generic parameter in `R::method` + --> $DIR/type-mismatch.rs:5:15 + | +LL | fn method(&self) -> u8 { N } + | ^^^^^^^^^^^ required by this const generic parameter in `R::method` + error[E0308]: mismatched types --> $DIR/type-mismatch.rs:8:27 | @@ -10,6 +22,6 @@ LL - assert_eq!(R.method::<1u16>(), 1); LL + assert_eq!(R.method::<1u8>(), 1); | -error: aborting due to 1 previous error +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/const-generics/type-dependent/type-mismatch.rs b/tests/ui/const-generics/type-dependent/type-mismatch.rs index 6ed5fdca30ae..fc7ae994184b 100644 --- a/tests/ui/const-generics/type-dependent/type-mismatch.rs +++ b/tests/ui/const-generics/type-dependent/type-mismatch.rs @@ -6,5 +6,6 @@ fn method(&self) -> u8 { N } } fn main() { assert_eq!(R.method::<1u16>(), 1); - //~^ ERROR mismatched types + //~^ ERROR the constant `1` is not of type `u8` + //~| ERROR mismatched types } diff --git a/tests/ui/consts/const-eval/array-len-mismatch-type.rs b/tests/ui/consts/const-eval/array-len-mismatch-type.rs new file mode 100644 index 000000000000..463572c13e10 --- /dev/null +++ b/tests/ui/consts/const-eval/array-len-mismatch-type.rs @@ -0,0 +1,8 @@ +//! Regression test for +pub struct Data([[&'static str]; 5_i32]); +//~^ ERROR the constant `5` is not of type `usize` +//~| ERROR the size for values of type `[&'static str]` cannot be known at compilation time +//~| ERROR mismatched types +const _: &'static Data = unsafe { &*(&[] as *const Data) }; +//~^ ERROR the type `[[&str]; 5]` has an unknown layout +fn main() {} diff --git a/tests/ui/consts/const-eval/array-len-mismatch-type.stderr b/tests/ui/consts/const-eval/array-len-mismatch-type.stderr new file mode 100644 index 000000000000..0f03006f0032 --- /dev/null +++ b/tests/ui/consts/const-eval/array-len-mismatch-type.stderr @@ -0,0 +1,39 @@ +error: the constant `5` is not of type `usize` + --> $DIR/array-len-mismatch-type.rs:2:17 + | +LL | pub struct Data([[&'static str]; 5_i32]); + | ^^^^^^^^^^^^^^^^^^^^^^^ expected `usize`, found `i32` + | + = note: the length of array `[[&'static str]; 5]` must be type `usize` + +error[E0277]: the size for values of type `[&'static str]` cannot be known at compilation time + --> $DIR/array-len-mismatch-type.rs:2:17 + | +LL | pub struct Data([[&'static str]; 5_i32]); + | ^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time + | + = help: the trait `Sized` is not implemented for `[&'static str]` + = note: slice and array elements must have `Sized` type + +error[E0080]: the type `[[&str]; 5]` has an unknown layout + --> $DIR/array-len-mismatch-type.rs:6:39 + | +LL | const _: &'static Data = unsafe { &*(&[] as *const Data) }; + | ^^ evaluation of `_` failed here + +error[E0308]: mismatched types + --> $DIR/array-len-mismatch-type.rs:2:34 + | +LL | pub struct Data([[&'static str]; 5_i32]); + | ^^^^^ expected `usize`, found `i32` + | +help: change the type of the numeric literal from `i32` to `usize` + | +LL - pub struct Data([[&'static str]; 5_i32]); +LL + pub struct Data([[&'static str]; 5_usize]); + | + +error: aborting due to 4 previous errors + +Some errors have detailed explanations: E0080, E0277, E0308. +For more information about an error, try `rustc --explain E0080`. diff --git a/tests/ui/issues/issue-34373.rs b/tests/ui/issues/issue-34373.rs index 019cab42c643..765bfc20a451 100644 --- a/tests/ui/issues/issue-34373.rs +++ b/tests/ui/issues/issue-34373.rs @@ -4,9 +4,9 @@ trait Trait { fn foo(_: T) {} } -pub struct Foo>>; //~ ERROR cycle detected -//~^ ERROR `T` is never used -//~| ERROR cycle detected +pub struct Foo>>; +//~^ ERROR cycle detected when computing type of `Foo::T` +//~| ERROR type parameter `T` is never used type DefaultFoo = Foo; fn main() { diff --git a/tests/ui/issues/issue-34373.stderr b/tests/ui/issues/issue-34373.stderr index 49365a701cee..6d68de8fb3b8 100644 --- a/tests/ui/issues/issue-34373.stderr +++ b/tests/ui/issues/issue-34373.stderr @@ -1,22 +1,3 @@ -error[E0391]: cycle detected when computing type of `Foo::T` - --> $DIR/issue-34373.rs:7:34 - | -LL | pub struct Foo>>; - | ^^^^^^^^^^ - | -note: ...which requires expanding type alias `DefaultFoo`... - --> $DIR/issue-34373.rs:10:1 - | -LL | type DefaultFoo = Foo; - | ^^^^^^^^^^^^^^^ - = note: ...which again requires computing type of `Foo::T`, completing the cycle -note: cycle used when checking that `Foo` is well-formed - --> $DIR/issue-34373.rs:7:1 - | -LL | pub struct Foo>>; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information - error[E0391]: cycle detected when computing type of `Foo::T` --> $DIR/issue-34373.rs:7:34 | @@ -45,7 +26,7 @@ LL | pub struct Foo>>; = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` = help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead -error: aborting due to 3 previous errors +error: aborting due to 2 previous errors Some errors have detailed explanations: E0391, E0392. For more information about an error, try `rustc --explain E0391`. diff --git a/tests/ui/repeat-expr/repeat_count.rs b/tests/ui/repeat-expr/repeat_count.rs index 2febcdc07c2a..b1e3a9d8cb3b 100644 --- a/tests/ui/repeat-expr/repeat_count.rs +++ b/tests/ui/repeat-expr/repeat_count.rs @@ -21,16 +21,21 @@ fn main() { let f = [0; -4_isize]; //~^ ERROR mismatched types //~| NOTE expected `usize`, found `isize` - let f = [0_usize; -1_isize]; + //~| NOTE `-4_isize` cannot fit into type `usize` + let g = [0_usize; -1_isize]; //~^ ERROR mismatched types //~| NOTE expected `usize`, found `isize` - let f = [0; 4u8]; - //~^ ERROR mismatched types + //~| NOTE `-1_isize` cannot fit into type `usize` + let h = [0; 4u8]; + //~^ ERROR the constant `4` is not of type `usize` //~| NOTE expected `usize`, found `u8` - struct G { - g: (), + //~| NOTE the length of array `[{integer}; 4]` must be type `usize` + //~| ERROR mismatched types + //~| NOTE expected `usize`, found `u8` + struct I { + i: (), } - let g = [0; G { g: () }]; + let i = [0; I { i: () }]; //~^ ERROR mismatched types - //~| NOTE expected `usize`, found `G` + //~| NOTE expected `usize`, found `I` } diff --git a/tests/ui/repeat-expr/repeat_count.stderr b/tests/ui/repeat-expr/repeat_count.stderr index 8d8702e981e6..5da9dbe03209 100644 --- a/tests/ui/repeat-expr/repeat_count.stderr +++ b/tests/ui/repeat-expr/repeat_count.stderr @@ -43,32 +43,40 @@ LL | let f = [0; -4_isize]; = note: `-4_isize` cannot fit into type `usize` error[E0308]: mismatched types - --> $DIR/repeat_count.rs:24:23 + --> $DIR/repeat_count.rs:25:23 | -LL | let f = [0_usize; -1_isize]; +LL | let g = [0_usize; -1_isize]; | ^^^^^^^^ expected `usize`, found `isize` | = note: `-1_isize` cannot fit into type `usize` -error[E0308]: mismatched types - --> $DIR/repeat_count.rs:27:17 +error: the constant `4` is not of type `usize` + --> $DIR/repeat_count.rs:29:13 | -LL | let f = [0; 4u8]; +LL | let h = [0; 4u8]; + | ^^^^^^^^ expected `usize`, found `u8` + | + = note: the length of array `[{integer}; 4]` must be type `usize` + +error[E0308]: mismatched types + --> $DIR/repeat_count.rs:38:17 + | +LL | let i = [0; I { i: () }]; + | ^^^^^^^^^^^ expected `usize`, found `I` + +error[E0308]: mismatched types + --> $DIR/repeat_count.rs:29:17 + | +LL | let h = [0; 4u8]; | ^^^ expected `usize`, found `u8` | help: change the type of the numeric literal from `u8` to `usize` | -LL - let f = [0; 4u8]; -LL + let f = [0; 4usize]; +LL - let h = [0; 4u8]; +LL + let h = [0; 4usize]; | -error[E0308]: mismatched types - --> $DIR/repeat_count.rs:33:17 - | -LL | let g = [0; G { g: () }]; - | ^^^^^^^^^^^ expected `usize`, found `G` - -error: aborting due to 9 previous errors +error: aborting due to 10 previous errors Some errors have detailed explanations: E0308, E0435. For more information about an error, try `rustc --explain E0308`.