From cf2dff2b1e3fa55fa5415d524200070d0d7aacfe Mon Sep 17 00:00:00 2001 From: Albert Larsan <74931857+albertlarsan68@users.noreply.github.com> Date: Thu, 5 Jan 2023 09:13:28 +0100 Subject: Move /src/test to /tests --- tests/rustdoc-ui/error-in-impl-trait/README.md | 7 ++++++ tests/rustdoc-ui/error-in-impl-trait/async.rs | 7 ++++++ tests/rustdoc-ui/error-in-impl-trait/closure.rs | 5 ++++ .../error-in-impl-trait/const-generics.rs | 23 ++++++++++++++++++ .../error-in-impl-trait/generic-argument.rs | 7 ++++++ .../error-in-impl-trait/impl-keyword-closure.rs | 6 +++++ .../rustdoc-ui/error-in-impl-trait/impl-keyword.rs | 6 +++++ .../error-in-impl-trait/realistic-async.rs | 28 ++++++++++++++++++++++ .../error-in-impl-trait/trait-alias-closure.rs | 10 ++++++++ .../rustdoc-ui/error-in-impl-trait/trait-alias.rs | 10 ++++++++ 10 files changed, 109 insertions(+) create mode 100644 tests/rustdoc-ui/error-in-impl-trait/README.md create mode 100644 tests/rustdoc-ui/error-in-impl-trait/async.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/closure.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/const-generics.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs create mode 100644 tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs (limited to 'tests/rustdoc-ui/error-in-impl-trait') diff --git a/tests/rustdoc-ui/error-in-impl-trait/README.md b/tests/rustdoc-ui/error-in-impl-trait/README.md new file mode 100644 index 00000000000..1176a4a8c4c --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/README.md @@ -0,0 +1,7 @@ +Each of these needs to be in a separate file, +because the `delay_span_bug` ICE in rustdoc won't be triggerred +if even a single other error was emitted. + +However, conceptually they are all testing basically the same thing. +See https://github.com/rust-lang/rust/pull/73566#issuecomment-653689128 +for more details. diff --git a/tests/rustdoc-ui/error-in-impl-trait/async.rs b/tests/rustdoc-ui/error-in-impl-trait/async.rs new file mode 100644 index 00000000000..cda53bff07a --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/async.rs @@ -0,0 +1,7 @@ +// edition:2018 +// check-pass + +/// Should compile fine +pub async fn a() -> u32 { + error::_in::async_fn() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/closure.rs b/tests/rustdoc-ui/error-in-impl-trait/closure.rs new file mode 100644 index 00000000000..f1fd85bb23c --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/closure.rs @@ -0,0 +1,5 @@ +// check-pass +// manually desugared version of an `async fn` (but with a closure instead of a generator) +pub fn a() -> impl Fn() -> u32 { + || content::doesnt::matter() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/const-generics.rs b/tests/rustdoc-ui/error-in-impl-trait/const-generics.rs new file mode 100644 index 00000000000..ed62f0208aa --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/const-generics.rs @@ -0,0 +1,23 @@ +// check-pass +// edition:2018 +trait ValidTrait {} + +/// This has docs +pub fn extern_fn() -> impl Iterator { + loop {} +} + +pub trait Trait {} +impl Trait<1> for u8 {} +impl Trait<2> for u8 {} +impl Trait for [u8; N] {} + +/// This also has docs +pub fn test() -> impl Trait where u8: Trait { + loop {} +} + +/// Document all the functions +pub async fn a_sink(v: [u8; N]) -> impl Trait { + loop {} +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs b/tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs new file mode 100644 index 00000000000..dcec379d47e --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/generic-argument.rs @@ -0,0 +1,7 @@ +// check-pass +trait ValidTrait {} + +/// This has docs +pub fn f() -> impl ValidTrait { + Vec::::new() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs new file mode 100644 index 00000000000..b935b0832f0 --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword-closure.rs @@ -0,0 +1,6 @@ +// check-pass +pub trait ValidTrait {} +/// This returns impl trait +pub fn g() -> impl ValidTrait { + (|| error::_in::impl_trait::alias::nested::closure())() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs new file mode 100644 index 00000000000..701126f87a1 --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/impl-keyword.rs @@ -0,0 +1,6 @@ +// check-pass +pub trait ValidTrait {} +/// This returns impl trait +pub fn g() -> impl ValidTrait { + error::_in::impl_trait() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs b/tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs new file mode 100644 index 00000000000..248575d3528 --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/realistic-async.rs @@ -0,0 +1,28 @@ +// edition:2018 +// check-pass + +mod windows { + pub trait WinFoo { + fn foo(&self) {} + } + + impl WinFoo for () {} +} + +#[cfg(any(windows, doc))] +use windows::*; + +mod unix { + pub trait UnixFoo { + fn foo(&self) {} + } + + impl UnixFoo for () {} +} + +#[cfg(any(unix, doc))] +use unix::*; + +async fn bar() { + ().foo() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs b/tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs new file mode 100644 index 00000000000..31dd786cbbf --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/trait-alias-closure.rs @@ -0,0 +1,10 @@ +// check-pass +#![feature(type_alias_impl_trait)] + +pub trait ValidTrait {} +type ImplTrait = impl ValidTrait; + +/// This returns impl trait, but using a type alias +pub fn h() -> ImplTrait { + (|| error::_in::impl_trait::alias::nested::closure())() +} diff --git a/tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs b/tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs new file mode 100644 index 00000000000..c18a024af4b --- /dev/null +++ b/tests/rustdoc-ui/error-in-impl-trait/trait-alias.rs @@ -0,0 +1,10 @@ +// check-pass +#![feature(type_alias_impl_trait)] + +pub trait ValidTrait {} +type ImplTrait = impl ValidTrait; + +/// This returns impl trait, but using a type alias +pub fn h() -> ImplTrait { + error::_in::impl_trait::alias() +} -- cgit 1.4.1-3-g733a5