diff options
Diffstat (limited to 'embassy-executor/tests/ui')
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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async extern "C" fn task() {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must not have an ABI qualifier | ||
| 2 | --> tests/ui/abi.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task() -> u32 { | ||
| 7 | 5 | ||
| 8 | } | ||
| 9 | |||
| 10 | fn 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 @@ | |||
| 1 | error: task functions must either not return a value, return `()` or return `!` | ||
| 2 | --> tests/ui/bad_return.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task<T: Sized>(_t: T) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must not be generic | ||
| 2 | --> tests/ui/generics.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | 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] | ||
| 4 | async fn foo(_x: impl Sized) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: `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 | | | ||
| 4 | 4 | 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 | |||
| 3 | struct Foo<T>(T); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn foo(_x: Foo<impl Sized + 'static>) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: `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 | | | ||
| 4 | 6 | 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] | ||
| 4 | async fn foo(_x: impl Sized + 'static) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: `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 | | | ||
| 4 | 4 | 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] | ||
| 4 | async fn foo(_x: &'_ u32) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 2 | --> tests/ui/nonstatic_ref_anon.rs:4:19 | ||
| 3 | | | ||
| 4 | 4 | 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] | ||
| 4 | async fn foo(_x: &'static &'_ u32) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 2 | --> tests/ui/nonstatic_ref_anon_nested.rs:4:28 | ||
| 3 | | | ||
| 4 | 4 | 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] | ||
| 4 | async fn foo(_x: &u32) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 2 | --> tests/ui/nonstatic_ref_elided.rs:4:18 | ||
| 3 | | | ||
| 4 | 4 | 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] | ||
| 4 | async fn foo<'a>(_x: &'a u32) {} | ||
| 5 | |||
| 6 | fn 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 @@ | |||
| 1 | error: task functions must not be generic | ||
| 2 | --> tests/ui/nonstatic_ref_generic.rs:4:1 | ||
| 3 | | | ||
| 4 | 4 | async fn foo<'a>(_x: &'a u32) {} | ||
| 5 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| 6 | |||
| 7 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 8 | --> tests/ui/nonstatic_ref_generic.rs:4:23 | ||
| 9 | | | ||
| 10 | 4 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task(_x: Foo<'_>) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 2 | --> tests/ui/nonstatic_struct_anon.rs:6:23 | ||
| 3 | | | ||
| 4 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task(_x: Foo) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error[E0726]: implicit elided lifetime not allowed here | ||
| 2 | --> tests/ui/nonstatic_struct_elided.rs:6:19 | ||
| 3 | | | ||
| 4 | 6 | async fn task(_x: Foo) {} | ||
| 5 | | ^^^ expected lifetime parameter | ||
| 6 | | | ||
| 7 | help: indicate the anonymous lifetime | ||
| 8 | | | ||
| 9 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task<'a>(_x: Foo<'a>) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must not be generic | ||
| 2 | --> tests/ui/nonstatic_struct_generic.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | async fn task<'a>(_x: Foo<'a>) {} | ||
| 5 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| 6 | |||
| 7 | error: Arguments for tasks must live forever. Try using the `'static` lifetime. | ||
| 8 | --> tests/ui/nonstatic_struct_generic.rs:6:27 | ||
| 9 | | | ||
| 10 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | fn task() {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must be async | ||
| 2 | --> tests/ui/not_async.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task(self) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must not have `self` arguments | ||
| 2 | --> tests/ui/self.rs:6:15 | ||
| 3 | | | ||
| 4 | 6 | async fn task(self) {} | ||
| 5 | | ^^^^ | ||
| 6 | |||
| 7 | error: `self` parameter is only allowed in associated functions | ||
| 8 | --> tests/ui/self.rs:6:15 | ||
| 9 | | | ||
| 10 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task(&mut self) {} | ||
| 7 | |||
| 8 | fn 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 @@ | |||
| 1 | error: task functions must not have `self` arguments | ||
| 2 | --> tests/ui/self_ref.rs:6:15 | ||
| 3 | | | ||
| 4 | 6 | async fn task(&mut self) {} | ||
| 5 | | ^^^^^^^^^ | ||
| 6 | |||
| 7 | error: `self` parameter is only allowed in associated functions | ||
| 8 | --> tests/ui/self_ref.rs:6:15 | ||
| 9 | | | ||
| 10 | 6 | 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 | |||
| 3 | struct Foo<'a>(&'a ()); | ||
| 4 | |||
| 5 | #[embassy_executor::task] | ||
| 6 | async fn task() | ||
| 7 | where | ||
| 8 | (): Sized, | ||
| 9 | { | ||
| 10 | } | ||
| 11 | |||
| 12 | fn 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 @@ | |||
| 1 | error: task functions must not have `where` clauses | ||
| 2 | --> tests/ui/where_clause.rs:6:1 | ||
| 3 | | | ||
| 4 | 6 | / async fn task() | ||
| 5 | 7 | | where | ||
| 6 | 8 | | (): Sized, | ||
| 7 | | |______________^ | ||
