Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/normalize_import.rs')
-rw-r--r--crates/ide-assists/src/handlers/normalize_import.rs31
1 files changed, 30 insertions, 1 deletions
diff --git a/crates/ide-assists/src/handlers/normalize_import.rs b/crates/ide-assists/src/handlers/normalize_import.rs
index 7d003efe72..0b91eb676d 100644
--- a/crates/ide-assists/src/handlers/normalize_import.rs
+++ b/crates/ide-assists/src/handlers/normalize_import.rs
@@ -120,9 +120,38 @@ mod tests {
}
#[test]
+ fn test_braces_kept() {
+ check_assist_not_applicable_variations!("foo::bar::{$0self}");
+
+ // This code compiles but transforming "bar::{self}" into "bar" causes a
+ // compilation error (the name `bar` is defined multiple times).
+ // Therefore, the normalize_input assist must not apply here.
+ check_assist_not_applicable(
+ normalize_import,
+ r"
+mod foo {
+
+ pub mod bar {}
+
+ pub const bar: i32 = 8;
+}
+
+use foo::bar::{$0self};
+
+const bar: u32 = 99;
+
+fn main() {
+ let local_bar = bar;
+}
+
+",
+ );
+ }
+
+ #[test]
fn test_redundant_braces() {
check_assist_variations!("foo::{bar::{baz, Qux}}", "foo::bar::{baz, Qux}");
- check_assist_variations!("foo::{bar::{self}}", "foo::bar");
+ check_assist_variations!("foo::{bar::{self}}", "foo::bar::{self}");
check_assist_variations!("foo::{bar::{*}}", "foo::bar::*");
check_assist_variations!("foo::{bar::{Qux as Quux}}", "foo::bar::Qux as Quux");
check_assist_variations!(