aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/tests/ui
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-executor/tests/ui')
-rw-r--r--embassy-executor/tests/ui/abi.rs8
-rw-r--r--embassy-executor/tests/ui/abi.stderr5
-rw-r--r--embassy-executor/tests/ui/bad_return.rs10
-rw-r--r--embassy-executor/tests/ui/bad_return.stderr5
-rw-r--r--embassy-executor/tests/ui/generics.rs8
-rw-r--r--embassy-executor/tests/ui/generics.stderr5
-rw-r--r--embassy-executor/tests/ui/impl_trait.rs6
-rw-r--r--embassy-executor/tests/ui/impl_trait.stderr5
-rw-r--r--embassy-executor/tests/ui/impl_trait_nested.rs8
-rw-r--r--embassy-executor/tests/ui/impl_trait_nested.stderr5
-rw-r--r--embassy-executor/tests/ui/impl_trait_static.rs6
-rw-r--r--embassy-executor/tests/ui/impl_trait_static.stderr5
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_anon.rs6
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_anon.stderr5
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_anon_nested.rs6
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_anon_nested.stderr5
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_elided.rs6
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_elided.stderr5
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_generic.rs6
-rw-r--r--embassy-executor/tests/ui/nonstatic_ref_generic.stderr11
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_anon.rs8
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_anon.stderr5
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_elided.rs8
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_elided.stderr10
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_generic.rs8
-rw-r--r--embassy-executor/tests/ui/nonstatic_struct_generic.stderr11
-rw-r--r--embassy-executor/tests/ui/not_async.rs8
-rw-r--r--embassy-executor/tests/ui/not_async.stderr5
-rw-r--r--embassy-executor/tests/ui/self.rs8
-rw-r--r--embassy-executor/tests/ui/self.stderr13
-rw-r--r--embassy-executor/tests/ui/self_ref.rs8
-rw-r--r--embassy-executor/tests/ui/self_ref.stderr13
-rw-r--r--embassy-executor/tests/ui/where_clause.rs12
-rw-r--r--embassy-executor/tests/ui/where_clause.stderr7
34 files changed, 250 insertions, 0 deletions
diff --git a/embassy-executor/tests/ui/abi.rs b/embassy-executor/tests/ui/abi.rs
new file mode 100644
index 000000000..fd52f7e41
--- /dev/null
+++ b/embassy-executor/tests/ui/abi.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async extern "C" fn task() {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/abi.stderr b/embassy-executor/tests/ui/abi.stderr
new file mode 100644
index 000000000..e264e371a
--- /dev/null
+++ b/embassy-executor/tests/ui/abi.stderr
@@ -0,0 +1,5 @@
1error: task functions must not have an ABI qualifier
2 --> tests/ui/abi.rs:6:1
3 |
46 | async extern "C" fn task() {}
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/bad_return.rs b/embassy-executor/tests/ui/bad_return.rs
new file mode 100644
index 000000000..f09a5205b
--- /dev/null
+++ b/embassy-executor/tests/ui/bad_return.rs
@@ -0,0 +1,10 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task() -> u32 {
7 5
8}
9
10fn main() {}
diff --git a/embassy-executor/tests/ui/bad_return.stderr b/embassy-executor/tests/ui/bad_return.stderr
new file mode 100644
index 000000000..e9d94dff8
--- /dev/null
+++ b/embassy-executor/tests/ui/bad_return.stderr
@@ -0,0 +1,5 @@
1error: task functions must either not return a value, return `()` or return `!`
2 --> tests/ui/bad_return.rs:6:1
3 |
46 | async fn task() -> u32 {
5 | ^^^^^^^^^^^^^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/generics.rs b/embassy-executor/tests/ui/generics.rs
new file mode 100644
index 000000000..b83123bb1
--- /dev/null
+++ b/embassy-executor/tests/ui/generics.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task<T: Sized>(_t: T) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/generics.stderr b/embassy-executor/tests/ui/generics.stderr
new file mode 100644
index 000000000..197719a7b
--- /dev/null
+++ b/embassy-executor/tests/ui/generics.stderr
@@ -0,0 +1,5 @@
1error: task functions must not be generic
2 --> tests/ui/generics.rs:6:1
3 |
46 | async fn task<T: Sized>(_t: T) {}
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/impl_trait.rs b/embassy-executor/tests/ui/impl_trait.rs
new file mode 100644
index 000000000..a21402aa0
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo(_x: impl Sized) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/impl_trait.stderr b/embassy-executor/tests/ui/impl_trait.stderr
new file mode 100644
index 000000000..099b1828f
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait.stderr
@@ -0,0 +1,5 @@
1error: `impl Trait` is not allowed in task arguments. It is syntax sugar for generics, and tasks can't be generic.
2 --> tests/ui/impl_trait.rs:4:18
3 |
44 | async fn foo(_x: impl Sized) {}
5 | ^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/impl_trait_nested.rs b/embassy-executor/tests/ui/impl_trait_nested.rs
new file mode 100644
index 000000000..07442b8fa
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait_nested.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<T>(T);
4
5#[embassy_executor::task]
6async fn foo(_x: Foo<impl Sized + 'static>) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/impl_trait_nested.stderr b/embassy-executor/tests/ui/impl_trait_nested.stderr
new file mode 100644
index 000000000..39592f958
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait_nested.stderr
@@ -0,0 +1,5 @@
1error: `impl Trait` is not allowed in task arguments. It is syntax sugar for generics, and tasks can't be generic.
2 --> tests/ui/impl_trait_nested.rs:6:22
3 |
46 | async fn foo(_x: Foo<impl Sized + 'static>) {}
5 | ^^^^^^^^^^^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/impl_trait_static.rs b/embassy-executor/tests/ui/impl_trait_static.rs
new file mode 100644
index 000000000..272470f98
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait_static.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo(_x: impl Sized + 'static) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/impl_trait_static.stderr b/embassy-executor/tests/ui/impl_trait_static.stderr
new file mode 100644
index 000000000..0032a20c9
--- /dev/null
+++ b/embassy-executor/tests/ui/impl_trait_static.stderr
@@ -0,0 +1,5 @@
1error: `impl Trait` is not allowed in task arguments. It is syntax sugar for generics, and tasks can't be generic.
2 --> tests/ui/impl_trait_static.rs:4:18
3 |
44 | async fn foo(_x: impl Sized + 'static) {}
5 | ^^^^^^^^^^^^^^^^^^^^
diff --git a/embassy-executor/tests/ui/nonstatic_ref_anon.rs b/embassy-executor/tests/ui/nonstatic_ref_anon.rs
new file mode 100644
index 000000000..417c360a1
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_anon.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo(_x: &'_ u32) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_ref_anon.stderr b/embassy-executor/tests/ui/nonstatic_ref_anon.stderr
new file mode 100644
index 000000000..0544de843
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_anon.stderr
@@ -0,0 +1,5 @@
1error: Arguments for tasks must live forever. Try using the `'static` lifetime.
2 --> tests/ui/nonstatic_ref_anon.rs:4:19
3 |
44 | async fn foo(_x: &'_ u32) {}
5 | ^^
diff --git a/embassy-executor/tests/ui/nonstatic_ref_anon_nested.rs b/embassy-executor/tests/ui/nonstatic_ref_anon_nested.rs
new file mode 100644
index 000000000..175ebccc1
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_anon_nested.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo(_x: &'static &'_ u32) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_ref_anon_nested.stderr b/embassy-executor/tests/ui/nonstatic_ref_anon_nested.stderr
new file mode 100644
index 000000000..79f262e6b
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_anon_nested.stderr
@@ -0,0 +1,5 @@
1error: Arguments for tasks must live forever. Try using the `'static` lifetime.
2 --> tests/ui/nonstatic_ref_anon_nested.rs:4:28
3 |
44 | async fn foo(_x: &'static &'_ u32) {}
5 | ^^
diff --git a/embassy-executor/tests/ui/nonstatic_ref_elided.rs b/embassy-executor/tests/ui/nonstatic_ref_elided.rs
new file mode 100644
index 000000000..cf49ad709
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_elided.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo(_x: &u32) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_ref_elided.stderr b/embassy-executor/tests/ui/nonstatic_ref_elided.stderr
new file mode 100644
index 000000000..7e2b9eb7c
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_elided.stderr
@@ -0,0 +1,5 @@
1error: Arguments for tasks must live forever. Try using the `'static` lifetime.
2 --> tests/ui/nonstatic_ref_elided.rs:4:18
3 |
44 | async fn foo(_x: &u32) {}
5 | ^
diff --git a/embassy-executor/tests/ui/nonstatic_ref_generic.rs b/embassy-executor/tests/ui/nonstatic_ref_generic.rs
new file mode 100644
index 000000000..3f8a26cf8
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_generic.rs
@@ -0,0 +1,6 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3#[embassy_executor::task]
4async fn foo<'a>(_x: &'a u32) {}
5
6fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_ref_generic.stderr b/embassy-executor/tests/ui/nonstatic_ref_generic.stderr
new file mode 100644
index 000000000..af8491ad7
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_ref_generic.stderr
@@ -0,0 +1,11 @@
1error: task functions must not be generic
2 --> tests/ui/nonstatic_ref_generic.rs:4:1
3 |
44 | async fn foo<'a>(_x: &'a u32) {}
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6
7error: Arguments for tasks must live forever. Try using the `'static` lifetime.
8 --> tests/ui/nonstatic_ref_generic.rs:4:23
9 |
104 | async fn foo<'a>(_x: &'a u32) {}
11 | ^^
diff --git a/embassy-executor/tests/ui/nonstatic_struct_anon.rs b/embassy-executor/tests/ui/nonstatic_struct_anon.rs
new file mode 100644
index 000000000..ba95d1459
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_anon.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task(_x: Foo<'_>) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_struct_anon.stderr b/embassy-executor/tests/ui/nonstatic_struct_anon.stderr
new file mode 100644
index 000000000..5df2a6e06
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_anon.stderr
@@ -0,0 +1,5 @@
1error: Arguments for tasks must live forever. Try using the `'static` lifetime.
2 --> tests/ui/nonstatic_struct_anon.rs:6:23
3 |
46 | async fn task(_x: Foo<'_>) {}
5 | ^^
diff --git a/embassy-executor/tests/ui/nonstatic_struct_elided.rs b/embassy-executor/tests/ui/nonstatic_struct_elided.rs
new file mode 100644
index 000000000..4cfe2966a
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_elided.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task(_x: Foo) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_struct_elided.stderr b/embassy-executor/tests/ui/nonstatic_struct_elided.stderr
new file mode 100644
index 000000000..099ef8b4e
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_elided.stderr
@@ -0,0 +1,10 @@
1error[E0726]: implicit elided lifetime not allowed here
2 --> tests/ui/nonstatic_struct_elided.rs:6:19
3 |
46 | async fn task(_x: Foo) {}
5 | ^^^ expected lifetime parameter
6 |
7help: indicate the anonymous lifetime
8 |
96 | async fn task(_x: Foo<'_>) {}
10 | ++++
diff --git a/embassy-executor/tests/ui/nonstatic_struct_generic.rs b/embassy-executor/tests/ui/nonstatic_struct_generic.rs
new file mode 100644
index 000000000..ec3d908f6
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_generic.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task<'a>(_x: Foo<'a>) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/nonstatic_struct_generic.stderr b/embassy-executor/tests/ui/nonstatic_struct_generic.stderr
new file mode 100644
index 000000000..61d5231bc
--- /dev/null
+++ b/embassy-executor/tests/ui/nonstatic_struct_generic.stderr
@@ -0,0 +1,11 @@
1error: task functions must not be generic
2 --> tests/ui/nonstatic_struct_generic.rs:6:1
3 |
46 | async fn task<'a>(_x: Foo<'a>) {}
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6
7error: Arguments for tasks must live forever. Try using the `'static` lifetime.
8 --> tests/ui/nonstatic_struct_generic.rs:6:27
9 |
106 | async fn task<'a>(_x: Foo<'a>) {}
11 | ^^
diff --git a/embassy-executor/tests/ui/not_async.rs b/embassy-executor/tests/ui/not_async.rs
new file mode 100644
index 000000000..f3f7e9bd2
--- /dev/null
+++ b/embassy-executor/tests/ui/not_async.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6fn task() {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/not_async.stderr b/embassy-executor/tests/ui/not_async.stderr
new file mode 100644
index 000000000..27f040d9c
--- /dev/null
+++ b/embassy-executor/tests/ui/not_async.stderr
@@ -0,0 +1,5 @@
1error: task functions must be async
2 --> tests/ui/not_async.rs:6:1
3 |
46 | fn task() {}
5 | ^^^^^^^^^
diff --git a/embassy-executor/tests/ui/self.rs b/embassy-executor/tests/ui/self.rs
new file mode 100644
index 000000000..f83a962d1
--- /dev/null
+++ b/embassy-executor/tests/ui/self.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task(self) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/self.stderr b/embassy-executor/tests/ui/self.stderr
new file mode 100644
index 000000000..aaf031573
--- /dev/null
+++ b/embassy-executor/tests/ui/self.stderr
@@ -0,0 +1,13 @@
1error: task functions must not have `self` arguments
2 --> tests/ui/self.rs:6:15
3 |
46 | async fn task(self) {}
5 | ^^^^
6
7error: `self` parameter is only allowed in associated functions
8 --> tests/ui/self.rs:6:15
9 |
106 | async fn task(self) {}
11 | ^^^^ not semantically valid as function parameter
12 |
13 = note: associated functions are those in `impl` or `trait` definitions
diff --git a/embassy-executor/tests/ui/self_ref.rs b/embassy-executor/tests/ui/self_ref.rs
new file mode 100644
index 000000000..5e49bba5e
--- /dev/null
+++ b/embassy-executor/tests/ui/self_ref.rs
@@ -0,0 +1,8 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task(&mut self) {}
7
8fn main() {}
diff --git a/embassy-executor/tests/ui/self_ref.stderr b/embassy-executor/tests/ui/self_ref.stderr
new file mode 100644
index 000000000..dd2052977
--- /dev/null
+++ b/embassy-executor/tests/ui/self_ref.stderr
@@ -0,0 +1,13 @@
1error: task functions must not have `self` arguments
2 --> tests/ui/self_ref.rs:6:15
3 |
46 | async fn task(&mut self) {}
5 | ^^^^^^^^^
6
7error: `self` parameter is only allowed in associated functions
8 --> tests/ui/self_ref.rs:6:15
9 |
106 | async fn task(&mut self) {}
11 | ^^^^^^^^^ not semantically valid as function parameter
12 |
13 = note: associated functions are those in `impl` or `trait` definitions
diff --git a/embassy-executor/tests/ui/where_clause.rs b/embassy-executor/tests/ui/where_clause.rs
new file mode 100644
index 000000000..848d78149
--- /dev/null
+++ b/embassy-executor/tests/ui/where_clause.rs
@@ -0,0 +1,12 @@
1#![cfg_attr(feature = "nightly", feature(impl_trait_in_assoc_type))]
2
3struct Foo<'a>(&'a ());
4
5#[embassy_executor::task]
6async fn task()
7where
8 (): Sized,
9{
10}
11
12fn main() {}
diff --git a/embassy-executor/tests/ui/where_clause.stderr b/embassy-executor/tests/ui/where_clause.stderr
new file mode 100644
index 000000000..eba45af40
--- /dev/null
+++ b/embassy-executor/tests/ui/where_clause.stderr
@@ -0,0 +1,7 @@
1error: task functions must not have `where` clauses
2 --> tests/ui/where_clause.rs:6:1
3 |
46 | / async fn task()
57 | | where
68 | | (): Sized,
7 | |______________^