diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/RedundantBraces.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/RedundantBraces.scala index c34729f4ff..a0526a5978 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/RedundantBraces.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/RedundantBraces.scala @@ -293,7 +293,13 @@ class RedundantBraces(implicit val ftoks: FormatTokens) private def onRightBrace(left: Replacement)(implicit ft: FormatToken, style: ScalafmtConfig, - ): (Replacement, Replacement) = (left, removeToken) + ): (Replacement, Replacement) = { + val ok = ft.meta.rightOwner match { + case _: Term.Block => ftoks.prevNotTrailingComment(ft).isRight + case _ => true + } + if (ok) (left, removeToken) else null + } private def settings(implicit style: ScalafmtConfig, @@ -374,7 +380,7 @@ class RedundantBraces(implicit val ftoks: FormatTokens) session: Session, style: ScalafmtConfig, ): Boolean = b.stats.nonEmpty && b.tokens.headOption.contains(ft.right) && - b.tokens.last.is[Token.RightBrace] && okToRemoveBlock(b) && + okToRemoveBlock(b) && (b.parent match { case Some(p: Term.ArgClause) => p.parent.exists(checkValidInfixParent) case Some(p) => checkValidInfixParent(p) diff --git a/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat b/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat index 31d401a6b7..5668a2b373 100644 --- a/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat +++ b/scalafmt-tests/src/test/resources/rewrite/RedundantBraces.stat @@ -1924,3 +1924,19 @@ object a { // console accesses DynamicVariable, let's discard it too !t.className.startsWith("scala/util/DynamicVariable") } +<<< #4133 standalone comment at end of block +rewrite.rules = [RedundantBraces] +=== +object a { + for (jinner <- jclazz.getDeclaredClasses) { + jclassAsScala(jinner) // inner class is entered as a side-effect + // no need to call enter explicitly + } +} +>>> +object a { + for (jinner <- jclazz.getDeclaredClasses) { + jclassAsScala(jinner) // inner class is entered as a side-effect + // no need to call enter explicitly + } +}