Unconditionally trim the end of comments

This commit is contained in:
kjeremy 2019-07-31 13:59:14 -04:00
parent d65dc40348
commit 0f61aa1f09
2 changed files with 5 additions and 13 deletions

View file

@ -181,10 +181,7 @@ fn test_doc_comment_multi_line_block_strips_suffix() {
.ok() .ok()
.unwrap(); .unwrap();
let module = file.syntax().descendants().find_map(Module::cast).unwrap(); let module = file.syntax().descendants().find_map(Module::cast).unwrap();
assert_eq!( assert_eq!(" this\n is\n mod foo", module.doc_comment_text().unwrap());
" this\n is\n mod foo\n ",
module.doc_comment_text().unwrap()
);
} }
#[test] #[test]

View file

@ -115,8 +115,8 @@ pub trait DocCommentsOwner: AstNode {
} }
/// Returns the textual content of a doc comment block as a single string. /// Returns the textual content of a doc comment block as a single string.
/// That is, strips leading `///` or trailing `*/` (+ optional 1 character of whitespace in either direction) /// That is, strips leading `///` (+ optional 1 character of whitespace),
/// and joins lines. /// trailing `*/`, trailing whitespace and then joins the lines.
fn doc_comment_text(&self) -> Option<String> { fn doc_comment_text(&self) -> Option<String> {
let mut has_comments = false; let mut has_comments = false;
let docs = self let docs = self
@ -137,17 +137,12 @@ pub trait DocCommentsOwner: AstNode {
}; };
let end = if comment.kind().shape.is_block() && line.ends_with("*/") { let end = if comment.kind().shape.is_block() && line.ends_with("*/") {
// FIXME: Use `nth_back` here once stable line.len() - 2
if line.chars().rev().nth(2).map(|c| c.is_whitespace()).unwrap_or(false) {
line.len() - 3
} else {
line.len() - 2
}
} else { } else {
line.len() line.len()
}; };
line[pos..end].to_owned() line[pos..end].trim_end().to_owned()
}) })
.join("\n"); .join("\n");