Skip to content

Commit 8e14ef5

Browse files
committed
Add preinit tests
1 parent 1e7776b commit 8e14ef5

File tree

9 files changed

+69
-1
lines changed

9 files changed

+69
-1
lines changed

macros/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ pub fn pre_init(args: TokenStream, input: TokenStream) -> TokenStream {
360360

361361
if !valid_signature {
362362
return parse::Error::new(
363-
f.span(),
363+
f.sig.span(),
364364
"`#[pre_init]` function must have signature `unsafe fn()`",
365365
)
366366
.to_compile_error()

macros/tests/ui/preinit_arg.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
3+
use msp430_rt_macros::{entry, pre_init};
4+
5+
#[entry]
6+
fn bar() -> ! {
7+
loop {}
8+
}
9+
10+
#[pre_init(arg)]
11+
unsafe fn foo() {}

macros/tests/ui/preinit_arg.stderr

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
error: This attribute accepts no arguments
2+
--> tests/ui/preinit_arg.rs:10:1
3+
|
4+
10 | #[pre_init(arg)]
5+
| ^^^^^^^^^^^^^^^^
6+
|
7+
= note: this error originates in the attribute macro `pre_init` (in Nightly builds, run with -Z macro-backtrace for more info)

macros/tests/ui/preinit_bad_param.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
3+
use msp430_rt_macros::{entry, pre_init};
4+
5+
#[entry]
6+
fn bar() -> ! {
7+
loop {}
8+
}
9+
10+
#[pre_init]
11+
unsafe fn foo(i: u32) {}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
error: `#[pre_init]` function must have signature `unsafe fn()`
2+
--> tests/ui/preinit_bad_param.rs:11:1
3+
|
4+
11 | unsafe fn foo(i: u32) {}
5+
| ^^^^^^^^^^^^^^^^^^^^^

macros/tests/ui/preinit_bad_ret.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#![no_main]
2+
3+
use msp430_rt_macros::{entry, pre_init};
4+
5+
#[entry]
6+
fn bar() -> ! {
7+
loop {}
8+
}
9+
10+
#[pre_init]
11+
unsafe fn foo() -> u32 {
12+
3
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
error: `#[pre_init]` function must have signature `unsafe fn()`
2+
--> tests/ui/preinit_bad_ret.rs:11:1
3+
|
4+
11 | unsafe fn foo() -> u32 {
5+
| ^^^^^^^^^^^^^^^^^^^^^^

macros/tests/ui/preinit_safe.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
3+
use msp430_rt_macros::{entry, pre_init};
4+
5+
#[entry]
6+
fn bar() -> ! {
7+
loop {}
8+
}
9+
10+
#[pre_init]
11+
fn foo() {}

macros/tests/ui/preinit_safe.stderr

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
error: `#[pre_init]` function must have signature `unsafe fn()`
2+
--> tests/ui/preinit_safe.rs:11:1
3+
|
4+
11 | fn foo() {}
5+
| ^^^^^^^^

0 commit comments

Comments
 (0)