diff options
Diffstat (limited to 'crates/ra_hir_ty/src/tests.rs')
-rw-r--r-- | crates/ra_hir_ty/src/tests.rs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/crates/ra_hir_ty/src/tests.rs b/crates/ra_hir_ty/src/tests.rs index 85ff26a36..4ff2b2d4a 100644 --- a/crates/ra_hir_ty/src/tests.rs +++ b/crates/ra_hir_ty/src/tests.rs | |||
@@ -539,6 +539,84 @@ fn missing_record_pat_field_no_diagnostic_if_not_exhaustive() { | |||
539 | } | 539 | } |
540 | 540 | ||
541 | #[test] | 541 | #[test] |
542 | fn missing_unsafe_diagnostic_with_raw_ptr() { | ||
543 | let diagnostics = TestDB::with_files( | ||
544 | r" | ||
545 | //- /lib.rs | ||
546 | fn missing_unsafe() { | ||
547 | let x = &5 as *usize; | ||
548 | let y = *x; | ||
549 | } | ||
550 | ", | ||
551 | ) | ||
552 | .diagnostics() | ||
553 | .0; | ||
554 | |||
555 | assert_snapshot!(diagnostics, @r#""fn missing_unsafe() {\n let x = &5 as *usize;\n let y = *x;\n}": Missing unsafe keyword on fn"#); | ||
556 | } | ||
557 | |||
558 | #[test] | ||
559 | fn missing_unsafe_diagnostic_with_unsafe_call() { | ||
560 | let diagnostics = TestDB::with_files( | ||
561 | r" | ||
562 | //- /lib.rs | ||
563 | unsafe fn unsafe_fn() { | ||
564 | let x = &5 as *usize; | ||
565 | let y = *x; | ||
566 | } | ||
567 | |||
568 | fn missing_unsafe() { | ||
569 | unsafe_fn(); | ||
570 | } | ||
571 | ", | ||
572 | ) | ||
573 | .diagnostics() | ||
574 | .0; | ||
575 | |||
576 | assert_snapshot!(diagnostics, @r#""fn missing_unsafe() {\n unsafe_fn();\n}": Missing unsafe keyword on fn"#); | ||
577 | } | ||
578 | |||
579 | #[test] | ||
580 | fn missing_unsafe_diagnostic_with_unsafe_method_call() { | ||
581 | let diagnostics = TestDB::with_files( | ||
582 | r" | ||
583 | //- /lib.rs | ||
584 | struct HasUnsafe; | ||
585 | |||
586 | impl HasUnsafe { | ||
587 | unsafe fn unsafe_fn() { | ||
588 | let x = &5 as *usize; | ||
589 | let y = *x; | ||
590 | } | ||
591 | } | ||
592 | |||
593 | fn missing_unsafe() { | ||
594 | HasUnsafe.unsafe_fn(); | ||
595 | } | ||
596 | |||
597 | ", | ||
598 | ) | ||
599 | .diagnostics() | ||
600 | .0; | ||
601 | |||
602 | assert_snapshot!(diagnostics, @r#""fn missing_unsafe() {\n HasUnsafe.unsafe_fn();\n}": Missing unsafe keyword on fn"#); | ||
603 | } | ||
604 | |||
605 | #[test] | ||
606 | fn unnecessary_unsafe_diagnostic() { | ||
607 | let diagnostics = TestDB::with_files( | ||
608 | r" | ||
609 | //- /lib.rs | ||
610 | unsafe fn actually_safe_fn() {} | ||
611 | ", | ||
612 | ) | ||
613 | .diagnostics() | ||
614 | .0; | ||
615 | |||
616 | assert_snapshot!(diagnostics, @r#""unsafe fn actually_safe_fn() {}": Unnecessary unsafe keyword on fn"#); | ||
617 | } | ||
618 | |||
619 | #[test] | ||
542 | fn break_outside_of_loop() { | 620 | fn break_outside_of_loop() { |
543 | let diagnostics = TestDB::with_files( | 621 | let diagnostics = TestDB::with_files( |
544 | r" | 622 | r" |