diff options
| author | Michael Goulet <michael@errs.io> | 2022-10-14 04:55:07 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-10-14 05:47:09 +0000 |
| commit | 8c7e836abb62331ebb8350c7724c95241ef95a51 (patch) | |
| tree | b5ffb3822dc316424fc0e918e223434dfd510218 /src/test | |
| parent | 0cb217d29b6cd9a67fc493a12a5754ed9d21671a (diff) | |
| download | rust-8c7e836abb62331ebb8350c7724c95241ef95a51.tar.gz rust-8c7e836abb62331ebb8350c7724c95241ef95a51.zip | |
Address nits, add test for implicit dyn-star coercion without feature gate
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/dyn-star/make-dyn-star.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/dyn-star/no-implicit-dyn-star.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/dyn-star/no-implicit-dyn-star.stderr | 19 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs b/src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs new file mode 100644 index 00000000000..7673c793678 --- /dev/null +++ b/src/test/ui/dyn-star/auxiliary/dyn-star-foreign.rs @@ -0,0 +1,10 @@ +#![feature(dyn_star)] +#![allow(incomplete_features)] + +use std::fmt::Display; + +pub fn require_dyn_star_display(_: dyn* Display) {} + +fn works_locally() { + require_dyn_star_display(1usize); +} diff --git a/src/test/ui/dyn-star/make-dyn-star.rs b/src/test/ui/dyn-star/make-dyn-star.rs index 4f9393abb30..e5255a64ba1 100644 --- a/src/test/ui/dyn-star/make-dyn-star.rs +++ b/src/test/ui/dyn-star/make-dyn-star.rs @@ -8,6 +8,11 @@ fn make_dyn_star(i: usize) { let _dyn_i: dyn* Debug = i; } +fn make_dyn_star_explicit(i: usize) { + let _dyn_i: dyn* Debug = i as dyn* Debug; +} + fn main() { make_dyn_star(42); + make_dyn_star_explicit(42); } diff --git a/src/test/ui/dyn-star/no-implicit-dyn-star.rs b/src/test/ui/dyn-star/no-implicit-dyn-star.rs new file mode 100644 index 00000000000..d9470e28417 --- /dev/null +++ b/src/test/ui/dyn-star/no-implicit-dyn-star.rs @@ -0,0 +1,8 @@ +// aux-build:dyn-star-foreign.rs + +extern crate dyn_star_foreign; + +fn main() { + dyn_star_foreign::require_dyn_star_display(1usize); + //~^ ERROR mismatched types +} diff --git a/src/test/ui/dyn-star/no-implicit-dyn-star.stderr b/src/test/ui/dyn-star/no-implicit-dyn-star.stderr new file mode 100644 index 00000000000..e7c5918629b --- /dev/null +++ b/src/test/ui/dyn-star/no-implicit-dyn-star.stderr @@ -0,0 +1,19 @@ +error[E0308]: mismatched types + --> $DIR/no-implicit-dyn-star.rs:6:48 + | +LL | dyn_star_foreign::require_dyn_star_display(1usize); + | ------------------------------------------ ^^^^^^ expected trait object `dyn std::fmt::Display`, found `usize` + | | + | arguments to this function are incorrect + | + = note: expected trait object `(dyn* std::fmt::Display + 'static)` + found type `usize` +note: function defined here + --> $DIR/auxiliary/dyn-star-foreign.rs:6:8 + | +LL | pub fn require_dyn_star_display(_: dyn* Display) {} + | ^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. |
