]> git.lizzy.rs Git - rust.git/commitdiff
remove stars at the beginning of multiline comments
authorAndre Bogus <bogusandre@gmail.com>
Sat, 19 Aug 2017 20:52:49 +0000 (22:52 +0200)
committerAndre Bogus <bogusandre@gmail.com>
Sat, 19 Aug 2017 20:52:49 +0000 (22:52 +0200)
clippy_lints/src/doc.rs
tests/ui/doc.rs

index 3ca71694bbd3c60b781903831727e2f70c46af2b..6dbf2ea959e6a667f1be86e3a52079e48a3bf570 100644 (file)
@@ -109,11 +109,11 @@ pub fn strip_doc_comment_decoration(comment: &str, span: Span) -> (String, Vec<(
     if comment.starts_with("/*") {
         let doc = &comment[3..comment.len() - 2];
         let mut sizes = vec![];
-
+        let mut contains_initial_stars = false;
         for line in doc.lines() {
             let offset = line.as_ptr() as usize - comment.as_ptr() as usize;
             debug_assert_eq!(offset as u32 as usize, offset);
-
+            contains_initial_stars |= line.trim_left().starts_with('*');
             // +1 for the newline
             sizes.push((
                 line.len() + 1,
@@ -123,8 +123,25 @@ pub fn strip_doc_comment_decoration(comment: &str, span: Span) -> (String, Vec<(
                 },
             ));
         }
-
-        return (doc.to_string(), sizes);
+        if !contains_initial_stars {
+            return (doc.to_string(), sizes);
+        }
+        // remove the initial '*'s if any
+        let mut no_stars = String::with_capacity(doc.len());
+        for line in doc.lines() {
+            let mut chars = line.chars();
+            while let Some(c) = chars.next() {
+                if c.is_whitespace() {
+                    no_stars.push(c);
+                } else {
+                    no_stars.push(if c == '*' { ' ' } else { c });
+                    break;
+                }
+            }
+            no_stars.push_str(chars.as_str());
+            no_stars.push('\n');
+        }
+        return (no_stars, sizes);
     }
 
     panic!("not a doc-comment: {}", comment);
index 0be34aa6f53a22373190e933d08fbec24507ff0d..b03f90681f2dab723ef8d28bab74fbb94dc17c34 100644 (file)
@@ -153,3 +153,9 @@ fn issue_902_comment() {}
 /// }
 /// ```
 fn issue_1469() {}
+
+/**
+ * This is a doc comment that should not be a list
+ *This would also be an error under a strict common mark interpretation
+ */
+fn issue_1920() {}