1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

fmt: fix removal of comment before embed in struct (#11384)

This commit is contained in:
zakuro 2021-09-04 17:02:04 +09:00 committed by GitHub
parent 91f7be98d0
commit 19a43db2de
3 changed files with 11 additions and 4 deletions

View File

@ -57,11 +57,16 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
for embed in node.embeds {
f.mark_types_import_as_used(embed.typ)
styp := f.table.type_to_str_using_aliases(embed.typ, f.mod2alias)
if embed.comments.len == 0 {
pre_comments := embed.comments.filter(it.pos.pos < embed.pos.pos)
comments := embed.comments[pre_comments.len..]
f.comments_before_field(pre_comments)
if comments.len == 0 {
f.writeln('\t$styp')
} else {
f.write('\t$styp')
f.comments(embed.comments, level: .indent)
f.comments(comments, level: .indent)
}
}
mut field_align_i := 0

View File

@ -5,7 +5,9 @@ struct Foo {
struct Test {}
struct Bar {
// comment before Fooo
Foo // comment for Foo
// comment before Test
Test // comment for Test
// another comment for Test
y int

View File

@ -181,7 +181,7 @@ fn (mut p Parser) struct_decl() ast.StructDecl {
// struct embedding
type_pos = p.tok.position()
typ = p.parse_type()
ecomments := p.eat_comments()
comments << p.eat_comments()
type_pos = type_pos.extend(p.prev_tok.position())
if !is_on_top {
p.error_with_pos('struct embedding must be declared at the beginning of the struct body',
@ -203,7 +203,7 @@ fn (mut p Parser) struct_decl() ast.StructDecl {
embeds << ast.Embed{
typ: typ
pos: type_pos
comments: ecomments
comments: comments
}
} else {
// struct field