about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates/ide-diagnostics
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2025-01-09 10:20:11 +0000
committerGitHub <noreply@github.com>2025-01-09 10:20:11 +0000
commitf6e8974fa8ee00b740254df385b99e6bd3b7ee6c (patch)
tree6c6fd766ec9ebb80eac9b4ec4561ed6ce827efc2 /src/tools/rust-analyzer/crates/ide-diagnostics
parentf4ecc34aa71109596fe7d8a809614a5d25732213 (diff)
parent89a72c78fc60106b8eeba707dd82cf6eaafe41ef (diff)
downloadrust-f6e8974fa8ee00b740254df385b99e6bd3b7ee6c.tar.gz
rust-f6e8974fa8ee00b740254df385b99e6bd3b7ee6c.zip
Merge pull request #18861 from ChayimFriedman2/await-edition
fix: Make edition per-token, not per-file
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-diagnostics')
-rw-r--r--src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs
index e5d871975b6..0f126a1a656 100644
--- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs
+++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/no_such_field.rs
@@ -399,4 +399,38 @@ fn f(s@m::Struct {
 "#,
         )
     }
+
+    #[test]
+    fn editions_between_macros() {
+        check_diagnostics(
+            r#"
+//- /edition2015.rs crate:edition2015 edition:2015
+#[macro_export]
+macro_rules! pass_expr_thorough {
+    ($e:expr) => { $e };
+}
+
+//- /edition2018.rs crate:edition2018 deps:edition2015 edition:2018
+async fn bar() {}
+async fn foo() {
+    edition2015::pass_expr_thorough!(bar().await);
+}
+        "#,
+        );
+        check_diagnostics(
+            r#"
+//- /edition2018.rs crate:edition2018 edition:2018
+pub async fn bar() {}
+#[macro_export]
+macro_rules! make_await {
+    () => { async { $crate::bar().await }; };
+}
+
+//- /edition2015.rs crate:edition2015 deps:edition2018 edition:2015
+fn foo() {
+    edition2018::make_await!();
+}
+        "#,
+        );
+    }
 }