about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTaylor Cramer <cramertj@google.com>2018-02-13 17:52:22 -0800
committerTaylor Cramer <cramertj@google.com>2018-02-13 17:52:22 -0800
commitdbacf0c56ba2bd5ed38fc2a2e4bc20150271e7f2 (patch)
tree0a78611bbedda3334c8417ea0dd3093495cce8e2 /src
parentf1fbf79223aca762c42c6674d125c4c5223f9949 (diff)
downloadrust-dbacf0c56ba2bd5ed38fc2a2e4bc20150271e7f2.tar.gz
rust-dbacf0c56ba2bd5ed38fc2a2e4bc20150271e7f2.zip
Test err on impl Trait projection within dyn Trait
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/impl_trait_projections.rs9
-rw-r--r--src/test/ui/impl_trait_projections.stderr8
2 files changed, 15 insertions, 2 deletions
diff --git a/src/test/ui/impl_trait_projections.rs b/src/test/ui/impl_trait_projections.rs
index e34b7799fb7..f69a78b1450 100644
--- a/src/test/ui/impl_trait_projections.rs
+++ b/src/test/ui/impl_trait_projections.rs
@@ -7,7 +7,7 @@
 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
-#![feature(conservative_impl_trait, universal_impl_trait)]
+#![feature(dyn_trait, conservative_impl_trait, universal_impl_trait)]
 
 use std::fmt::Debug;
 use std::option;
@@ -40,4 +40,11 @@ fn projection_with_named_trait_inside_path_is_disallowed()
     (1i32..100).next().unwrap()
 }
 
+fn projection_from_impl_trait_inside_dyn_trait_is_disallowed()
+    -> <dyn Iterator<Item = impl Debug> as Iterator>::Item
+//~^ ERROR `impl Trait` is not allowed in path parameters
+{
+    panic!()
+}
+
 fn main() {}
diff --git a/src/test/ui/impl_trait_projections.stderr b/src/test/ui/impl_trait_projections.stderr
index 2e8bfc931f8..08de0eb99a3 100644
--- a/src/test/ui/impl_trait_projections.stderr
+++ b/src/test/ui/impl_trait_projections.stderr
@@ -16,6 +16,12 @@ error[E0667]: `impl Trait` is not allowed in path parameters
 37 |     -> <::std::ops::Range<impl Debug> as Iterator>::Item
    |                           ^^^^^^^^^^
 
+error[E0667]: `impl Trait` is not allowed in path parameters
+  --> $DIR/impl_trait_projections.rs:44:29
+   |
+44 |     -> <dyn Iterator<Item = impl Debug> as Iterator>::Item
+   |                             ^^^^^^^^^^
+
 error[E0223]: ambiguous associated type
   --> $DIR/impl_trait_projections.rs:23:50
    |
@@ -24,5 +30,5 @@ error[E0223]: ambiguous associated type
    |
    = note: specify the type using the syntax `<impl std::iter::Iterator as Trait>::Item`
 
-error: aborting due to 4 previous errors
+error: aborting due to 5 previous errors