diff options
author | kjeremy <[email protected]> | 2019-07-31 18:59:14 +0100 |
---|---|---|
committer | kjeremy <[email protected]> | 2019-07-31 18:59:14 +0100 |
commit | 0f61aa1f09f0609271d3c0a3d23815488ec94949 (patch) | |
tree | ee77d2ed8300fad294b1609f4eba7c7cba232147 | |
parent | d65dc40348afc90c812b4d392f8e085eca78fc17 (diff) |
Unconditionally trim the end of comments
-rw-r--r-- | crates/ra_syntax/src/ast.rs | 5 | ||||
-rw-r--r-- | crates/ra_syntax/src/ast/traits.rs | 13 |
2 files changed, 5 insertions, 13 deletions
diff --git a/crates/ra_syntax/src/ast.rs b/crates/ra_syntax/src/ast.rs index 8ac313e6e..6f0489617 100644 --- a/crates/ra_syntax/src/ast.rs +++ b/crates/ra_syntax/src/ast.rs | |||
@@ -181,10 +181,7 @@ fn test_doc_comment_multi_line_block_strips_suffix() { | |||
181 | .ok() | 181 | .ok() |
182 | .unwrap(); | 182 | .unwrap(); |
183 | let module = file.syntax().descendants().find_map(Module::cast).unwrap(); | 183 | let module = file.syntax().descendants().find_map(Module::cast).unwrap(); |
184 | assert_eq!( | 184 | assert_eq!(" this\n is\n mod foo", module.doc_comment_text().unwrap()); |
185 | " this\n is\n mod foo\n ", | ||
186 | module.doc_comment_text().unwrap() | ||
187 | ); | ||
188 | } | 185 | } |
189 | 186 | ||
190 | #[test] | 187 | #[test] |
diff --git a/crates/ra_syntax/src/ast/traits.rs b/crates/ra_syntax/src/ast/traits.rs index 0c193e019..1b9a2b20c 100644 --- a/crates/ra_syntax/src/ast/traits.rs +++ b/crates/ra_syntax/src/ast/traits.rs | |||
@@ -115,8 +115,8 @@ pub trait DocCommentsOwner: AstNode { | |||
115 | } | 115 | } |
116 | 116 | ||
117 | /// Returns the textual content of a doc comment block as a single string. | 117 | /// Returns the textual content of a doc comment block as a single string. |
118 | /// That is, strips leading `///` or trailing `*/` (+ optional 1 character of whitespace in either direction) | 118 | /// That is, strips leading `///` (+ optional 1 character of whitespace), |
119 | /// and joins lines. | 119 | /// trailing `*/`, trailing whitespace and then joins the lines. |
120 | fn doc_comment_text(&self) -> Option<String> { | 120 | fn doc_comment_text(&self) -> Option<String> { |
121 | let mut has_comments = false; | 121 | let mut has_comments = false; |
122 | let docs = self | 122 | let docs = self |
@@ -137,17 +137,12 @@ pub trait DocCommentsOwner: AstNode { | |||
137 | }; | 137 | }; |
138 | 138 | ||
139 | let end = if comment.kind().shape.is_block() && line.ends_with("*/") { | 139 | let end = if comment.kind().shape.is_block() && line.ends_with("*/") { |
140 | // FIXME: Use `nth_back` here once stable | 140 | line.len() - 2 |
141 | if line.chars().rev().nth(2).map(|c| c.is_whitespace()).unwrap_or(false) { | ||
142 | line.len() - 3 | ||
143 | } else { | ||
144 | line.len() - 2 | ||
145 | } | ||
146 | } else { | 141 | } else { |
147 | line.len() | 142 | line.len() |
148 | }; | 143 | }; |
149 | 144 | ||
150 | line[pos..end].to_owned() | 145 | line[pos..end].trim_end().to_owned() |
151 | }) | 146 | }) |
152 | .join("\n"); | 147 | .join("\n"); |
153 | 148 | ||