diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatWriter.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatWriter.scala index 6e83449581..f3c09e1e91 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatWriter.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatWriter.scala @@ -371,6 +371,12 @@ class FormatWriter(formatOps: FormatOps) { else if (!x.formatToken.right.is[T.Comment]) false else hasBreakAfter(i + 1) } + @tailrec + def noAnnoFor(tree: Tree): Boolean = tree.parent match { + case Some(p @ (_: Term | _: Term.ArgClause)) => noAnnoFor(p) + case Some(p: Init) => !p.parent.exists(_.is[Mod.Annot]) + case _ => true + } val style = floc.style val ib = style.rewrite.insertBraces val ft = floc.formatToken @@ -378,7 +384,9 @@ class FormatWriter(formatOps: FormatOps) { floc.missingBracesIndent.isEmpty val mb = if (ok) formatOps.MissingBraces.getBlocks(ft, ib.allBlocks) - .filter { case (y, _) => checkInfix(y) && hasBreakAfter(idx) } + .filter { case (y, _) => + checkInfix(y) && hasBreakAfter(idx) && noAnnoFor(y) + } else None mb.foreach { case (owner, otherBlocks) => val endFt = tokens.nextNonCommentSameLine(tokens.getLast(owner)) diff --git a/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat b/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat index ded5ec9cb8..997a84daf3 100644 --- a/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat +++ b/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat @@ -1714,3 +1714,37 @@ object a { ) = Def.task(session.checkTrackedSources(sources, dirs)) tag (ScalafmtTagPack: _*) } +<<< #3912 insert braces in anno +rewrite.insertBraces.minLines = 1 +=== +@ComponentScans(value = + Array( + new ComponentScan( + value = Array("xxx.werr.werwer.fghfgfh"), + nameGenerator = classOf[BeanNameGenerator], + lazyInit = true, + ), + new ComponentScan( + value = Array("xxx.werr.werwer.dsqrtybx"), + nameGenerator = classOf[BeanNameGenerator], + lazyInit = true, + ), + ) +) +class WutAppSpringCfg extends SomeOtherStuff {} +>>> +@ComponentScans(value = + Array( + new ComponentScan( + value = Array("xxx.werr.werwer.fghfgfh"), + nameGenerator = classOf[BeanNameGenerator], + lazyInit = true + ), + new ComponentScan( + value = Array("xxx.werr.werwer.dsqrtybx"), + nameGenerator = classOf[BeanNameGenerator], + lazyInit = true + ) + ) +) +class WutAppSpringCfg extends SomeOtherStuff {}