Fix comment formatting wrongly assuming false invariant.
This commit is contained in:
parent
57e217e81c
commit
660ca3fada
|
@ -1799,29 +1799,33 @@ fn printed_comments<'a, 'comments>(
|
|||
|
||||
let mut doc = Vec::new();
|
||||
while let Some(c) = comments.next() {
|
||||
// There will never be consecutive empty lines (None values),
|
||||
// and whenever we peek a None, we advance past it.
|
||||
let c = c.expect("no consecutive empty lines");
|
||||
doc.push("//".to_doc().append(Document::String(c.to_string())));
|
||||
match comments.peek() {
|
||||
// Next line is a comment
|
||||
Some(Some(_)) => doc.push(line()),
|
||||
// Next line is empty
|
||||
Some(None) => {
|
||||
comments.next();
|
||||
match c {
|
||||
None => continue,
|
||||
Some(c) => {
|
||||
// There will never be consecutive empty lines (None values),
|
||||
// and whenever we peek a None, we advance past it.
|
||||
doc.push("//".to_doc().append(Document::String(c.to_string())));
|
||||
match comments.peek() {
|
||||
Some(_) => doc.push(lines(2)),
|
||||
None => {
|
||||
if trailing_newline {
|
||||
doc.push(lines(2));
|
||||
// Next line is a comment
|
||||
Some(Some(_)) => doc.push(line()),
|
||||
// Next line is empty
|
||||
Some(None) => {
|
||||
comments.next();
|
||||
match comments.peek() {
|
||||
Some(_) => doc.push(lines(2)),
|
||||
None => {
|
||||
if trailing_newline {
|
||||
doc.push(lines(2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// We've reached the end, there are no more lines
|
||||
None => {
|
||||
if trailing_newline {
|
||||
doc.push(line());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// We've reached the end, there are no more lines
|
||||
None => {
|
||||
if trailing_newline {
|
||||
doc.push(line());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -322,25 +322,6 @@ fn utf8_hex_literal_warning() {
|
|||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn weird_comments() {
|
||||
let source_code = r#"
|
||||
// A
|
||||
|
||||
/// B
|
||||
|
||||
// C
|
||||
fn foo () {
|
||||
todo
|
||||
}
|
||||
"#;
|
||||
|
||||
assert!(matches!(
|
||||
check(parse(source_code)),
|
||||
Err((_, Error::UnexpectedDocComment { .. }))
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn discarded_let_bindings() {
|
||||
let source_code = r#"
|
||||
|
|
|
@ -638,7 +638,16 @@ fn weird_comments() {
|
|||
/// B
|
||||
|
||||
/// C
|
||||
fn bar () {
|
||||
fn foo() {
|
||||
todo
|
||||
}
|
||||
|
||||
// E
|
||||
|
||||
/// F
|
||||
|
||||
// G
|
||||
fn bar() {
|
||||
todo
|
||||
}
|
||||
"#};
|
||||
|
@ -648,7 +657,15 @@ fn weird_comments() {
|
|||
|
||||
/// B
|
||||
/// C
|
||||
fn bar () {
|
||||
fn foo() {
|
||||
todo
|
||||
}
|
||||
|
||||
// E
|
||||
|
||||
// G
|
||||
/// F
|
||||
fn bar() {
|
||||
todo
|
||||
}
|
||||
"#};
|
||||
|
|
|
@ -892,13 +892,6 @@ The best thing to do from here is to remove it."#))]
|
|||
#[label("{} arguments", if *count < 2 { "not enough" } else { "too many" })]
|
||||
location: Span,
|
||||
},
|
||||
|
||||
#[error("I ran into a lonely doc comment not attached to any function definition.")]
|
||||
#[diagnostic(code("unexpected::doc_comment"))]
|
||||
UnexpectedDocComment {
|
||||
#[label("unexpected doc comment")]
|
||||
location: Span,
|
||||
},
|
||||
}
|
||||
|
||||
impl Error {
|
||||
|
|
Loading…
Reference in New Issue