]> git.lizzy.rs Git - rust.git/blobdiff - crates/ide_diagnostics/src/handlers/macro_error.rs
Merge #11354
[rust.git] / crates / ide_diagnostics / src / handlers / macro_error.rs
index 356f089b228b0d1e3a2c2d101b78e297cde2bc20..a5bfb302d5ebce2284783a3d2130ad924f375972 100644 (file)
@@ -26,8 +26,53 @@ fn builtin_macro_fails_expansion() {
 #[rustc_builtin_macro]
 macro_rules! include { () => {} }
 
+#[rustc_builtin_macro]
+macro_rules! compile_error { () => {} }
+
   include!("doesntexist");
 //^^^^^^^^^^^^^^^^^^^^^^^^ error: failed to load file `doesntexist`
+
+  compile_error!("compile_error macro works");
+//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: compile_error macro works
+            "#,
+        );
+    }
+
+    #[test]
+    fn eager_macro_concat() {
+        // FIXME: this is incorrectly handling `$crate`, resulting in a wrong diagnostic.
+        // See: https://github.com/rust-analyzer/rust-analyzer/issues/10300
+
+        check_diagnostics(
+            r#"
+//- /lib.rs crate:lib deps:core
+use core::{panic, concat};
+
+mod private {
+    pub use core::concat;
+}
+
+macro_rules! m {
+    () => {
+        panic!(concat!($crate::private::concat!("")));
+    };
+}
+
+fn f() {
+    m!();
+  //^^^^ error: unresolved macro `$crate::private::concat!`
+}
+
+//- /core.rs crate:core
+#[macro_export]
+#[rustc_builtin_macro]
+macro_rules! concat { () => {} }
+
+pub macro panic {
+    ($msg:expr) => (
+        $crate::panicking::panic_str($msg)
+    ),
+}
             "#,
         );
     }