]> git.lizzy.rs Git - rust.git/commitdiff
Smarter bracketed use diagnostic
authorAdnoC <adam.r.cutler@gmail.com>
Wed, 30 Dec 2020 05:46:34 +0000 (22:46 -0700)
committerAdnoC <adam.r.cutler@gmail.com>
Wed, 30 Dec 2020 05:46:34 +0000 (22:46 -0700)
crates/ide/src/diagnostics.rs
crates/syntax/src/ast/node_ext.rs

index 03827375033ef937598ba714cda48bcf287e9adb..53f8bccdc10594cbaa90379f47e55c0e0e5bce48 100644 (file)
@@ -199,6 +199,12 @@ fn check_unnecessary_braces_in_use_statement(
 ) -> Option<()> {
     let use_tree_list = ast::UseTreeList::cast(node.clone())?;
     if let Some((single_use_tree,)) = use_tree_list.use_trees().collect_tuple() {
+        // If there is a comment inside the bracketed `use`,
+        // assume it is a commented out module path and don't show diagnostic.
+        if use_tree_list.has_inner_comment() {
+            return Some(());
+        }
+
         let use_range = use_tree_list.syntax().text_range();
         let edit =
             text_edit_for_remove_unnecessary_braces_with_self_in_use_statement(&single_use_tree)
index c45cb514a0f5c69f967b9e79b4c02fd705ed0c02..8a8c2319b450ddae676ecd44d04e68975fdffbbf 100644 (file)
@@ -193,6 +193,14 @@ pub fn parent_use_tree(&self) -> ast::UseTree {
             .and_then(ast::UseTree::cast)
             .expect("UseTreeLists are always nested in UseTrees")
     }
+
+    pub fn has_inner_comment(&self) -> bool {
+        self.syntax()
+            .children_with_tokens()
+        .filter_map(|it| it.into_token())
+        .find_map(ast::Comment::cast)
+        .is_some()
+    }
 }
 
 impl ast::Impl {