aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/tests/coercion.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty/src/tests/coercion.rs')
-rw-r--r--crates/hir_ty/src/tests/coercion.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/crates/hir_ty/src/tests/coercion.rs b/crates/hir_ty/src/tests/coercion.rs
index bb568ea37..7e9fc8735 100644
--- a/crates/hir_ty/src/tests/coercion.rs
+++ b/crates/hir_ty/src/tests/coercion.rs
@@ -912,3 +912,47 @@ fn test() -> i32 {
912 "#, 912 "#,
913 ) 913 )
914} 914}
915
916#[test]
917fn panic_macro() {
918 check_infer_with_mismatches(
919 r#"
920mod panic {
921 #[macro_export]
922 pub macro panic_2015 {
923 () => (
924 $crate::panicking::panic("explicit panic")
925 ),
926 }
927}
928
929mod panicking {
930 pub fn panic() -> ! { loop {} }
931}
932
933#[rustc_builtin_macro = "core_panic"]
934macro_rules! panic {
935 // Expands to either `$crate::panic::panic_2015` or `$crate::panic::panic_2021`
936 // depending on the edition of the caller.
937 ($($arg:tt)*) => {
938 /* compiler built-in */
939 };
940}
941
942fn main() {
943 panic!("internal error: entered unreachable code")
944}
945 "#,
946 expect![[r#"
947 190..201 '{ loop {} }': !
948 192..199 'loop {}': !
949 197..199 '{}': ()
950 !0..24 '$crate...:panic': fn panic() -> !
951 !0..42 '$crate...anic")': !
952 !0..42 '$crate...anic")': !
953 !0..70 '$crate...code")': !
954 !25..41 '"expli...panic"': &str
955 470..528 '{ ...de") }': ()
956 "#]],
957 );
958}