Add a test for unsafe_code lint.

This commit is contained in:
Charles Lew 2021-10-12 22:34:53 +08:00
parent 9475e609b8
commit c76c620e4e
2 changed files with 32 additions and 0 deletions

View file

@ -0,0 +1,16 @@
// force-host
// no-prefer-dynamic
#![crate_type = "proc-macro"]
extern crate proc_macro;
use proc_macro::{Delimiter, Group, Ident, Span, TokenStream, TokenTree};
#[proc_macro]
pub fn forge_unsafe_block(input: TokenStream) -> TokenStream {
let mut output = TokenStream::new();
output.extend(Some(TokenTree::from(Ident::new("unsafe", Span::call_site()))));
output.extend(Some(TokenTree::from(Group::new(Delimiter::Brace, input))));
output
}

View file

@ -0,0 +1,16 @@
// check-pass
// aux-build:forge_unsafe_block.rs
#[macro_use]
extern crate forge_unsafe_block;
unsafe fn foo() {}
#[forbid(unsafe_code)]
fn main() {
// `forbid` doesn't work for non-user-provided unsafe blocks.
// see `UnsafeCode::check_expr`.
forge_unsafe_block! {
foo();
}
}