Add a test for unsafe_code
lint.
This commit is contained in:
parent
9475e609b8
commit
c76c620e4e
2 changed files with 32 additions and 0 deletions
16
src/test/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs
Normal file
16
src/test/ui/lint/unsafe_code/auxiliary/forge_unsafe_block.rs
Normal 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
|
||||||
|
}
|
16
src/test/ui/lint/unsafe_code/forge_unsafe_block.rs
Normal file
16
src/test/ui/lint/unsafe_code/forge_unsafe_block.rs
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue