From 689323b4ca06e95517b15254adea7ffeeb83469d Mon Sep 17 00:00:00 2001 From: Brice Jaglin Date: Thu, 23 Nov 2023 23:20:06 +0100 Subject: [PATCH] OrganizeImports: use new Scala 3 on Scala 3 sources --- .../internal/rule/OrganizeImports.scala | 240 +++++++++++------- .../GroupedGivenImportsMergeUnimports.scala | 10 +- .../ExplodeImportsFormatPreserving.scala | 2 +- .../ImportsOrderSymbolsFirst.scala | 3 + .../organizeImports/CoalesceImportees.scala | 0 .../CurlyBracedSingleImportee.scala | 0 .../DeduplicateImportees.scala | 0 .../ExpandRelativeEmptyPackage.scala | 0 .../ExplodeImportsFormatPreserving.scala | 0 ...roupedImportsAggressiveMergeWildcard.scala | 0 .../GroupedImportsExplodeMixed.scala | 0 .../GroupedImportsExplodeUnimport.scala | 0 .../GroupedImportsMergeDedup.scala | 0 .../GroupedImportsMergeRenames.scala | 0 .../GroupedImportsMergeUnimports.scala | 0 .../GroupedImportsMergeWildcard.scala | 0 .../test/organizeImports/Groups.scala | 0 .../organizeImports/GroupsLongestMatch.scala | 0 .../organizeImports/ImportsOrderKeep.scala | 0 .../ImportsOrderSymbolsFirst.scala | 3 + .../MergeImportsFormatPreserving.scala | 0 .../OrganizeImportsRootPackage.scala | 0 .../nested/NestedPackage.scala | 0 .../nested/NestedPackageWithBraces.scala | 0 .../organizeImports/CoalesceImportees.scala | 8 + .../CoalesceImporteesGivensAndNames.scala | 4 +- .../CoalesceImporteesNoGivens.scala | 2 +- .../CoalesceImporteesNoGivensNoNames.scala | 2 +- .../CoalesceImporteesNoNames.scala | 4 +- .../CurlyBracedSingleImportee.scala | 6 + .../DeduplicateGivenImportees.scala | 2 +- .../DeduplicateImportees.scala | 7 + .../ExpandRelativeEmptyPackage.scala | 14 + .../organizeImports/ExpandUnimportGiven.scala | 4 +- .../ExplodeImportsFormatPreserving.scala | 7 + .../GroupedGivenImportsMergeUnimports.scala | 6 +- ...roupedImportsAggressiveMergeGivenAll.scala | 8 +- ...roupedImportsAggressiveMergeWildcard.scala | 7 + .../GroupedImportsExplodeMixed.scala | 7 + .../GroupedImportsExplodeUnimport.scala | 5 + .../GroupedImportsMergeDedup.scala | 5 + .../GroupedImportsMergeRenames.scala | 7 + .../GroupedImportsMergeUnimports.scala | 6 + .../GroupedImportsMergeWildcard.scala | 7 + .../scala-3/test/organizeImports/Groups.scala | 11 + .../organizeImports/GroupsLongestMatch.scala | 14 + .../organizeImports/ImportsOrderKeep.scala | 12 + .../ImportsOrderSymbolsFirst.scala | 15 ++ .../MergeImportsFormatPreserving.scala | 7 + .../OrganizeImportsRootPackage.scala | 9 + .../nested/NestedPackage.scala | 12 + .../nested/NestedPackageWithBraces.scala | 12 + 52 files changed, 360 insertions(+), 108 deletions(-) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/CoalesceImportees.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/CurlyBracedSingleImportee.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/DeduplicateImportees.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/ExpandRelativeEmptyPackage.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/ExplodeImportsFormatPreserving.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsExplodeMixed.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsExplodeUnimport.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsMergeDedup.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsMergeRenames.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsMergeUnimports.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupedImportsMergeWildcard.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/Groups.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/GroupsLongestMatch.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/ImportsOrderKeep.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/ImportsOrderSymbolsFirst.scala (69%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/MergeImportsFormatPreserving.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/OrganizeImportsRootPackage.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/nested/NestedPackage.scala (100%) rename scalafix-tests/output/src/main/{scala => scala-2}/test/organizeImports/nested/NestedPackageWithBraces.scala (100%) create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImportees.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/CurlyBracedSingleImportee.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateImportees.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandRelativeEmptyPackage.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/ExplodeImportsFormatPreserving.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeMixed.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeUnimport.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeDedup.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeRenames.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeUnimports.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeWildcard.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/Groups.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupsLongestMatch.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderKeep.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderSymbolsFirst.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/MergeImportsFormatPreserving.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/OrganizeImportsRootPackage.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackage.scala create mode 100644 scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackageWithBraces.scala diff --git a/scalafix-rules/src/main/scala/scalafix/internal/rule/OrganizeImports.scala b/scalafix-rules/src/main/scala/scalafix/internal/rule/OrganizeImports.scala index 9abbb30158..6fc21ff1fd 100644 --- a/scalafix-rules/src/main/scala/scalafix/internal/rule/OrganizeImports.scala +++ b/scalafix-rules/src/main/scala/scalafix/internal/rule/OrganizeImports.scala @@ -5,6 +5,7 @@ import scala.collection.mutable import scala.collection.mutable.ArrayBuffer import scala.util.Try +import scala.meta.Dialect import scala.meta.Import import scala.meta.Importee import scala.meta.Importee.GivenAll @@ -28,6 +29,7 @@ import metaconfig.ConfEncoder import metaconfig.ConfOps import metaconfig.Configured import metaconfig.internal.ConfGet +import scalafix.internal.config.ScalaVersion import scalafix.internal.rule.ImportMatcher.* import scalafix.internal.rule.ImportMatcher.--- import scalafix.internal.rule.ImportMatcher.parse @@ -43,8 +45,10 @@ import scalafix.v1.SymbolInformation import scalafix.v1.XtensionSeqPatch import scalafix.v1.XtensionTreeScalafix -class OrganizeImports(config: OrganizeImportsConfig) - extends SemanticRule("OrganizeImports") { +class OrganizeImports( + config: OrganizeImportsConfig, + implicit val dialect: Dialect +) extends SemanticRule("OrganizeImports") { import OrganizeImports._ import ImportMatcher._ @@ -58,7 +62,7 @@ class OrganizeImports(config: OrganizeImportsConfig) private val diagnostics: ArrayBuffer[Diagnostic] = ArrayBuffer.empty[Diagnostic] - def this() = this(OrganizeImportsConfig()) + def this() = this(OrganizeImportsConfig(), Dialect.current) override def isLinter: Boolean = true @@ -564,7 +568,12 @@ class OrganizeImports(config: OrganizeImportsConfig) importer match { case Importer(_, Importee.Wildcard() :: Nil) => - syntax.patch(syntax.lastIndexOfSlice("._"), ".\u0001", 2) + val wildcardSyntax = Importee.Wildcard().syntax + syntax.patch( + syntax.lastIndexOfSlice(s".$wildcardSyntax"), + ".\u0001", + 2 + ) case _ if importer.isCurlyBraced => syntax @@ -685,6 +694,122 @@ class OrganizeImports(config: OrganizeImportsConfig) Patch.addLeft(token, indented mkString "\n") } + + private def prettyPrintImportGroup(group: Seq[Importer]): String = { + group + .map(i => "import " + importerSyntax(i)) + .mkString("\n") + } + + /** + * HACK: The Scalafix pretty-printer decides to add spaces after open and + * before close braces in imports with multiple importees, i.e., `import a.{ + * b, c }` instead of `import a.{b, c}`. On the other hand, renames are + * pretty-printed without the extra spaces, e.g., `import a.{b => c}`. This + * behavior is not customizable and makes ordering imports by ASCII order + * complicated. + * + * This function removes the unwanted spaces as a workaround. In cases where + * users do want the inserted spaces, Scalafmt should be used after running + * the `OrganizeImports` rule. + */ + private def importerSyntax(importer: Importer): String = + importer.pos match { + case pos: Position.Range => + // Position found, implies that `importer` was directly parsed from the source code. Use + // the original parsed text to preserve the original source level formatting, but patch + // importee that have specific Scala 3 syntax. + val syntax = new StringBuilder(pos.text) + def patchSyntax( + t: Tree, + newSyntax: String, + stripEnclosingBraces: Boolean = false + ) = { + val start = t.pos.start - pos.start + syntax.replace(start, t.pos.end - pos.start, newSyntax) + val end = t.pos.start - pos.start + newSyntax.length + + if (stripEnclosingBraces) + ( + syntax.take(start).lastIndexOf('{'), + syntax.indexOf('}', end) + ) match { + case (from, to) if from != -1 && to != -1 => + syntax.delete(end, to + 1) + syntax.delete(from, start) + case _ => + } + } + val Importer(_, importees) = importer + val optionalBraces = + importees.length == 1 && dialect.allowAsForImportRename + // traverse & patch backwards to avoid shifting indices + importees.reverse.foreach { + case i @ Importee.Rename(from, to) => + patchSyntax(i, i.copy().syntax, optionalBraces) + case i @ Importee.Unimport(name) => + patchSyntax(i, i.copy().syntax, optionalBraces) + case i @ Importee.Wildcard() => + patchSyntax(i, i.copy().syntax) + case _ => + } + syntax.toString + + case Position.None => + // Position not found, implies that `importer` is derived from certain existing import + // statement(s). Pretty-prints it. + val syntax = importer.syntax + + // NOTE: We need to check whether the input importer is curly braced first and then replace + // the first "{ " and the last " }" if any. Naive string replacement is insufficient, e.g., + // a quoted-identifier like "`{ d }`" may cause broken output. + (importer.isCurlyBraced, syntax lastIndexOfSlice " }") match { + case (_, -1) => + syntax + case (true, index) => + syntax.patch(index, "}", 2).replaceFirst("\\{ ", "{") + case _ => + syntax + } + } + + implicit private class ImporterExtension(importer: Importer) { + + /** Checks whether the `Importer` is curly-braced when pretty-printed. */ + def isCurlyBraced: Boolean = { + val importees @ Importees(_, renames, unimports, _, _, _) = + importer.importees + + importees.length > 1 || + ((renames.length == 1 || unimports.length == 1) && !dialect.allowAsForImportRename) + } + + /** + * Returns an `Importer` with all the `Importee`s that are selected from the + * input `Importer` and satisfy a predicate. If all the `Importee`s are + * selected, the input `Importer` instance is returned to preserve the + * original source level formatting. If none of the `Importee`s are + * selected, returns a `None`. + */ + def filterImportees(f: Importee => Boolean): Option[Importer] = { + val filtered = importer.importees filter f + if (filtered.length == importer.importees.length) Some(importer) + else if (filtered.isEmpty) None + else Some(importer.copy(importees = filtered)) + } + + /** Returns true if the `Importer` contains a standalone wildcard. */ + def hasWildcard: Boolean = { + val Importees(_, _, unimports, _, _, wildcard) = importer.importees + unimports.isEmpty && wildcard.nonEmpty + } + + /** Returns true if the `Importer` contains a standalone given wildcard. */ + def hasGivenAll: Boolean = { + val Importees(_, _, unimports, _, givenAll, _) = importer.importees + unimports.isEmpty && givenAll.nonEmpty + } + } } object OrganizeImports { @@ -717,8 +842,29 @@ object OrganizeImports { } } + // TODO: add an option to force a dialect with many tests + val maybeDialect = ScalaVersion.from(scalaVersion).map { scalaVersion => + def extractSuffixForScalacOption(prefix: String) = { + scalacOptions + .filter(_.startsWith(prefix)) + .lastOption + .map(_.stripPrefix(prefix)) + } + + // We only lookup the Scala 2 option (Scala 3 is `-source`), as the latest Scala 3 + // dialect is used no matter what the actual minor version is anyway, and as of now, + // the pretty printer is just more permissive with the latest dialect. + val sourceScalaVersion = + extractSuffixForScalacOption("-Xsource:") + .flatMap(ScalaVersion.from(_).toOption) + + scalaVersion.dialect(sourceScalaVersion) + } + if (!conf.removeUnused || hasWarnUnused) - Configured.ok(new OrganizeImports(conf)) + Configured.ok( + new OrganizeImports(conf, maybeDialect.getOrElse(Dialect.current)) + ) else if (hasCompilerSupport) Configured.error( "The Scala compiler option \"-Ywarn-unused\" is required to use OrganizeImports with" @@ -776,48 +922,6 @@ object OrganizeImports { } } - private def prettyPrintImportGroup(group: Seq[Importer]): String = - group - .map(i => "import " + importerSyntax(i)) - .mkString("\n") - - /** - * HACK: The Scalafix pretty-printer decides to add spaces after open and - * before close braces in imports with multiple importees, i.e., `import a.{ - * b, c }` instead of `import a.{b, c}`. On the other hand, renames are - * pretty-printed without the extra spaces, e.g., `import a.{b => c}`. This - * behavior is not customizable and makes ordering imports by ASCII order - * complicated. - * - * This function removes the unwanted spaces as a workaround. In cases where - * users do want the inserted spaces, Scalafmt should be used after running - * the `OrganizeImports` rule. - */ - private def importerSyntax(importer: Importer): String = - importer.pos match { - case pos: Position.Range => - // Position found, implies that `importer` was directly parsed from the source code. Returns - // the original parsed text to preserve the original source level formatting. - pos.text - - case Position.None => - // Position not found, implies that `importer` is derived from certain existing import - // statement(s). Pretty-prints it. - val syntax = importer.syntax - - // NOTE: We need to check whether the input importer is curly braced first and then replace - // the first "{ " and the last " }" if any. Naive string replacement is insufficient, e.g., - // a quoted-identifier like "`{ d }`" may cause broken output. - (importer.isCurlyBraced, syntax lastIndexOfSlice " }") match { - case (_, -1) => - syntax - case (true, index) => - syntax.patch(index, "}", 2).replaceFirst("\\{ ", "{") - case _ => - syntax - } - } - @tailrec private def topQualifierOf(term: Term): Term.Name = term match { case Term.Select(qualifier, _) => topQualifierOf(qualifier) @@ -908,11 +1012,11 @@ object OrganizeImports { * Categorizes a list of `Importee`s into the following four groups: * * - Names, e.g., `Seq`, `Option`, etc. - * - Renames, e.g., `{Long => JLong}`, `{Duration => D}`, etc. - * - Unimports, e.g., `{Foo => _}`. + * - Renames, e.g., `{Long => JLong}`, `Duration as D`, etc. + * - Unimports, e.g., `{Foo => _}` or `Foo as _`. * - Givens, e.g., `{given Foo}`. * - GivenAll, i.e., `given`. - * - Wildcard, i.e., `_`. + * - Wildcard, i.e., `_` or `*`. */ object Importees { def unapply(importees: Seq[Importee]): Option[ @@ -967,40 +1071,4 @@ object OrganizeImports { def infoNoThrow(implicit doc: SemanticDocument): Option[SymbolInformation] = Try(symbol.info).toOption.flatten } - - implicit private class ImporterExtension(importer: Importer) { - - /** Checks whether the `Importer` is curly-braced when pretty-printed. */ - def isCurlyBraced: Boolean = { - val importees @ Importees(_, renames, unimports, _, _, _) = - importer.importees - renames.nonEmpty || unimports.nonEmpty || importees.length > 1 - } - - /** - * Returns an `Importer` with all the `Importee`s that are selected from the - * input `Importer` and satisfy a predicate. If all the `Importee`s are - * selected, the input `Importer` instance is returned to preserve the - * original source level formatting. If none of the `Importee`s are - * selected, returns a `None`. - */ - def filterImportees(f: Importee => Boolean): Option[Importer] = { - val filtered = importer.importees filter f - if (filtered.length == importer.importees.length) Some(importer) - else if (filtered.isEmpty) None - else Some(importer.copy(importees = filtered)) - } - - /** Returns true if the `Importer` contains a standalone wildcard. */ - def hasWildcard: Boolean = { - val Importees(_, _, unimports, _, _, wildcard) = importer.importees - unimports.isEmpty && wildcard.nonEmpty - } - - /** Returns true if the `Importer` contains a standalone given wildcard. */ - def hasGivenAll: Boolean = { - val Importees(_, _, unimports, _, givenAll, _) = importer.importees - unimports.isEmpty && givenAll.nonEmpty - } - } } diff --git a/scalafix-tests/input/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala b/scalafix-tests/input/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala index f34b71897c..98cdcd57b1 100644 --- a/scalafix-tests/input/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala +++ b/scalafix-tests/input/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala @@ -5,14 +5,14 @@ OrganizeImports.groupedImports = Merge */ package test.organizeImports -import test.organizeImports.GivenImports._ -import test.organizeImports.GivenImports.{alpha => _, given} +import test.organizeImports.GivenImports.* +import test.organizeImports.GivenImports.{alpha as _, given} import test.organizeImports.GivenImports.{given Beta} -import test.organizeImports.GivenImports.{gamma => _, given} +import test.organizeImports.GivenImports.{gamma as _, given} import test.organizeImports.GivenImports.{given Zeta} -import test.organizeImports.GivenImports2.{alpha => _} -import test.organizeImports.GivenImports2.{beta => _} +import test.organizeImports.GivenImports2.{alpha as _} +import test.organizeImports.GivenImports2.{beta as _} import test.organizeImports.GivenImports2.{given Gamma} import test.organizeImports.GivenImports2.{given Zeta} diff --git a/scalafix-tests/input/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala b/scalafix-tests/input/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala index 179b9c68a7..4cf6de3efa 100644 --- a/scalafix-tests/input/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala +++ b/scalafix-tests/input/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala @@ -7,6 +7,6 @@ OrganizeImports.groupedImports = Explode package test.organizeImports import test.organizeImports.ExplodeImports.FormatPreserving.g1.{ a, b } -import test.organizeImports.ExplodeImports.FormatPreserving.g2.{ c => C, _ } +import test.organizeImports.ExplodeImports.FormatPreserving.g2.{ c => C, _ } object ExplodeImportsFormatPreserving diff --git a/scalafix-tests/input/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala b/scalafix-tests/input/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala index ee3b2db00b..014f34dfce 100644 --- a/scalafix-tests/input/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala +++ b/scalafix-tests/input/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala @@ -14,7 +14,10 @@ import scala.concurrent._ import scala.concurrent.duration import scala.concurrent.{Promise, Future} +import test.organizeImports.QuotedIdent.{`a.b` => ab} import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.e +import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.{ e => E } +import test.organizeImports.QuotedIdent.`a.b` import test.organizeImports.QuotedIdent.`a.b`.{c => _, _} import test.organizeImports.QuotedIdent._ diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/CoalesceImportees.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/CoalesceImportees.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/CoalesceImportees.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/CoalesceImportees.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/CurlyBracedSingleImportee.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/CurlyBracedSingleImportee.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/CurlyBracedSingleImportee.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/CurlyBracedSingleImportee.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/DeduplicateImportees.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/DeduplicateImportees.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/DeduplicateImportees.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/DeduplicateImportees.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/ExpandRelativeEmptyPackage.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/ExpandRelativeEmptyPackage.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/ExpandRelativeEmptyPackage.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/ExpandRelativeEmptyPackage.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/ExplodeImportsFormatPreserving.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/ExplodeImportsFormatPreserving.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/ExplodeImportsFormatPreserving.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsExplodeMixed.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsExplodeMixed.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsExplodeMixed.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsExplodeMixed.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsExplodeUnimport.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsExplodeUnimport.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsExplodeUnimport.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsExplodeUnimport.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeDedup.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeDedup.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeDedup.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeDedup.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeRenames.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeRenames.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeRenames.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeRenames.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeUnimports.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeUnimports.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeUnimports.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeUnimports.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeWildcard.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeWildcard.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupedImportsMergeWildcard.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupedImportsMergeWildcard.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/Groups.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/Groups.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/Groups.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/Groups.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/GroupsLongestMatch.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupsLongestMatch.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/GroupsLongestMatch.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/GroupsLongestMatch.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/ImportsOrderKeep.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/ImportsOrderKeep.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/ImportsOrderKeep.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/ImportsOrderKeep.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/ImportsOrderSymbolsFirst.scala similarity index 69% rename from scalafix-tests/output/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/ImportsOrderSymbolsFirst.scala index 5bd3317c06..35b7e1d52d 100644 --- a/scalafix-tests/output/src/main/scala/test/organizeImports/ImportsOrderSymbolsFirst.scala +++ b/scalafix-tests/output/src/main/scala-2/test/organizeImports/ImportsOrderSymbolsFirst.scala @@ -1,7 +1,10 @@ package test.organizeImports import test.organizeImports.QuotedIdent._ +import test.organizeImports.QuotedIdent.{`a.b` => ab} +import test.organizeImports.QuotedIdent.`a.b` import test.organizeImports.QuotedIdent.`a.b`.{c => _, _} +import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.{ e => E } import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.e import scala.concurrent._ diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/MergeImportsFormatPreserving.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/MergeImportsFormatPreserving.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/MergeImportsFormatPreserving.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/MergeImportsFormatPreserving.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/OrganizeImportsRootPackage.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/OrganizeImportsRootPackage.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/OrganizeImportsRootPackage.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/OrganizeImportsRootPackage.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/nested/NestedPackage.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/nested/NestedPackage.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/nested/NestedPackage.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/nested/NestedPackage.scala diff --git a/scalafix-tests/output/src/main/scala/test/organizeImports/nested/NestedPackageWithBraces.scala b/scalafix-tests/output/src/main/scala-2/test/organizeImports/nested/NestedPackageWithBraces.scala similarity index 100% rename from scalafix-tests/output/src/main/scala/test/organizeImports/nested/NestedPackageWithBraces.scala rename to scalafix-tests/output/src/main/scala-2/test/organizeImports/nested/NestedPackageWithBraces.scala diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImportees.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImportees.scala new file mode 100644 index 0000000000..51fb1f21b1 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImportees.scala @@ -0,0 +1,8 @@ +package test.organizeImports + +import scala.collection.immutable.{Map, Seq, Vector} +import scala.collection.mutable.* +import scala.concurrent.{Channel as Ch, *} +import scala.util.{Random as _, *} + +object CoalesceImportees diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesGivensAndNames.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesGivensAndNames.scala index e9530cea6c..9cd0877978 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesGivensAndNames.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesGivensAndNames.scala @@ -1,6 +1,6 @@ package test.organizeImports -import test.organizeImports.Givens._ -import test.organizeImports.Givens.{B => B1, C => _, _, given} +import test.organizeImports.Givens.* +import test.organizeImports.Givens.{B as B1, C as _, *, given} object CoalesceImporteesGivensAndNames diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivens.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivens.scala index b5bbceec91..851e4a8d90 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivens.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivens.scala @@ -1,5 +1,5 @@ package test.organizeImports -import test.organizeImports.Givens.{C => C1, _} +import test.organizeImports.Givens.{C as C1, *} object CoalesceImporteesNoGivens diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivensNoNames.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivensNoNames.scala index 7d44019695..e3085049c9 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivensNoNames.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoGivensNoNames.scala @@ -1,5 +1,5 @@ package test.organizeImports -import test.organizeImports.Givens.{A => A1, B => _, _} +import test.organizeImports.Givens.{A as A1, B as _, *} object CoalesceImporteesNoGivensNoNames diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoNames.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoNames.scala index c6a2d29400..147685d254 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoNames.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CoalesceImporteesNoNames.scala @@ -1,6 +1,6 @@ package test.organizeImports -import test.organizeImports.Givens._ -import test.organizeImports.Givens.{A => A1, given} +import test.organizeImports.Givens.* +import test.organizeImports.Givens.{A as A1, given} object CoalesceImporteesNoNames diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/CurlyBracedSingleImportee.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CurlyBracedSingleImportee.scala new file mode 100644 index 0000000000..83839871ed --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/CurlyBracedSingleImportee.scala @@ -0,0 +1,6 @@ +package test.organizeImports + +import scala.collection.Map +import scala.collection.Set as ImmutableSet + +object CurlyBracedSingleImportee diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateGivenImportees.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateGivenImportees.scala index 67b6cb5c4e..7ce77bd267 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateGivenImportees.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateGivenImportees.scala @@ -1,6 +1,6 @@ package test.organizeImports -import test.organizeImports.Givens._ +import test.organizeImports.Givens.* import test.organizeImports.Givens.given A import test.organizeImports.Givens.given B import test.organizeImports.Givens.given C diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateImportees.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateImportees.scala new file mode 100644 index 0000000000..f2a0092001 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/DeduplicateImportees.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import scala.collection.immutable.Map as Dict +import scala.collection.immutable.Vector +import scala.collection.immutable.{Set as _, *} + +object DeduplicateImportees diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandRelativeEmptyPackage.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandRelativeEmptyPackage.scala new file mode 100644 index 0000000000..d6e6600917 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandRelativeEmptyPackage.scala @@ -0,0 +1,14 @@ +import P.* +import Q.* +import Q.x + +object P { + object x +} + +object Q { + object x + object y +} + +object ExpandRelativeEmptyPackage diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandUnimportGiven.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandUnimportGiven.scala index 132be5915a..df538e1813 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandUnimportGiven.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExpandUnimportGiven.scala @@ -2,9 +2,9 @@ package test.organizeImports import test.organizeImports.GivenImports.Alpha import test.organizeImports.GivenImports.Beta +import test.organizeImports.GivenImports.alpha as _ import test.organizeImports.GivenImports.given Alpha -import test.organizeImports.GivenImports.{alpha => _} -import test.organizeImports.GivenImports.{beta => _, given} +import test.organizeImports.GivenImports.{beta as _, given} import scala.util.Either diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExplodeImportsFormatPreserving.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExplodeImportsFormatPreserving.scala new file mode 100644 index 0000000000..8d5d0fc472 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ExplodeImportsFormatPreserving.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import test.organizeImports.ExplodeImports.FormatPreserving.g1.a +import test.organizeImports.ExplodeImports.FormatPreserving.g1.b +import test.organizeImports.ExplodeImports.FormatPreserving.g2.{ c as C, * } + +object ExplodeImportsFormatPreserving diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala index 4a1a27b267..a6856a8d8d 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedGivenImportsMergeUnimports.scala @@ -1,8 +1,8 @@ package test.organizeImports -import test.organizeImports.GivenImports._ -import test.organizeImports.GivenImports.{gamma => _, given Beta, given Zeta, given} -import test.organizeImports.GivenImports2.{alpha => _, beta => _} +import test.organizeImports.GivenImports.* +import test.organizeImports.GivenImports.{gamma as _, given Beta, given Zeta, given} +import test.organizeImports.GivenImports2.{alpha as _, beta as _} import test.organizeImports.GivenImports2.{given Gamma, given Zeta} object GroupedGivenImportsMergeUnimports diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeGivenAll.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeGivenAll.scala index 2c5436cc02..a6be3f3f7b 100644 --- a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeGivenAll.scala +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeGivenAll.scala @@ -1,10 +1,10 @@ package test.organizeImports -import test.organizeImports.GivenImports._ +import test.organizeImports.GivenImports.* import test.organizeImports.GivenImports.given -import test.organizeImports.MergeImports.Wildcard1._ -import test.organizeImports.MergeImports.Wildcard1.{b => B} -import test.organizeImports.MergeImports.Wildcard2._ +import test.organizeImports.MergeImports.Wildcard1.* +import test.organizeImports.MergeImports.Wildcard1.b as B +import test.organizeImports.MergeImports.Wildcard2.* object GroupedImportsAggressiveMergeGivenAll diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala new file mode 100644 index 0000000000..c8e490dd3a --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsAggressiveMergeWildcard.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.Wildcard1.* +import test.organizeImports.MergeImports.Wildcard1.b as B +import test.organizeImports.MergeImports.Wildcard2.* + +object GroupedImportsAggressiveMergeWildcard diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeMixed.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeMixed.scala new file mode 100644 index 0000000000..8e46fb80a9 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeMixed.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import scala.collection.immutable.* +import scala.collection.mutable.Map +import scala.collection.mutable.{Buffer as _, Seq as S, *} + +object GroupedImportsExplodeMixed diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeUnimport.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeUnimport.scala new file mode 100644 index 0000000000..777a49fdd0 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsExplodeUnimport.scala @@ -0,0 +1,5 @@ +package test.organizeImports + +import scala.collection.{Seq as _, *} + +object GroupedImportExplodeUnimport diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeDedup.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeDedup.scala new file mode 100644 index 0000000000..ce51ff68f0 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeDedup.scala @@ -0,0 +1,5 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.Dedup.{a, b as b1, c as _} + +object GroupedImportsMergeDedup diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeRenames.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeRenames.scala new file mode 100644 index 0000000000..d50ab9199a --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeRenames.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.Rename1.{a as A, b as B, c, d} +import test.organizeImports.MergeImports.Rename2.{a as A, b as B, c} +import test.organizeImports.MergeImports.Rename2.{a, b} + +object GroupedImportsMergeRenames diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeUnimports.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeUnimports.scala new file mode 100644 index 0000000000..27cb850b09 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeUnimports.scala @@ -0,0 +1,6 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.Unimport1.{b as B, c as _, d, *} +import test.organizeImports.MergeImports.Unimport2.{a as _, b as _, c as C, d} + +object GroupedImportsMergeUnimports diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeWildcard.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeWildcard.scala new file mode 100644 index 0000000000..ddf2795236 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupedImportsMergeWildcard.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.Wildcard1.b as B +import test.organizeImports.MergeImports.Wildcard1.{d, *} +import test.organizeImports.MergeImports.Wildcard2.{a, b, *} + +object GroupedImportsMergeWildcard diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/Groups.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/Groups.scala new file mode 100644 index 0000000000..8cefa0c28c --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/Groups.scala @@ -0,0 +1,11 @@ +package test.organizeImports + +import java.time.Clock +import javax.net.ssl + +import sun.misc.Unsafe + +import scala.collection.JavaConverters.* +import scala.concurrent.ExecutionContext + +object Groups diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupsLongestMatch.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupsLongestMatch.scala new file mode 100644 index 0000000000..fe65c4fd14 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/GroupsLongestMatch.scala @@ -0,0 +1,14 @@ +package test.organizeImports + +import java.time.Clock +import javax.net.ssl + +import scala.collection.JavaConverters.* +import scala.concurrent.ExecutionContext + +import scala.util.Random +import scala.util.control.NonFatal + +import sun.misc.Unsafe + +object GroupsLongestMatch diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderKeep.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderKeep.scala new file mode 100644 index 0000000000..ce414ea894 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderKeep.scala @@ -0,0 +1,12 @@ +package test.organizeImports + +import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.e +import test.organizeImports.QuotedIdent.* +import test.organizeImports.QuotedIdent.`a.b`.{c as _, *} + +import scala.concurrent.ExecutionContext.Implicits.* +import scala.concurrent.duration +import scala.concurrent.* +import scala.concurrent.{Promise, Future} + +object ImportsOrderKeep diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderSymbolsFirst.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderSymbolsFirst.scala new file mode 100644 index 0000000000..fcb1f004bb --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/ImportsOrderSymbolsFirst.scala @@ -0,0 +1,15 @@ +package test.organizeImports + +import test.organizeImports.QuotedIdent.* +import test.organizeImports.QuotedIdent.`a.b` +import test.organizeImports.QuotedIdent.`a.b` as ab +import test.organizeImports.QuotedIdent.`a.b`.{c as _, *} +import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.e +import test.organizeImports.QuotedIdent.`a.b`.`{ d }`.e as E + +import scala.concurrent.* +import scala.concurrent.{Promise, Future} +import scala.concurrent.ExecutionContext.Implicits.* +import scala.concurrent.duration + +object ImportsOrderSymbolsFirst diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/MergeImportsFormatPreserving.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/MergeImportsFormatPreserving.scala new file mode 100644 index 0000000000..138bc4c3cf --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/MergeImportsFormatPreserving.scala @@ -0,0 +1,7 @@ +package test.organizeImports + +import test.organizeImports.MergeImports.FormatPreserving.g1.{ a, b } +import test.organizeImports.MergeImports.FormatPreserving.g2.* +import test.organizeImports.MergeImports.FormatPreserving.g2.d as D + +object MergeImportsFormatPreserving diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/OrganizeImportsRootPackage.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/OrganizeImportsRootPackage.scala new file mode 100644 index 0000000000..52db350ccd --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/OrganizeImportsRootPackage.scala @@ -0,0 +1,9 @@ +import java.time.Clock +import javax.net.ssl + +import sun.misc.Unsafe + +import scala.collection.JavaConverters.* +import scala.concurrent.ExecutionContext + +object OrganizeImportsRootPackage diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackage.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackage.scala new file mode 100644 index 0000000000..6e698e0370 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackage.scala @@ -0,0 +1,12 @@ +package test.organizeImports +package nested + +import java.time.Clock +import javax.net.ssl + +import sun.misc.Unsafe + +import scala.collection.JavaConverters.* +import scala.concurrent.ExecutionContext + +object OrganizeImportsNestedPackage diff --git a/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackageWithBraces.scala b/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackageWithBraces.scala new file mode 100644 index 0000000000..5e02f8e371 --- /dev/null +++ b/scalafix-tests/output/src/main/scala-3/test/organizeImports/nested/NestedPackageWithBraces.scala @@ -0,0 +1,12 @@ +package test.organizeImports { + package nested { + import sun.misc.Unsafe + + import java.time.Clock + import javax.net.ssl + import scala.collection.JavaConverters.* + import scala.concurrent.ExecutionContext + + object NestedPackageWithBraces + } +}