Skip to content

Commit c76c620

Browse files
committed
Add a test for unsafe_code lint.
1 parent 9475e60 commit c76c620

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// force-host
2+
// no-prefer-dynamic
3+
4+
#![crate_type = "proc-macro"]
5+
6+
extern crate proc_macro;
7+
8+
use proc_macro::{Delimiter, Group, Ident, Span, TokenStream, TokenTree};
9+
10+
#[proc_macro]
11+
pub fn forge_unsafe_block(input: TokenStream) -> TokenStream {
12+
let mut output = TokenStream::new();
13+
output.extend(Some(TokenTree::from(Ident::new("unsafe", Span::call_site()))));
14+
output.extend(Some(TokenTree::from(Group::new(Delimiter::Brace, input))));
15+
output
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// check-pass
2+
// aux-build:forge_unsafe_block.rs
3+
4+
#[macro_use]
5+
extern crate forge_unsafe_block;
6+
7+
unsafe fn foo() {}
8+
9+
#[forbid(unsafe_code)]
10+
fn main() {
11+
// `forbid` doesn't work for non-user-provided unsafe blocks.
12+
// see `UnsafeCode::check_expr`.
13+
forge_unsafe_block! {
14+
foo();
15+
}
16+
}

0 commit comments

Comments
 (0)