aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Zardi <[email protected]>2020-10-21 20:53:05 +0100
committerFrancesco Zardi <[email protected]>2020-10-21 20:53:05 +0100
commit0be21b05d6811936a22d491f2cea4c7fe244ce2f (patch)
treee9d82a5ac0cdfcd5bd1e6269785c2083ee589403
parentf3aa44b01df7dd679adfe3afe55283cfed611508 (diff)
Move safe intrinsic tests
-rw-r--r--crates/hir_def/src/item_tree/tests.rs20
-rw-r--r--crates/hir_ty/src/diagnostics/unsafe_check.rs18
2 files changed, 18 insertions, 20 deletions
diff --git a/crates/hir_def/src/item_tree/tests.rs b/crates/hir_def/src/item_tree/tests.rs
index 495c5a7e9..4b354c4c1 100644
--- a/crates/hir_def/src/item_tree/tests.rs
+++ b/crates/hir_def/src/item_tree/tests.rs
@@ -437,23 +437,3 @@ fn assoc_item_macros() {
437 "#]], 437 "#]],
438 ); 438 );
439} 439}
440
441#[test]
442fn safe_intrinsic() {
443 check(
444 r"
445 #![feature(core_intrinsics)]
446
447 fn reverse(input: u32) -> u32 {
448 std::intrinsics::bitreverse(input)
449 }
450 ",
451 expect![[r#"
452 inner attrs: Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("feature"))] }, input: Some(TokenTree(SUBTREE () 0
453 IDENT core_intrinsics 1)) }]) }
454
455 top-level items:
456 Function { name: Name(Text("reverse")), visibility: RawVisibilityId("pub(self)"), generic_params: GenericParamsId(4294967295), has_self_param: false, has_body: true, is_unsafe: false, params: [Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("u32"))] }, generic_args: [None] })], is_varargs: false, ret_type: Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("u32"))] }, generic_args: [None] }), ast_id: FileAstId::<syntax::ast::generated::nodes::Fn>(0) }
457 "#]],
458 );
459}
diff --git a/crates/hir_ty/src/diagnostics/unsafe_check.rs b/crates/hir_ty/src/diagnostics/unsafe_check.rs
index 21a121aad..2da9688ca 100644
--- a/crates/hir_ty/src/diagnostics/unsafe_check.rs
+++ b/crates/hir_ty/src/diagnostics/unsafe_check.rs
@@ -202,4 +202,22 @@ fn main() {
202"#, 202"#,
203 ); 203 );
204 } 204 }
205
206 #[test]
207 fn no_missing_unsafe_diagnostic_with_safe_intrinsic() {
208 check_diagnostics(
209 r#"
210extern "rust-intrinsic" {
211 pub fn bitreverse(x: u32) -> u32; // Safe intrinsic
212 pub fn floorf32(x: f32) -> f32; // Unsafe intrinsic
213}
214
215fn main() {
216 let _ = bitreverse(12);
217 let _ = floorf32(12.0);
218 //^^^^^^^^^^^^^^ This operation is unsafe and requires an unsafe function or block
219}
220"#,
221 );
222 }
205} 223}