Preserve newlines after blocks of comments.
This is an example of output from the formatter now:
```
//// Some module documentation
// foo
const a: Int = 42
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
// n + 1
n + 1
}
```
before this commit, comments would all be collapsed into one group
above the function as:
```
// Some comment block
// For which newlines are respected.
// Foo
// Another one
/// add_one documentation
pub fn add_one(n: Int) -> Int {
```
This commit is contained in:
parent
22a526bb13
commit
431b0cfcf2
|
|
@ -47,7 +47,6 @@ pub fn module(
|
|||
false
|
||||
}
|
||||
Token::EmptyLine => {
|
||||
println!("{:?}", span);
|
||||
extra.empty_lines.push(span.start);
|
||||
|
||||
false
|
||||
|
|
|
|||
|
|
@ -117,10 +117,17 @@ pub fn lexer() -> impl Parser<char, Vec<(Token, Span)>, Error = ParseError> {
|
|||
.map_with_span(|token, span| (token, span)),
|
||||
);
|
||||
|
||||
let comments_with_trailing_newline = just("//").ignore_then(
|
||||
take_until(text::newline())
|
||||
.then_ignore(text::newline().rewind())
|
||||
.to(Token::Comment)
|
||||
.map_with_span(|token, span| (token, span)),
|
||||
);
|
||||
|
||||
choice((
|
||||
module_comments,
|
||||
doc_comments,
|
||||
comments,
|
||||
choice((comments_with_trailing_newline, comments)),
|
||||
choice((keyword, int, op, grouping, string))
|
||||
.or(any().map(Token::Error).validate(|t, span, emit| {
|
||||
emit(ParseError::expected_input_found(
|
||||
|
|
|
|||
Loading…
Reference in New Issue