From f32ad8362f075a80d4c4861c5f6f601fd7484ff6 Mon Sep 17 00:00:00 2001 From: Jeremy Banks <_@jeremy.ca> Date: Wed, 15 Jun 2022 16:25:47 +0000 Subject: [PATCH 1/2] add failing test: inserts_after_shebang --- crates/ide-db/src/imports/insert_use/tests.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/ide-db/src/imports/insert_use/tests.rs b/crates/ide-db/src/imports/insert_use/tests.rs index 6569e4ed8c6a..70a7a1523212 100644 --- a/crates/ide-db/src/imports/insert_use/tests.rs +++ b/crates/ide-db/src/imports/insert_use/tests.rs @@ -454,6 +454,17 @@ use foo::bar::Baz;"#, ); } +#[test] +fn inserts_after_shebang() { + check_none( + "foo::bar::Baz", + "#!/usr/bin/env rust", + r#"#!/usr/bin/env rust + +use foo::bar::Baz;"#, + ); +} + #[test] fn inserts_after_multiple_single_line_comments() { check_none( From c32f1332363fd719cade4b4b2a7ba885a3ded4e7 Mon Sep 17 00:00:00 2001 From: Jeremy Banks <_@jeremy.ca> Date: Wed, 15 Jun 2022 19:42:16 +0000 Subject: [PATCH 2/2] fix: inserted imports must come after a shebang if present --- crates/ide-db/src/imports/insert_use.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/ide-db/src/imports/insert_use.rs b/crates/ide-db/src/imports/insert_use.rs index 66d0b2ee82c9..d1cd34781970 100644 --- a/crates/ide-db/src/imports/insert_use.rs +++ b/crates/ide-db/src/imports/insert_use.rs @@ -403,7 +403,8 @@ fn insert_use_( .take_while(|child| match child { NodeOrToken::Node(node) => is_inner_attribute(node.clone()), NodeOrToken::Token(token) => { - [SyntaxKind::WHITESPACE, SyntaxKind::COMMENT].contains(&token.kind()) + [SyntaxKind::WHITESPACE, SyntaxKind::COMMENT, SyntaxKind::SHEBANG] + .contains(&token.kind()) } }) .filter(|child| child.as_token().map_or(true, |t| t.kind() != SyntaxKind::WHITESPACE))