Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/tests/attribute.rs')
-rw-r--r--crates/ide-completion/src/tests/attribute.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/crates/ide-completion/src/tests/attribute.rs b/crates/ide-completion/src/tests/attribute.rs
index d8c134c533..351abe9850 100644
--- a/crates/ide-completion/src/tests/attribute.rs
+++ b/crates/ide-completion/src/tests/attribute.rs
@@ -1067,3 +1067,82 @@ mod repr {
);
}
}
+
+mod macro_use {
+ use super::*;
+
+ #[test]
+ fn completes_macros() {
+ check(
+ r#"
+//- /dep.rs crate:dep
+#[macro_export]
+macro_rules! foo {
+ () => {};
+}
+
+#[macro_export]
+macro_rules! bar {
+ () => {};
+}
+
+//- /main.rs crate:main deps:dep
+#[macro_use($0)]
+extern crate dep;
+"#,
+ expect![[r#"
+ ma bar
+ ma foo
+ "#]],
+ )
+ }
+
+ #[test]
+ fn only_completes_exported_macros() {
+ check(
+ r#"
+//- /dep.rs crate:dep
+#[macro_export]
+macro_rules! foo {
+ () => {};
+}
+
+macro_rules! bar {
+ () => {};
+}
+
+//- /main.rs crate:main deps:dep
+#[macro_use($0)]
+extern crate dep;
+"#,
+ expect![[r#"
+ ma foo
+ "#]],
+ )
+ }
+
+ #[test]
+ fn does_not_completes_already_imported_macros() {
+ check(
+ r#"
+//- /dep.rs crate:dep
+#[macro_export]
+macro_rules! foo {
+ () => {};
+}
+
+#[macro_export]
+macro_rules! bar {
+ () => {};
+}
+
+//- /main.rs crate:main deps:dep
+#[macro_use(foo, $0)]
+extern crate dep;
+"#,
+ expect![[r#"
+ ma bar
+ "#]],
+ )
+ }
+}