summaryrefslogtreecommitdiffstats
path: root/tests/ui/impl-trait/in-trait/method-signature-matches.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/ui/impl-trait/in-trait/method-signature-matches.rs
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/impl-trait/in-trait/method-signature-matches.rs')
-rw-r--r--tests/ui/impl-trait/in-trait/method-signature-matches.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/in-trait/method-signature-matches.rs b/tests/ui/impl-trait/in-trait/method-signature-matches.rs
new file mode 100644
index 000000000..c848ee3f6
--- /dev/null
+++ b/tests/ui/impl-trait/in-trait/method-signature-matches.rs
@@ -0,0 +1,51 @@
+// edition: 2021
+
+#![feature(return_position_impl_trait_in_trait, async_fn_in_trait)]
+#![allow(incomplete_features)]
+
+trait Uwu {
+ fn owo(x: ()) -> impl Sized;
+}
+
+impl Uwu for () {
+ fn owo(_: u8) {}
+ //~^ ERROR method `owo` has an incompatible type for trait
+}
+
+trait AsyncUwu {
+ async fn owo(x: ()) {}
+}
+
+impl AsyncUwu for () {
+ async fn owo(_: u8) {}
+ //~^ ERROR method `owo` has an incompatible type for trait
+}
+
+trait TooMuch {
+ fn calm_down_please() -> impl Sized;
+}
+
+impl TooMuch for () {
+ fn calm_down_please(_: (), _: (), _: ()) {}
+ //~^ ERROR method `calm_down_please` has 3 parameters but the declaration in trait `TooMuch::calm_down_please` has 0
+}
+
+trait TooLittle {
+ fn come_on_a_little_more_effort(_: (), _: (), _: ()) -> impl Sized;
+}
+
+impl TooLittle for () {
+ fn come_on_a_little_more_effort() {}
+ //~^ ERROR method `come_on_a_little_more_effort` has 0 parameters but the declaration in trait `TooLittle::come_on_a_little_more_effort` has 3
+}
+
+trait Lifetimes {
+ fn early<'early, T>(x: &'early T) -> impl Sized;
+}
+
+impl Lifetimes for () {
+ fn early<'late, T>(_: &'late ()) {}
+ //~^ ERROR method `early` has an incompatible type for trait
+}
+
+fn main() {}