From a30075cdfc1d08658677039978dd575b3f054b1b Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Thu, 2 Sep 2021 11:20:51 -0700 Subject: [PATCH] Imports: if expanding only, do not group imports --- .../main/scala/org/scalafmt/rewrite/Imports.scala | 12 +++++++++++- .../resources/rewrite/ExpandImportSelectors.stat | 3 +++ .../src/test/resources/rewrite/Imports.source | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/Imports.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/Imports.scala index 059e1463cb..dd07341644 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/Imports.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/rewrite/Imports.scala @@ -473,7 +473,10 @@ object Imports extends RewriteFactory { override protected def processImports( stats: Seq[Seq[ImportExportStat]] ): Unit = - processAllGroups(stats) + if (settings.groups.isEmpty && settings.sort.eq(Sort.none)) + processEachLine(stats) + else + processAllGroups(stats) private def getTokenRange(x: Seq[ImportExportStat]): (Token, Token) = { val headTok = x.head.tokens.head @@ -484,6 +487,13 @@ object Imports extends RewriteFactory { ) } + private def processEachLine(stats: Seq[Seq[ImportExportStat]]): Unit = + stats.flatten.foreach { stat => + val group = Seq(stat) + val importString = processImports(group) + processTokenRanges(importString, getTokenRange(group)) + } + private def processAllGroups(stats: Seq[Seq[ImportExportStat]]): Unit = { val tokenRanges = stats.map(getTokenRange) val importString = processImports(stats.flatten) diff --git a/scalafmt-tests/src/test/resources/rewrite/ExpandImportSelectors.stat b/scalafmt-tests/src/test/resources/rewrite/ExpandImportSelectors.stat index ef783db840..ed6a6e72c7 100644 --- a/scalafmt-tests/src/test/resources/rewrite/ExpandImportSelectors.stat +++ b/scalafmt-tests/src/test/resources/rewrite/ExpandImportSelectors.stat @@ -137,4 +137,7 @@ import zio.prelude.` => ` import zio.prelude.{<=>, ` => `} >>> import zio.prelude.<=> + +import zio.prelude.` => ` +import zio.prelude.<=> import zio.prelude.` => ` diff --git a/scalafmt-tests/src/test/resources/rewrite/Imports.source b/scalafmt-tests/src/test/resources/rewrite/Imports.source index 922ab2738d..d0fcf0d518 100644 --- a/scalafmt-tests/src/test/resources/rewrite/Imports.source +++ b/scalafmt-tests/src/test/resources/rewrite/Imports.source @@ -57,6 +57,7 @@ import h.k import h.l export d.e.f export d.e.g + // comment import a.md.e.f import a.md.e.g @@ -676,6 +677,7 @@ import bar.b import bar.a >>> import bar.b + import bar.a <<< #2720 !expand rewrite.imports.expand = false