]> git.lizzy.rs Git - rust.git/commitdiff
Fix ICE on `undocumented_unsafe_blocks`
authorTakayuki Nakata <f.seasons017@gmail.com>
Wed, 17 Nov 2021 13:35:01 +0000 (22:35 +0900)
committerTakayuki Nakata <f.seasons017@gmail.com>
Wed, 17 Nov 2021 13:35:01 +0000 (22:35 +0900)
clippy_lints/src/undocumented_unsafe_blocks.rs
tests/ui/undocumented_unsafe_blocks.rs
tests/ui/undocumented_unsafe_blocks.stderr

index c886faf5d28c6db974238976cfd344ae872f7d26..ccc49caf47c7a581dbc3ead8e898c21a24d3cdb8 100644 (file)
@@ -137,10 +137,10 @@ fn block_has_safety_comment(&mut self, tcx: TyCtxt<'_>, enclosing_hir_id: HirId,
 
         let between_span = if block_span.from_expansion() {
             self.macro_expansion = true;
-            enclosing_scope_span.with_hi(block_span.hi())
+            enclosing_scope_span.with_hi(block_span.hi()).source_callsite()
         } else {
             self.macro_expansion = false;
-            enclosing_scope_span.to(block_span)
+            enclosing_scope_span.to(block_span).source_callsite()
         };
 
         let file_name = source_map.span_to_filename(between_span);
index 52577323a5837255f37698f6ff8076a941bd205c..7e510d8947522e3bf871893e6cca28a9e60845a0 100644 (file)
@@ -284,4 +284,8 @@ fn interference() {
     unsafe {};
 }
 
+pub fn print_binary_tree() {
+    println!("{}", unsafe { String::from_utf8_unchecked(vec![]) });
+}
+
 fn main() {}
index 613e9ffca456559a9352d85166f44711d7c7b787..ebe589001a1fe563bf320a94cb08ac12b6978719 100644 (file)
@@ -155,5 +155,17 @@ LL ~     // Safety: ...
 LL ~     unsafe {};
    |
 
-error: aborting due to 13 previous errors
+error: unsafe block missing a safety comment
+  --> $DIR/undocumented_unsafe_blocks.rs:288:20
+   |
+LL |     println!("{}", unsafe { String::from_utf8_unchecked(vec![]) });
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+help: consider adding a safety comment
+   |
+LL ~     println!("{}", // Safety: ...
+LL ~     unsafe { String::from_utf8_unchecked(vec![]) });
+   |
+
+error: aborting due to 14 previous errors