summaryrefslogtreecommitdiffstats
path: root/src/test/ui/type
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/type')
-rw-r--r--src/test/ui/type/issue-103271.rs18
-rw-r--r--src/test/ui/type/issue-103271.stderr25
-rw-r--r--src/test/ui/type/issue-94187-verbose-type-name.rs13
-rw-r--r--src/test/ui/type/type-ascription-soundness.rs8
-rw-r--r--src/test/ui/type/type-ascription-soundness.stderr24
-rw-r--r--src/test/ui/type/type-ascription.rs20
-rw-r--r--src/test/ui/type/type-check-defaults.stderr11
-rw-r--r--src/test/ui/type/type-dependent-def-issue-49241.rs2
-rw-r--r--src/test/ui/type/type-dependent-def-issue-49241.stderr9
9 files changed, 85 insertions, 45 deletions
diff --git a/src/test/ui/type/issue-103271.rs b/src/test/ui/type/issue-103271.rs
new file mode 100644
index 000000000..7cd76286a
--- /dev/null
+++ b/src/test/ui/type/issue-103271.rs
@@ -0,0 +1,18 @@
+fn main() {
+ let iter_fun = <&[u32]>::iter;
+ //~^ ERROR no function or associated item named `iter` found for reference `&[u32]` in the current scope [E0599]
+ //~| function or associated item not found in `&[u32]`
+ //~| HELP the function `iter` is implemented on `[u32]`
+ for item in iter_fun(&[1,1]) {
+ let x: &u32 = item;
+ assert_eq!(x, &1);
+ }
+ let iter_fun2 = <(&[u32])>::iter;
+ //~^ no function or associated item named `iter` found for reference `&[u32]` in the current scope [E0599]
+ //~| function or associated item not found in `&[u32]`
+ //~| HELP the function `iter` is implemented on `[u32]`
+ for item2 in iter_fun2(&[1,1]) {
+ let x: &u32 = item2;
+ assert_eq!(x, &1);
+ }
+}
diff --git a/src/test/ui/type/issue-103271.stderr b/src/test/ui/type/issue-103271.stderr
new file mode 100644
index 000000000..f4dac51b2
--- /dev/null
+++ b/src/test/ui/type/issue-103271.stderr
@@ -0,0 +1,25 @@
+error[E0599]: no function or associated item named `iter` found for reference `&[u32]` in the current scope
+ --> $DIR/issue-103271.rs:2:30
+ |
+LL | let iter_fun = <&[u32]>::iter;
+ | ^^^^ function or associated item not found in `&[u32]`
+ |
+help: the function `iter` is implemented on `[u32]`
+ |
+LL | let iter_fun = <[u32]>::iter;
+ | ~~~~~
+
+error[E0599]: no function or associated item named `iter` found for reference `&[u32]` in the current scope
+ --> $DIR/issue-103271.rs:10:33
+ |
+LL | let iter_fun2 = <(&[u32])>::iter;
+ | ^^^^ function or associated item not found in `&[u32]`
+ |
+help: the function `iter` is implemented on `[u32]`
+ |
+LL | let iter_fun2 = <([u32])>::iter;
+ | ~~~~~
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0599`.
diff --git a/src/test/ui/type/issue-94187-verbose-type-name.rs b/src/test/ui/type/issue-94187-verbose-type-name.rs
index 902ef5ade..3713a32eb 100644
--- a/src/test/ui/type/issue-94187-verbose-type-name.rs
+++ b/src/test/ui/type/issue-94187-verbose-type-name.rs
@@ -1,13 +1,16 @@
-// Check to insure that the output of `std::any::type_name` does not change based on -Zverbose
-// when printing constants
+// Check to insure that the output of `std::any::type_name` does not change based on `-Zverbose`
// run-pass
// edition: 2018
// revisions: normal verbose
// [verbose]compile-flags:-Zverbose
-struct Wrapper<const VALUE: usize>;
+use std::any::type_name;
fn main() {
- assert_eq!(std::any::type_name::<[u32; 0]>(), "[u32; 0]");
- assert_eq!(std::any::type_name::<Wrapper<0>>(), "issue_94187_verbose_type_name::Wrapper<0>");
+ assert_eq!(type_name::<[u32; 0]>(), "[u32; 0]");
+
+ struct Wrapper<const VALUE: usize>;
+ assert_eq!(type_name::<Wrapper<0>>(), "issue_94187_verbose_type_name::main::Wrapper<0>");
+
+ assert_eq!(type_name::<dyn Fn(u32) -> u32>(), "dyn core::ops::function::Fn(u32) -> u32");
}
diff --git a/src/test/ui/type/type-ascription-soundness.rs b/src/test/ui/type/type-ascription-soundness.rs
index d583fc213..08316cdcd 100644
--- a/src/test/ui/type/type-ascription-soundness.rs
+++ b/src/test/ui/type/type-ascription-soundness.rs
@@ -4,10 +4,10 @@
fn main() {
let arr = &[1u8, 2, 3];
- let ref x = arr: &[u8]; //~ ERROR mismatched types
- let ref mut x = arr: &[u8]; //~ ERROR mismatched types
- match arr: &[u8] { //~ ERROR mismatched types
+ let ref x = type_ascribe!(arr, &[u8]); //~ ERROR mismatched types
+ let ref mut x = type_ascribe!(arr, &[u8]); //~ ERROR mismatched types
+ match type_ascribe!(arr, &[u8]) { //~ ERROR mismatched types
ref x => {}
}
- let _len = (arr: &[u8]).len(); //~ ERROR mismatched types
+ let _len = type_ascribe!(arr, &[u8]).len(); //~ ERROR mismatched types
}
diff --git a/src/test/ui/type/type-ascription-soundness.stderr b/src/test/ui/type/type-ascription-soundness.stderr
index 6ed940823..522d5b2e3 100644
--- a/src/test/ui/type/type-ascription-soundness.stderr
+++ b/src/test/ui/type/type-ascription-soundness.stderr
@@ -1,35 +1,35 @@
error[E0308]: mismatched types
- --> $DIR/type-ascription-soundness.rs:7:17
+ --> $DIR/type-ascription-soundness.rs:7:31
|
-LL | let ref x = arr: &[u8];
- | ^^^ expected slice `[u8]`, found array `[u8; 3]`
+LL | let ref x = type_ascribe!(arr, &[u8]);
+ | ^^^ expected slice `[u8]`, found array `[u8; 3]`
|
= note: expected reference `&[u8]`
found reference `&[u8; 3]`
error[E0308]: mismatched types
- --> $DIR/type-ascription-soundness.rs:8:21
+ --> $DIR/type-ascription-soundness.rs:8:35
|
-LL | let ref mut x = arr: &[u8];
- | ^^^ expected slice `[u8]`, found array `[u8; 3]`
+LL | let ref mut x = type_ascribe!(arr, &[u8]);
+ | ^^^ expected slice `[u8]`, found array `[u8; 3]`
|
= note: expected reference `&[u8]`
found reference `&[u8; 3]`
error[E0308]: mismatched types
- --> $DIR/type-ascription-soundness.rs:9:11
+ --> $DIR/type-ascription-soundness.rs:9:25
|
-LL | match arr: &[u8] {
- | ^^^ expected slice `[u8]`, found array `[u8; 3]`
+LL | match type_ascribe!(arr, &[u8]) {
+ | ^^^ expected slice `[u8]`, found array `[u8; 3]`
|
= note: expected reference `&[u8]`
found reference `&[u8; 3]`
error[E0308]: mismatched types
- --> $DIR/type-ascription-soundness.rs:12:17
+ --> $DIR/type-ascription-soundness.rs:12:30
|
-LL | let _len = (arr: &[u8]).len();
- | ^^^ expected slice `[u8]`, found array `[u8; 3]`
+LL | let _len = type_ascribe!(arr, &[u8]).len();
+ | ^^^ expected slice `[u8]`, found array `[u8; 3]`
|
= note: expected reference `&[u8]`
found reference `&[u8; 3]`
diff --git a/src/test/ui/type/type-ascription.rs b/src/test/ui/type/type-ascription.rs
index 7adb07442..e4a4c89d0 100644
--- a/src/test/ui/type/type-ascription.rs
+++ b/src/test/ui/type/type-ascription.rs
@@ -8,32 +8,32 @@
use std::mem;
-const C1: u8 = 10: u8;
-const C2: [u8; 1: usize] = [1];
+const C1: u8 = type_ascribe!(10, u8);
+const C2: [u8; type_ascribe!(1, usize)] = [1];
struct S {
a: u8
}
fn main() {
- assert_eq!(C1.into(): i32, 10);
+ assert_eq!(type_ascribe!(C1.into(), i32), 10);
assert_eq!(C2[0], 1);
- let s = S { a: 10: u8 };
+ let s = S { a: type_ascribe!(10, u8) };
let arr = &[1u8, 2, 3];
- let mut v = arr.iter().cloned().collect(): Vec<_>;
+ let mut v = type_ascribe!(arr.iter().cloned().collect(), Vec<_>);
v.push(4);
assert_eq!(v, [1, 2, 3, 4]);
- let a = 1: u8;
- let b = a.into(): u16;
- assert_eq!(v[a.into(): usize], 2);
+ let a = type_ascribe!(1, u8);
+ let b = type_ascribe!(a.into(), u16);
+ assert_eq!(v[type_ascribe!(a.into(), usize)], 2);
assert_eq!(mem::size_of_val(&a), 1);
assert_eq!(mem::size_of_val(&b), 2);
- assert_eq!(b, 1: u16);
+ assert_eq!(b, type_ascribe!(1, u16));
let mut v = Vec::new();
- v: Vec<u8> = vec![1, 2, 3]; // Place expression type ascription
+ type_ascribe!(v, Vec<u8>) = vec![1, 2, 3]; // Place expression type ascription
assert_eq!(v, [1u8, 2, 3]);
}
diff --git a/src/test/ui/type/type-check-defaults.stderr b/src/test/ui/type/type-check-defaults.stderr
index cf77c057d..9ba63ffe9 100644
--- a/src/test/ui/type/type-check-defaults.stderr
+++ b/src/test/ui/type/type-check-defaults.stderr
@@ -66,15 +66,10 @@ LL | trait ProjectionPred<T:Iterator = IntoIter<i32>> where T::Item : Add<u8> {}
|
= help: the trait `Add<u8>` is not implemented for `i32`
= help: the following other types implement trait `Add<Rhs>`:
- <&'a f32 as Add<f32>>
- <&'a f64 as Add<f64>>
- <&'a i128 as Add<i128>>
- <&'a i16 as Add<i16>>
<&'a i32 as Add<i32>>
- <&'a i64 as Add<i64>>
- <&'a i8 as Add<i8>>
- <&'a isize as Add<isize>>
- and 48 others
+ <&i32 as Add<&i32>>
+ <i32 as Add<&i32>>
+ <i32 as Add>
error: aborting due to 7 previous errors
diff --git a/src/test/ui/type/type-dependent-def-issue-49241.rs b/src/test/ui/type/type-dependent-def-issue-49241.rs
index f37f093d9..caf5bade5 100644
--- a/src/test/ui/type/type-dependent-def-issue-49241.rs
+++ b/src/test/ui/type/type-dependent-def-issue-49241.rs
@@ -2,5 +2,5 @@ fn main() {
let v = vec![0];
const l: usize = v.count(); //~ ERROR attempt to use a non-constant value in a constant
let s: [u32; l] = v.into_iter().collect();
- //~^ERROR evaluation of constant value failed
+ //~^ constant
}
diff --git a/src/test/ui/type/type-dependent-def-issue-49241.stderr b/src/test/ui/type/type-dependent-def-issue-49241.stderr
index 02f267c6c..af16a6e8f 100644
--- a/src/test/ui/type/type-dependent-def-issue-49241.stderr
+++ b/src/test/ui/type/type-dependent-def-issue-49241.stderr
@@ -6,13 +6,12 @@ LL | const l: usize = v.count();
| |
| help: consider using `let` instead of `const`: `let l`
-error[E0080]: evaluation of constant value failed
+note: erroneous constant used
--> $DIR/type-dependent-def-issue-49241.rs:4:18
|
LL | let s: [u32; l] = v.into_iter().collect();
- | ^ referenced constant has errors
+ | ^
-error: aborting due to 2 previous errors
+error: aborting due to previous error
-Some errors have detailed explanations: E0080, E0435.
-For more information about an error, try `rustc --explain E0080`.
+For more information about this error, try `rustc --explain E0435`.