about summary refs log tree commit diff
path: root/src/tools
diff options
context:
space:
mode:
authorroife <roifewu@gmail.com>2024-05-21 20:35:55 +0800
committerroife <roifewu@gmail.com>2024-05-21 20:35:55 +0800
commit719eee2d822e83dd74da46dfaa759acb9074d3aa (patch)
treeaee8c5bec8ad81d12bc16a0c6112c515793e9bf4 /src/tools
parentea2a16cadb93d7ab8ee08dbe4d0527faaf94b329 (diff)
downloadrust-719eee2d822e83dd74da46dfaa759acb9074d3aa.tar.gz
rust-719eee2d822e83dd74da46dfaa759acb9074d3aa.zip
test: add tests for extern preludes resolving in local mods
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/body/tests/block.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/body/tests/block.rs b/src/tools/rust-analyzer/crates/hir-def/src/body/tests/block.rs
index 985c6387ba0..f483efa8517 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/body/tests/block.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/body/tests/block.rs
@@ -528,3 +528,65 @@ fn f() {$0
         "#]],
     )
 }
+
+#[test]
+fn resolve_extern_prelude_in_block() {
+    check_at(
+        r#"
+//- /main.rs crate:main deps:core
+fn main() {
+    mod f {
+        use core::S;
+        $0
+    }
+}
+
+//- /core.rs crate:core
+pub struct S;
+        "#,
+        expect![[r#"
+            block scope
+            f: t
+
+            block scope::f
+            S: ti vi
+
+            crate
+            main: v
+        "#]],
+    )
+}
+
+#[test]
+fn shadow_extern_prelude_in_block() {
+    check_at(
+        r#"
+//- /main.rs crate:main deps:core
+fn main() {
+    mod core { pub struct S; }
+    {
+        fn inner() {} // forces a block def map
+        use core::S; // should resolve to the local one
+        $0
+    }
+}
+
+//- /core.rs crate:core
+pub const S;
+        "#,
+        expect![[r#"
+            block scope
+            S: ti vi
+            inner: v
+
+            block scope
+            core: t
+
+            block scope::core
+            S: t v
+
+            crate
+            main: v
+        "#]],
+    )
+}