@@ -146,9 +146,7 @@ func (ctx *parseContext) mapFile(file *ast.File, sourcePath string) *tree.Compil
146146
147147 // Imports
148148 var imports * tree.Container [* tree.Import ]
149- if len (file .Imports ) > 0 {
150- imports = ctx .mapImports (file )
151- }
149+ imports = ctx .mapImports (file )
152150
153151 // Top-level declarations (functions, types, vars, consts - excluding imports)
154152 var stmts []tree.RightPadded [tree.Statement ]
@@ -224,6 +222,11 @@ func (ctx *parseContext) mapImports(file *ast.File) *tree.Container[*tree.Import
224222 ctx .skip (1 ) // skip ")"
225223 if len (elements ) > 0 {
226224 elements [len (elements )- 1 ].After = closeParen
225+ } else if len (closeParen .Comments ) > 0 {
226+ elements = append (elements , tree.RightPadded [* tree.Import ]{
227+ Element : & tree.Import {ID : uuid .New (), Qualid : & tree.Empty {ID : uuid .New ()}},
228+ After : closeParen ,
229+ })
227230 }
228231 }
229232
@@ -237,19 +240,30 @@ func (ctx *parseContext) mapImports(file *ast.File) *tree.Container[*tree.Import
237240 ctx .skip (1 ) // skip "("
238241 }
239242
240- ctx . mapImportBlockSpecs ( importDecl , & elements , tree.ImportBlock {
243+ importBlockMarker := tree.ImportBlock {
241244 Ident : uuid .New (),
242245 ClosePrevious : prevGrouped ,
243246 Before : blockBefore ,
244247 Grouped : grouped ,
245248 GroupedBefore : groupedBefore ,
246- })
249+ }
250+ ctx .mapImportBlockSpecs (importDecl , & elements , importBlockMarker )
247251
248252 if grouped {
249253 closeParen := ctx .prefix (importDecl .Rparen )
250254 ctx .skip (1 ) // skip ")"
251- if len (elements ) > 0 {
255+ if len (importDecl . Specs ) > 0 {
252256 elements [len (elements )- 1 ].After = closeParen
257+ } else if len (closeParen .Comments ) > 0 {
258+ imp := & tree.Import {ID : uuid .New (), Qualid : & tree.Empty {ID : uuid .New ()}}
259+ imp .Markers = tree.Markers {
260+ ID : uuid .New (),
261+ Entries : []tree.Marker {importBlockMarker },
262+ }
263+ elements = append (elements , tree.RightPadded [* tree.Import ]{
264+ Element : imp ,
265+ After : closeParen ,
266+ })
253267 }
254268 }
255269 prevGrouped = grouped
@@ -345,6 +359,11 @@ func (ctx *parseContext) mapVarConstDecl(decl *ast.GenDecl) tree.Statement {
345359
346360 if len (elements ) > 0 {
347361 elements [len (elements )- 1 ].After = rparenPrefix
362+ } else if len (rparenPrefix .Comments ) > 0 {
363+ elements = append (elements , tree.RightPadded [tree.Statement ]{
364+ Element : & tree.Empty {ID : uuid .New ()},
365+ After : rparenPrefix ,
366+ })
348367 }
349368
350369 var markerEntries []tree.Marker
@@ -473,6 +492,11 @@ func (ctx *parseContext) mapTypeDecl(decl *ast.GenDecl) tree.Statement {
473492
474493 if len (elements ) > 0 {
475494 elements [len (elements )- 1 ].After = rparenPrefix
495+ } else if len (rparenPrefix .Comments ) > 0 {
496+ elements = append (elements , tree.RightPadded [tree.Statement ]{
497+ Element : & tree.Empty {ID : uuid .New ()},
498+ After : rparenPrefix ,
499+ })
476500 }
477501
478502 specs := & tree.Container [tree.Statement ]{Before : lparenPrefix , Elements : elements }
@@ -705,6 +729,11 @@ func (ctx *parseContext) mapFieldListAsParams(fl *ast.FieldList) tree.Container[
705729
706730 if len (elements ) > 0 {
707731 elements [len (elements )- 1 ].After = closeParen
732+ } else if len (closeParen .Comments ) > 0 {
733+ elements = append (elements , tree.RightPadded [tree.Statement ]{
734+ Element : & tree.Empty {ID : uuid .New ()},
735+ After : closeParen ,
736+ })
708737 }
709738
710739 return tree.Container [tree.Statement ]{Before : before , Elements : elements }
@@ -1785,8 +1814,14 @@ func (ctx *parseContext) mapCompositeLit(expr *ast.CompositeLit) tree.Expression
17851814 elements [len (elements )- 1 ].After = rbracePrefix
17861815 }
17871816 } else {
1788- ctx .prefix (expr .Rbrace ) // consume space
1789- ctx .skip (1 ) // "}"
1817+ closePrefix := ctx .prefix (expr .Rbrace )
1818+ ctx .skip (1 ) // "}"
1819+ if len (closePrefix .Comments ) > 0 {
1820+ elements = append (elements , tree.RightPadded [tree.Expression ]{
1821+ Element : & tree.Empty {ID : uuid .New ()},
1822+ After : closePrefix ,
1823+ })
1824+ }
17901825 }
17911826
17921827 return & tree.Composite {
0 commit comments