about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEric Holk <ericholk@microsoft.com>2022-04-13 16:38:16 -0700
committerEric Holk <ericholk@microsoft.com>2022-09-12 16:55:56 -0700
commit7fccac3ea0db7cbbb1b84ff4ab824f8d85f415fe (patch)
tree180db46f04cb01e79b9f843387b875de77264db3 /src
parent6c01273a1566bc312ea88225880d35c2259914a6 (diff)
downloadrust-7fccac3ea0db7cbbb1b84ff4ab824f8d85f415fe.tar.gz
rust-7fccac3ea0db7cbbb1b84ff4ab824f8d85f415fe.zip
Typecheck dyn* coercions
Also changes things to treat dyn* as a sized type, unlike dyn Trait.
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/async-await/dyn-star-trait-error.rs12
-rw-r--r--src/test/ui/async-await/dyn-star-trait-error.stderr9
-rw-r--r--src/test/ui/dyn-star/make-dyn-star.rs14
-rw-r--r--src/test/ui/dyn-star/syntax.rs3
4 files changed, 36 insertions, 2 deletions
diff --git a/src/test/ui/async-await/dyn-star-trait-error.rs b/src/test/ui/async-await/dyn-star-trait-error.rs
new file mode 100644
index 00000000000..20e183c7455
--- /dev/null
+++ b/src/test/ui/async-await/dyn-star-trait-error.rs
@@ -0,0 +1,12 @@
+#![feature(async_fn_in_traits)]
+
+use std::fmt::Debug;
+
+trait Foo {}
+
+fn make_dyn_star() {
+    let i = 42;
+    let dyn_i: dyn* Foo = i as dyn* Foo; //~ ERROR trait bound `{integer}: Foo` is not satisfied
+}
+
+fn main() {}
diff --git a/src/test/ui/async-await/dyn-star-trait-error.stderr b/src/test/ui/async-await/dyn-star-trait-error.stderr
new file mode 100644
index 00000000000..932bc50ffde
--- /dev/null
+++ b/src/test/ui/async-await/dyn-star-trait-error.stderr
@@ -0,0 +1,9 @@
+error[E0277]: the trait bound `{integer}: Foo` is not satisfied
+  --> $DIR/dyn-star-trait-error.rs:9:27
+   |
+LL |     let dyn_i: dyn* Foo = i as dyn* Foo;
+   |                           ^ the trait `Foo` is not implemented for `{integer}`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/dyn-star/make-dyn-star.rs b/src/test/ui/dyn-star/make-dyn-star.rs
new file mode 100644
index 00000000000..17356bfbd84
--- /dev/null
+++ b/src/test/ui/dyn-star/make-dyn-star.rs
@@ -0,0 +1,14 @@
+// check-pass
+#![feature(dyn_star)]
+
+use std::fmt::Debug;
+
+pub fn dyn_star_parameter(_: dyn* Send) {
+}
+
+fn make_dyn_star() {
+    let i = 42usize;
+    let dyn_i: dyn* Debug = i as dyn* Debug;
+}
+
+fn main() {}
diff --git a/src/test/ui/dyn-star/syntax.rs b/src/test/ui/dyn-star/syntax.rs
index dd96bf0672d..7848996e5e0 100644
--- a/src/test/ui/dyn-star/syntax.rs
+++ b/src/test/ui/dyn-star/syntax.rs
@@ -2,10 +2,9 @@
 //
 // check-pass
 
-
 #![feature(dyn_star)]
 
-pub fn dyn_star_parameter(_: &dyn* Send) {
+pub fn dyn_star_parameter(_: dyn* Send) {
 }
 
 fn main() {}