summaryrefslogtreecommitdiffstats
path: root/tests/ui/type
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/type')
-rw-r--r--tests/ui/type/type-check/cannot_infer_local_or_vec.stderr2
-rw-r--r--tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.rs6
-rw-r--r--tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.stderr15
-rw-r--r--tests/ui/type/type-check/point-at-inference-issue-116155.rs17
-rw-r--r--tests/ui/type/type-check/point-at-inference-issue-116155.stderr18
-rw-r--r--tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr1
6 files changed, 58 insertions, 1 deletions
diff --git a/tests/ui/type/type-check/cannot_infer_local_or_vec.stderr b/tests/ui/type/type-check/cannot_infer_local_or_vec.stderr
index 09c4b2053..7be00341d 100644
--- a/tests/ui/type/type-check/cannot_infer_local_or_vec.stderr
+++ b/tests/ui/type/type-check/cannot_infer_local_or_vec.stderr
@@ -2,7 +2,7 @@ error[E0282]: type annotations needed for `Vec<_>`
--> $DIR/cannot_infer_local_or_vec.rs:2:9
|
LL | let x = vec![];
- | ^
+ | ^ ------ type must be known at this point
|
help: consider giving `x` an explicit type, where the placeholders `_` are specified
|
diff --git a/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.rs b/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.rs
new file mode 100644
index 000000000..adf3049b4
--- /dev/null
+++ b/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.rs
@@ -0,0 +1,6 @@
+fn foo() -> Result<String, ()> {
+ let out: Result<(), ()> = Ok(());
+ out //~ ERROR mismatched types
+}
+
+fn main() {}
diff --git a/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.stderr b/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.stderr
new file mode 100644
index 000000000..447b22a15
--- /dev/null
+++ b/tests/ui/type/type-check/issue-116967-cannot-coerce-returned-result.stderr
@@ -0,0 +1,15 @@
+error[E0308]: mismatched types
+ --> $DIR/issue-116967-cannot-coerce-returned-result.rs:3:5
+ |
+LL | fn foo() -> Result<String, ()> {
+ | ------------------ expected `Result<String, ()>` because of return type
+LL | let out: Result<(), ()> = Ok(());
+LL | out
+ | ^^^ expected `Result<String, ()>`, found `Result<(), ()>`
+ |
+ = note: expected enum `Result<String, _>`
+ found enum `Result<(), _>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/type/type-check/point-at-inference-issue-116155.rs b/tests/ui/type/type-check/point-at-inference-issue-116155.rs
new file mode 100644
index 000000000..1e9942d42
--- /dev/null
+++ b/tests/ui/type/type-check/point-at-inference-issue-116155.rs
@@ -0,0 +1,17 @@
+struct S<T>(T);
+
+impl<T> S<T> {
+ fn new() -> Self {
+ loop {}
+ }
+
+ fn constrain<F: Fn() -> T>(&self, _f: F) {}
+}
+
+fn main() {
+ let s = S::new();
+ let c = || true;
+ s.constrain(c);
+ let _: S<usize> = s;
+ //~^ ERROR mismatched types
+}
diff --git a/tests/ui/type/type-check/point-at-inference-issue-116155.stderr b/tests/ui/type/type-check/point-at-inference-issue-116155.stderr
new file mode 100644
index 000000000..c8c01603c
--- /dev/null
+++ b/tests/ui/type/type-check/point-at-inference-issue-116155.stderr
@@ -0,0 +1,18 @@
+error[E0308]: mismatched types
+ --> $DIR/point-at-inference-issue-116155.rs:15:23
+ |
+LL | s.constrain(c);
+ | - - this argument has type `{closure@$DIR/point-at-inference-issue-116155.rs:13:13: 13:15}`...
+ | |
+ | ... which causes `s` to have type `S<bool>`
+LL | let _: S<usize> = s;
+ | -------- ^ expected `S<usize>`, found `S<bool>`
+ | |
+ | expected due to this
+ |
+ = note: expected struct `S<usize>`
+ found struct `S<bool>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr b/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr
index 8a296dc7e..4412c49ea 100644
--- a/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr
+++ b/tests/ui/type/type-parameter-defaults-referencing-Self-ppaux.stderr
@@ -24,6 +24,7 @@ LL | trait MyAdd<Rhs=Self> { fn add(&self, other: &Rhs) -> Self; }
| |
| this trait cannot be made into an object...
= help: consider moving `add` to another trait
+ = help: only type `i32` implements the trait, consider using it directly instead
error: aborting due to 2 previous errors