From 77f89a700b452cac8ca03de32598066fca32ce34 Mon Sep 17 00:00:00 2001 From: Leander Tentrup Date: Tue, 31 Mar 2020 14:19:21 +0200 Subject: Attach doc-comment to declaration if there are newlines in between This commit changes the parser to attach doc-comments to the corresponding declaration in case there are newlines in between the doc-comment and the declaration. --- crates/ra_syntax/src/parsing/text_tree_sink.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'crates/ra_syntax/src') diff --git a/crates/ra_syntax/src/parsing/text_tree_sink.rs b/crates/ra_syntax/src/parsing/text_tree_sink.rs index dd202601d..87bb21cd9 100644 --- a/crates/ra_syntax/src/parsing/text_tree_sink.rs +++ b/crates/ra_syntax/src/parsing/text_tree_sink.rs @@ -149,10 +149,21 @@ fn n_attached_trivias<'a>( MACRO_CALL | CONST_DEF | TYPE_ALIAS_DEF | STRUCT_DEF | ENUM_DEF | ENUM_VARIANT | FN_DEF | TRAIT_DEF | MODULE | RECORD_FIELD_DEF | STATIC_DEF => { let mut res = 0; - for (i, (kind, text)) in trivias.enumerate() { + let mut trivias = trivias.enumerate().peekable(); + + while let Some((i, (kind, text))) = trivias.next() { match kind { WHITESPACE => { if text.contains("\n\n") { + // we check whether the next token is a doc-comment + // and skip the whitespace in this case + if let Some((peek_kind, peek_text)) = + trivias.peek().map(|(_, pair)| pair) + { + if *peek_kind == COMMENT && peek_text.starts_with("///") { + continue; + } + } break; } } -- cgit v1.2.3