Skip to content

Commit

Permalink
Fix comment formatting wrongly assuming false invariant.
Browse files Browse the repository at this point in the history
  • Loading branch information
KtorZ authored and rvcas committed Mar 16, 2023
1 parent 57e217e commit 660ca3f
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 46 deletions.
40 changes: 22 additions & 18 deletions crates/aiken-lang/src/format.rs
Expand Up @@ -1799,31 +1799,35 @@ 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)),
// 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(lines(2));
doc.push(line());
}
}
}
}
// We've reached the end, there are no more lines
None => {
if trailing_newline {
doc.push(line());
}
}
}
}
let doc = concat(doc);
Expand Down
19 changes: 0 additions & 19 deletions crates/aiken-lang/src/tests/check.rs
Expand Up @@ -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#"
Expand Down
21 changes: 19 additions & 2 deletions crates/aiken-lang/src/tests/format.rs
Expand Up @@ -638,7 +638,16 @@ fn weird_comments() {
/// B
/// C
fn bar () {
fn foo() {
todo
}
// E
/// F
// G
fn bar() {
todo
}
"#};
Expand All @@ -648,7 +657,15 @@ fn weird_comments() {
/// B
/// C
fn bar () {
fn foo() {
todo
}
// E
// G
/// F
fn bar() {
todo
}
"#};
Expand Down
7 changes: 0 additions & 7 deletions crates/aiken-lang/src/tipo/error.rs
Expand Up @@ -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 {
Expand Down

0 comments on commit 660ca3f

Please sign in to comment.