From e2ee2a3854c48bdea781683070d150c533b5803b Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 29 Jul 2019 03:27:46 +0200 Subject: [PATCH 1/5] Move ui/{existential-type -> existential_types}. --- .../ui/{existential-type => existential_types}/issue-58887.rs | 0 .../ui/{existential-type => existential_types}/issue-58887.stderr | 0 .../ui/{existential-type => existential_types}/issue-60371.rs | 0 .../ui/{existential-type => existential_types}/issue-60371.stderr | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename src/test/ui/{existential-type => existential_types}/issue-58887.rs (100%) rename src/test/ui/{existential-type => existential_types}/issue-58887.stderr (100%) rename src/test/ui/{existential-type => existential_types}/issue-60371.rs (100%) rename src/test/ui/{existential-type => existential_types}/issue-60371.stderr (100%) diff --git a/src/test/ui/existential-type/issue-58887.rs b/src/test/ui/existential_types/issue-58887.rs similarity index 100% rename from src/test/ui/existential-type/issue-58887.rs rename to src/test/ui/existential_types/issue-58887.rs diff --git a/src/test/ui/existential-type/issue-58887.stderr b/src/test/ui/existential_types/issue-58887.stderr similarity index 100% rename from src/test/ui/existential-type/issue-58887.stderr rename to src/test/ui/existential_types/issue-58887.stderr diff --git a/src/test/ui/existential-type/issue-60371.rs b/src/test/ui/existential_types/issue-60371.rs similarity index 100% rename from src/test/ui/existential-type/issue-60371.rs rename to src/test/ui/existential_types/issue-60371.rs diff --git a/src/test/ui/existential-type/issue-60371.stderr b/src/test/ui/existential_types/issue-60371.stderr similarity index 100% rename from src/test/ui/existential-type/issue-60371.stderr rename to src/test/ui/existential_types/issue-60371.stderr From b2a5d99705e2b93462669791f9a2bf0bd0055384 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 29 Jul 2019 03:38:49 +0200 Subject: [PATCH 2/5] Move ui/existential_type.rs -> ui/existential_type/existential_type-pass. --- .../existential_type-pass.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/test/ui/{existential_type.rs => existential_types/existential_type-pass.rs} (100%) diff --git a/src/test/ui/existential_type.rs b/src/test/ui/existential_types/existential_type-pass.rs similarity index 100% rename from src/test/ui/existential_type.rs rename to src/test/ui/existential_types/existential_type-pass.rs From b779f45fedef4b02bd0daebba34b39d5d367181c Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 29 Jul 2019 04:07:33 +0200 Subject: [PATCH 3/5] Add test for #53678. --- .../issue-53678-generator-and-const-fn.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/test/ui/existential_types/issue-53678-generator-and-const-fn.rs diff --git a/src/test/ui/existential_types/issue-53678-generator-and-const-fn.rs b/src/test/ui/existential_types/issue-53678-generator-and-const-fn.rs new file mode 100644 index 00000000000..d964f2b74ff --- /dev/null +++ b/src/test/ui/existential_types/issue-53678-generator-and-const-fn.rs @@ -0,0 +1,19 @@ +// check-pass + +#![feature(const_fn, generators, generator_trait, existential_type)] + +use std::ops::Generator; + +existential type GenOnce: Generator; + +const fn const_generator(yielding: Y, returning: R) -> GenOnce { + move || { + yield yielding; + + return returning; + } +} + +const FOO: GenOnce = const_generator(10, 100); + +fn main() {} From 1e927d8689bc605cb1b1ff5b7bf9c062f6885443 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 29 Jul 2019 04:07:51 +0200 Subject: [PATCH 4/5] Add test for #60407. --- src/test/ui/existential_types/issue-60407.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/test/ui/existential_types/issue-60407.rs diff --git a/src/test/ui/existential_types/issue-60407.rs b/src/test/ui/existential_types/issue-60407.rs new file mode 100644 index 00000000000..52162c491b5 --- /dev/null +++ b/src/test/ui/existential_types/issue-60407.rs @@ -0,0 +1,15 @@ +// check-pass + +#![feature(existential_type)] + +existential type Debuggable: core::fmt::Debug; + +static mut TEST: Option = None; + +fn main() { + unsafe { TEST = Some(foo()) } +} + +fn foo() -> Debuggable { + 0u32 +} From a54dd2318ae42fa4c6602cd37d07e837464df082 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Mon, 29 Jul 2019 04:08:04 +0200 Subject: [PATCH 5/5] Add test for #60564. --- src/test/ui/existential_types/issue-60564.rs | 26 +++++++++++++++++++ .../ui/existential_types/issue-60564.stderr | 25 ++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/test/ui/existential_types/issue-60564.rs create mode 100644 src/test/ui/existential_types/issue-60564.stderr diff --git a/src/test/ui/existential_types/issue-60564.rs b/src/test/ui/existential_types/issue-60564.rs new file mode 100644 index 00000000000..cb3914ddd1d --- /dev/null +++ b/src/test/ui/existential_types/issue-60564.rs @@ -0,0 +1,26 @@ +#![feature(existential_type)] + +trait IterBits { + type BitsIter: Iterator; + fn iter_bits(self, n: u8) -> Self::BitsIter; +} + +existential type IterBitsIter: std::iter::Iterator; +//~^ ERROR could not find defining uses + +impl IterBits for T +where + T: std::ops::Shr + + std::ops::BitAnd + + std::convert::From + + std::convert::TryInto, + E: std::fmt::Debug, +{ + type BitsIter = IterBitsIter; + fn iter_bits(self, n: u8) -> Self::BitsIter { + //~^ ERROR type parameter `E` is part of concrete type but not used + (0u8..n) + .rev() + .map(move |shift| ((self >> T::from(shift)) & T::from(1)).try_into().unwrap()) + } +} diff --git a/src/test/ui/existential_types/issue-60564.stderr b/src/test/ui/existential_types/issue-60564.stderr new file mode 100644 index 00000000000..d8480b52157 --- /dev/null +++ b/src/test/ui/existential_types/issue-60564.stderr @@ -0,0 +1,25 @@ +error[E0601]: `main` function not found in crate `issue_60564` + | + = note: consider adding a `main` function to `$DIR/issue-60564.rs` + +error: type parameter `E` is part of concrete type but not used in parameter list for existential type + --> $DIR/issue-60564.rs:20:49 + | +LL | fn iter_bits(self, n: u8) -> Self::BitsIter { + | _________________________________________________^ +LL | | +LL | | (0u8..n) +LL | | .rev() +LL | | .map(move |shift| ((self >> T::from(shift)) & T::from(1)).try_into().unwrap()) +LL | | } + | |_____^ + +error: could not find defining uses + --> $DIR/issue-60564.rs:8:1 + | +LL | existential type IterBitsIter: std::iter::Iterator; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0601`.