diff options
Diffstat (limited to 'crates/hir_ty/src/tests')
-rw-r--r-- | crates/hir_ty/src/tests/coercion.rs | 44 |
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] | ||
917 | fn panic_macro() { | ||
918 | check_infer_with_mismatches( | ||
919 | r#" | ||
920 | mod panic { | ||
921 | #[macro_export] | ||
922 | pub macro panic_2015 { | ||
923 | () => ( | ||
924 | $crate::panicking::panic("explicit panic") | ||
925 | ), | ||
926 | } | ||
927 | } | ||
928 | |||
929 | mod panicking { | ||
930 | pub fn panic() -> ! { loop {} } | ||
931 | } | ||
932 | |||
933 | #[rustc_builtin_macro = "core_panic"] | ||
934 | macro_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 | |||
942 | fn 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 | } | ||