diff --git a/vlib/v/ast/ast.v b/vlib/v/ast/ast.v index eb9de82027..15cac308ef 100644 --- a/vlib/v/ast/ast.v +++ b/vlib/v/ast/ast.v @@ -285,8 +285,9 @@ pub: mod_pos token.Position alias_pos token.Position pub mut: - syms []ImportSymbol // the list of symbols in `import {symbol1, symbol2}` - comments []Comment + syms []ImportSymbol // the list of symbols in `import {symbol1, symbol2}` + comments []Comment + next_comments []Comment } // import symbol,for import {symbol} syntax diff --git a/vlib/v/fmt/fmt.v b/vlib/v/fmt/fmt.v index d0a3b4333f..a21ed03dcf 100644 --- a/vlib/v/fmt/fmt.v +++ b/vlib/v/fmt/fmt.v @@ -280,6 +280,7 @@ pub fn (mut f Fmt) imports(imports []ast.Import) { already_imported[import_text] = true f.out_imports.writeln(import_text) f.import_comments(imp.comments, inline: true) + f.import_comments(imp.next_comments, {}) num_imports++ } if num_imports > 0 { diff --git a/vlib/v/fmt/tests/import_keep.vv b/vlib/v/fmt/tests/import_keep.vv index 568d3f75d1..1f64b0bc01 100644 --- a/vlib/v/fmt/tests/import_keep.vv +++ b/vlib/v/fmt/tests/import_keep.vv @@ -1,5 +1,11 @@ // import time This should be commented out import os +// between import rand +// first between +// second between +import semver +// after the last import +// also after the last import -// another comment after imports +// this comment does not belong to the imports anymore diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 5291fb8d8b..692812fc48 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -1918,6 +1918,7 @@ fn (mut p Parser) import_stmt() ast.Import { } } import_node.comments = p.eat_comments(same_line: true) + import_node.next_comments = p.eat_comments(follow_up: true) p.imports[mod_alias] = mod_name // if mod_name !in p.table.imports { p.table.imports << mod_name