Skip to content

Commit

Permalink
Rollup merge of #112260 - eval-exec:exec/fix-unsafe_code_lint, r=Waff…
Browse files Browse the repository at this point in the history
…leLapkin

Improve document of `unsafe_code` lint

This PR add another `unsafe_code` lint example, want to close #111967
  • Loading branch information
GuillaumeGomez authored Jun 9, 2023
2 parents 343ad6f + 30f84c4 commit a7f46af
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions compiler/rustc_lint/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,9 @@ impl<'tcx> LateLintPass<'tcx> for NonShorthandFieldPatterns {
}

declare_lint! {
/// The `unsafe_code` lint catches usage of `unsafe` code.
/// The `unsafe_code` lint catches usage of `unsafe` code and other
/// potentially unsound constructs like `no_mangle`, `export_name`,
/// and `link_section`.
///
/// ### Example
///
Expand All @@ -297,17 +299,29 @@ declare_lint! {
///
/// }
/// }
///
/// #[no_mangle]
/// fn func_0() { }
///
/// #[export_name = "exported_symbol_name"]
/// pub fn name_in_rust() { }
///
/// #[no_mangle]
/// #[link_section = ".example_section"]
/// pub static VAR1: u32 = 1;
/// ```
///
/// {{produces}}
///
/// ### Explanation
///
/// This lint is intended to restrict the usage of `unsafe`, which can be
/// difficult to use correctly.
/// This lint is intended to restrict the usage of `unsafe` blocks and other
/// constructs (including, but not limited to `no_mangle`, `link_section`
/// and `export_name` attributes) wrong usage of which causes undefined
/// behavior.
UNSAFE_CODE,
Allow,
"usage of `unsafe` code"
"usage of `unsafe` code and other potentially unsound constructs"
}

declare_lint_pass!(UnsafeCode => [UNSAFE_CODE]);
Expand Down

0 comments on commit a7f46af

Please sign in to comment.