diff --git a/.scalafmt.conf b/.scalafmt.conf index b06d462c..f5360c13 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,23 +1,16 @@ -version = "3.0.8" +version = "3.3.1" +runner.dialect = scala213 maxColumn = 120 align.preset = most align.multiline = false continuationIndent.defnSite = 2 assumeStandardLibraryStripMargin = true docstrings.style = Asterisk -lineEndings = preserve includeCurlyBraceInSelectChains = false -danglingParentheses.preset = true -spaces { - inImportCurlyBraces = true -} -optIn.annotationNewlines = true -newlines.alwaysBeforeMultilineDef = false -optIn.configStyleArguments = false -runner.optimizer.forceConfigStyleMinArgCount = 4 +danglingParentheses.defnSite = false +danglingParentheses.callSite = false newlines.implicitParamListModifierPrefer = before - -rewrite.rules = [RedundantBraces] +rewrite.rules = [RedundantBraces, AvoidInfix, SortModifiers] project.excludeFilters = [ "input/", @@ -26,5 +19,4 @@ project.excludeFilters = [ "scalafix/output" ] -rewrite.redundantBraces.generalExpressions = false project.git = true \ No newline at end of file diff --git a/migrate/src/main/scala/migrate/Scala3Migrate.scala b/migrate/src/main/scala/migrate/Scala3Migrate.scala index e44dd453..c5bad230 100644 --- a/migrate/src/main/scala/migrate/Scala3Migrate.scala +++ b/migrate/src/main/scala/migrate/Scala3Migrate.scala @@ -189,8 +189,7 @@ object Scala3Migrate { } val allParsedLibs = libsCompatibleWith213.values.flatten.toSeq val filteredLibs = allParsedLibs.filterNot(l => - InitialLib.filteredLibs.exists { case (org, name) => org == l.organization && name == l.name } - ) + InitialLib.filteredLibs.exists { case (org, name) => org == l.organization && name == l.name }) MigratedLibsImpl.from(filteredLibs.map(lib => (lib, lib.toCompatible)).toMap) } diff --git a/migrate/src/main/scala/migrate/interfaces/MigrateImpl.scala b/migrate/src/main/scala/migrate/interfaces/MigrateImpl.scala index 63b30e40..a8e1a208 100644 --- a/migrate/src/main/scala/migrate/interfaces/MigrateImpl.scala +++ b/migrate/src/main/scala/migrate/interfaces/MigrateImpl.scala @@ -1,7 +1,7 @@ package migrate.interfaces import java.nio.file.Path -import java.{ util => jutil } +import java.{util => jutil} import scala.jdk.CollectionConverters._ diff --git a/migrate/src/main/scala/migrate/interfaces/MigratedLibsImpl.scala b/migrate/src/main/scala/migrate/interfaces/MigratedLibsImpl.scala index 76c6a93f..ed45e29b 100644 --- a/migrate/src/main/scala/migrate/interfaces/MigratedLibsImpl.scala +++ b/migrate/src/main/scala/migrate/interfaces/MigratedLibsImpl.scala @@ -1,6 +1,6 @@ package migrate.interfaces -import java.{ util => jutil } +import java.{util => jutil} import scala.jdk.CollectionConverters._ @@ -31,7 +31,7 @@ case class MigratedLibsImpl( compatible match { case keptInitialLib: CompatibleWithScala3.Lib => initialLib.crossVersion == keptInitialLib.crossVersion && - initialLib.revision == keptInitialLib.revision + initialLib.revision == keptInitialLib.revision case _ => false } diff --git a/migrate/src/main/scala/migrate/interfaces/MigratedScalacOptions.scala b/migrate/src/main/scala/migrate/interfaces/MigratedScalacOptions.scala index a33bcdb7..51da12ca 100644 --- a/migrate/src/main/scala/migrate/interfaces/MigratedScalacOptions.scala +++ b/migrate/src/main/scala/migrate/interfaces/MigratedScalacOptions.scala @@ -1,6 +1,6 @@ package migrate.interfaces -import java.{ util => ju } +import java.{util => ju} import scala.jdk.CollectionConverters._ diff --git a/migrate/src/main/scala/migrate/internal/FileMigration.scala b/migrate/src/main/scala/migrate/internal/FileMigration.scala index 905a0ae3..a29fd946 100644 --- a/migrate/src/main/scala/migrate/internal/FileMigration.scala +++ b/migrate/src/main/scala/migrate/internal/FileMigration.scala @@ -54,7 +54,7 @@ private[migrate] class FileMigration(fileToMigrate: FileMigrationState.Initial, // We first try to remove all candidates val initialStep = CompilationStep(kept = Seq.empty, removed = candidates, necessary = None) - loopUntilCompile(Success(initialStep)) map { case CompilationStep(kept, _, necessary) => + loopUntilCompile(Success(initialStep)).map { case CompilationStep(kept, _, necessary) => CompilingState(kept, necessaryPatches ++ necessary) } } diff --git a/migrate/src/main/scala/migrate/internal/InitialLib.scala b/migrate/src/main/scala/migrate/internal/InitialLib.scala index 5693f3f0..0ee4c6ce 100644 --- a/migrate/src/main/scala/migrate/internal/InitialLib.scala +++ b/migrate/src/main/scala/migrate/internal/InitialLib.scala @@ -156,7 +156,7 @@ object InitialLib { (Organization("org.scalameta"), Name("semanticdb-scalac")) -> Specific3.SemanticDB ) - val macroLibs: Set[(Organization, Name)] = { + val macroLibs: Set[(Organization, Name)] = // need to complete the list // the other solution would be to download the src-jar and look for =\w*macro\w Set( @@ -197,7 +197,6 @@ object InitialLib { Organization("dev.zio") -> Name("zio-macros-core"), Organization("com.michaelpollmeier") -> Name("macros") ) - } // Those libs are correctly handled by sbt or scalajs plugin // Showing them would confuse the user. diff --git a/migrate/src/main/scala/migrate/utils/ScalafixService.scala b/migrate/src/main/scala/migrate/utils/ScalafixService.scala index de7c2c53..f042a395 100644 --- a/migrate/src/main/scala/migrate/utils/ScalafixService.scala +++ b/migrate/src/main/scala/migrate/utils/ScalafixService.scala @@ -35,10 +35,9 @@ final case class ScalafixService( if (oneFile.isSuccessful) { oneFile.previewPatchesAsUnifiedDiff().asScala match { case None => scribe.debug(s"Nothing to fix in $absPath)") - case Some(_) => { + case Some(_) => oneFile.applyPatches() scribe.info(s"Syntax fixed for $absPath)") - } } } else { val errorMsg = oneFile.getErrorMessage.asScala.getOrElse("Unknown Error") diff --git a/plugin/src/main/scala/migrate/LibsMigration.scala b/plugin/src/main/scala/migrate/LibsMigration.scala index 57905d77..4176f19f 100644 --- a/plugin/src/main/scala/migrate/LibsMigration.scala +++ b/plugin/src/main/scala/migrate/LibsMigration.scala @@ -1,15 +1,15 @@ package migrate -import ScalaMigratePlugin.{ migrateAPI, scala3Version } +import ScalaMigratePlugin.{migrateAPI, scala3Version} import ScalaMigratePlugin.Keys._ import Messages._ import interfaceImpl.LibImpl -import migrate.interfaces.{ Lib, MigratedLib, MigratedLibs } +import migrate.interfaces.{Lib, MigratedLib, MigratedLibs} import sbt.Keys._ import sbt._ import scala.io.AnsiColor._ -import scala.util.{ Failure, Success, Try } +import scala.util.{Failure, Success, Try} import scala.collection.JavaConverters._ private[migrate] object LibsMigration { @@ -79,11 +79,12 @@ private[migrate] object LibsMigration { val spacesForHelp = computeLongestValue(Seq(removedSign, validSign, toBeUpdated)) - val help = s""" - |${formatValueWithSpace(removedSign, spacesForHelp)} $RED: Cannot be updated to scala 3$RESET - |${formatValueWithSpace(validSign, spacesForHelp)} $CYAN: Already a valid version for Scala 3$RESET - |${formatValueWithSpace(toBeUpdated, spacesForHelp)} $BLUE: Need to be updated to the following version$RESET - |""".stripMargin + val help = + s""" + |${formatValueWithSpace(removedSign, spacesForHelp)} $RED: Cannot be updated to scala 3$RESET + |${formatValueWithSpace(validSign, spacesForHelp)} $CYAN: Already a valid version for Scala 3$RESET + |${formatValueWithSpace(toBeUpdated, spacesForHelp)} $BLUE: Need to be updated to the following version$RESET + |""".stripMargin Seq(help, formatIncompatibleLibs, formatValid, formatLibToUpdate) .filterNot(_.isEmpty) diff --git a/plugin/src/main/scala/migrate/ScalacOptionsMigration.scala b/plugin/src/main/scala/migrate/ScalacOptionsMigration.scala index c4f532c0..61e0f729 100644 --- a/plugin/src/main/scala/migrate/ScalacOptionsMigration.scala +++ b/plugin/src/main/scala/migrate/ScalacOptionsMigration.scala @@ -79,6 +79,7 @@ private[migrate] object ScalacOptionsMigration { private val pluginSign = s"""${BOLD}${CYAN}Plugin${RESET}""" private val spacesHelp = computeLongestValue(Seq(removedSign, renamedSign, sameSign, pluginSign)) + // format: off private val help = s""" |${formatValueWithSpace(removedSign, spacesHelp)} $RED: the option is not available is Scala 3$RESET @@ -87,6 +88,7 @@ private[migrate] object ScalacOptionsMigration { |${formatValueWithSpace(pluginSign, spacesHelp)} $CYAN: the option is related to a plugin, previously handled by migrate-libs$RESET | |""".stripMargin + // format: on private def message( removed: Seq[String], diff --git a/plugin/src/main/scala/migrate/SyntaxMigration.scala b/plugin/src/main/scala/migrate/SyntaxMigration.scala index 10f4032c..781497c8 100644 --- a/plugin/src/main/scala/migrate/SyntaxMigration.scala +++ b/plugin/src/main/scala/migrate/SyntaxMigration.scala @@ -8,7 +8,7 @@ import sbt.Keys._ import sbt._ import scala.io.AnsiColor._ -import scala.util.{ Try, Success, Failure } +import scala.util.{Try, Success, Failure} import scala.collection.JavaConverters._ private[migrate] object SyntaxMigration { diff --git a/plugin/src/main/scala/migrate/TypeInferenceMigration.scala b/plugin/src/main/scala/migrate/TypeInferenceMigration.scala index daaca3d5..19ade704 100644 --- a/plugin/src/main/scala/migrate/TypeInferenceMigration.scala +++ b/plugin/src/main/scala/migrate/TypeInferenceMigration.scala @@ -1,13 +1,13 @@ package migrate import migrate.interfaces.CompilationException -import ScalaMigratePlugin.{ Keys, inputsStore, migrateAPI, scala3Version } -import migrate.TypeInferenceMigration.{ errorMessage, successMessage } +import ScalaMigratePlugin.{Keys, inputsStore, migrateAPI, scala3Version} +import migrate.TypeInferenceMigration.{errorMessage, successMessage} import sbt.Keys._ import sbt._ import scala.io.AnsiColor._ -import scala.util.{ Failure, Success, Try } +import scala.util.{Failure, Success, Try} import scala.collection.JavaConverters._ import java.nio.file.Files diff --git a/scalafix/rules/src/main/scala/migrate/ExplicitImplicitsRule.scala b/scalafix/rules/src/main/scala/migrate/ExplicitImplicitsRule.scala index a359aa5d..8937f553 100644 --- a/scalafix/rules/src/main/scala/migrate/ExplicitImplicitsRule.scala +++ b/scalafix/rules/src/main/scala/migrate/ExplicitImplicitsRule.scala @@ -88,10 +88,9 @@ class ExplicitImplicitsRule[G <: Global](g: G) { // at the same position we are supposed to have maximum one ApplyToImplicitArgs // except it there is also an implicit conversion that takes implicits. // See Mix.scala example - case g.Apply(fun, args) if !fun.isInstanceOf[g.ApplyImplicitView] => { + case g.Apply(fun, args) if !fun.isInstanceOf[g.ApplyImplicitView] => val listOfArgs = args.map(_.symbol.asInstanceOf[g.Symbol]) (fun, listOfArgs) - } } } @@ -104,7 +103,7 @@ class ExplicitImplicitsRule[G <: Global](g: G) { // we don't wont to handle this rewrite. case g.Apply(g.Apply(_, _), _) if original.isInstanceOf[Name] || original.isInstanceOf[Term.Select] => None - case g.Apply(_, args) if original.isInstanceOf[Name] || original.isInstanceOf[Term.Select] => { + case g.Apply(_, args) if original.isInstanceOf[Name] || original.isInstanceOf[Term.Select] => val isTermEta = original.parent.exists(_.isInstanceOf[Term.Eta]) val etaExpansionArgs = (1 to args.size).map(_ => "_") if (isTermEta) { @@ -120,7 +119,6 @@ class ExplicitImplicitsRule[G <: Global](g: G) { Patch .addRight(original, s"(${etaExpansionArgs.mkString(", ")})" + "(" + implicitsParams.mkString(", ") + ")") ) - } case _ => Some(Patch.addRight(original, "(" + implicitsParams.mkString(", ") + ")")) } } diff --git a/scalafix/rules/src/main/scala/migrate/InferTypes.scala b/scalafix/rules/src/main/scala/migrate/InferTypes.scala index 4c3154e4..d4ea113b 100644 --- a/scalafix/rules/src/main/scala/migrate/InferTypes.scala +++ b/scalafix/rules/src/main/scala/migrate/InferTypes.scala @@ -26,9 +26,8 @@ class InferTypes[G <: Global](g: G) { private def addExplicitResultType()(implicit doc: SemanticDocument, compilerSrv: CompilerService[g.type]): Patch = doc.tree.collect { - case t @ Defn.Val(_, Pat.Var(name) :: Nil, None, body) => { + case t @ Defn.Val(_, Pat.Var(name) :: Nil, None, body) => fixDefinition(t, name, body) - } case t @ Defn.Var(_, Pat.Var(name) :: Nil, None, Some(body)) => fixDefinition(t, name, body) diff --git a/scalafix/rules/src/main/scala/migrate/MigrateRule.scala b/scalafix/rules/src/main/scala/migrate/MigrateRule.scala index 18dc4790..0cd1d658 100644 --- a/scalafix/rules/src/main/scala/migrate/MigrateRule.scala +++ b/scalafix/rules/src/main/scala/migrate/MigrateRule.scala @@ -40,7 +40,7 @@ class MigrateRule(g: Global) extends SemanticRule("MigrationRule") { } override def fix(implicit doc: SemanticDocument): Patch = { - lazy implicit val compilerService: CompilerService[g.type] = new CompilerService(g, doc) + implicit lazy val compilerService: CompilerService[g.type] = new CompilerService(g, doc) val inferType = new InferTypes[g.type](g) val explicitImplicit = new ExplicitImplicitsRule[g.type](g) diff --git a/scalafix/rules/src/main/scala/utils/CompilerService.scala b/scalafix/rules/src/main/scala/utils/CompilerService.scala index 232c3f6b..f2780009 100644 --- a/scalafix/rules/src/main/scala/utils/CompilerService.scala +++ b/scalafix/rules/src/main/scala/utils/CompilerService.scala @@ -3,7 +3,7 @@ package utils import java.io.File import scala.reflect.internal.util.SourceFile -import scala.reflect.internal.util.{ Position => ReflectPos } +import scala.reflect.internal.util.{Position => ReflectPos} import scala.reflect.io.VirtualDirectory import scala.tools.nsc.Settings import scala.tools.nsc.interactive.Global diff --git a/scalafix/rules/src/main/scala/utils/PrettyPrinter.scala b/scalafix/rules/src/main/scala/utils/PrettyPrinter.scala index 2c8175ba..e5e0df96 100644 --- a/scalafix/rules/src/main/scala/utils/PrettyPrinter.scala +++ b/scalafix/rules/src/main/scala/utils/PrettyPrinter.scala @@ -2,7 +2,7 @@ package scala.meta.internal.pc import scala.collection.mutable.ListBuffer import scala.tools.nsc.interactive.Global -import scala.{ meta => m } +import scala.{meta => m} import utils.ScalaExtensions.TraversableOnceOptionExtension @@ -15,7 +15,7 @@ class PrettyPrinter[G <: Global](val g: G) { if (filterType(t)) None else { t match { - case TypeRef(pre, sym, args) => { + case TypeRef(pre, sym, args) => if (sym.isExistentialSkolem) None else { val lookUp = context.lookupSymbol(sym.name, _ => true) @@ -24,14 +24,12 @@ class PrettyPrinter[G <: Global](val g: G) { argsOpt.map(a => TypeRef(g.NoPrefix, sym, a)) } else argsOpt.map(a => TypeRef(loop(pre).get, sym, a)) } - } - case SingleType(pre, sym) => { + case SingleType(pre, sym) => val lookUp = context.lookupSymbol(sym.name, _ => true) if (isTheSameSymbol(sym, lookUp, pre)) Some(SingleType(NoPrefix, sym)) else Some(SingleType(loop(pre).get, sym)) - } case ThisType(sym) => Some(new PrettyType(lookUpName(sym, context))) case ConstantType(Constant(_: TermSymbol)) => Some(t) @@ -45,7 +43,7 @@ class PrettyPrinter[G <: Global](val g: G) { scala.util .Try(ExistentialType(quantified.map(sym => sym.setInfo(loop(sym.info).get)), loop(underlying).get)) .toOption - case PolyType(typeParams, resultType) => { + case PolyType(typeParams, resultType) => scala.util .Try(resultType.map(t => loop(t).get)) .toOption match { @@ -56,7 +54,6 @@ class PrettyPrinter[G <: Global](val g: G) { Some(PolyType(typeParams, otherType)) case None => None } - } case NullaryMethodType(resultType) => loop(resultType) case TypeBounds(lo, hi) => @@ -88,11 +85,9 @@ class PrettyPrinter[G <: Global](val g: G) { private def lookUpName(sym: g.Symbol, context: g.Context): String = { // first get all owners val owners = getOwnersFor(sym) - val necessaryOwners = owners.iterator.takeWhile { - case sym => { - val lookUp = context.lookupSymbol(sym.name.toTermName, _ => true) - !isTheSameSymbol(sym, lookUp) - } + val necessaryOwners = owners.iterator.takeWhile { case sym => + val lookUp = context.lookupSymbol(sym.name.toTermName, _ => true) + !isTheSameSymbol(sym, lookUp) }.toSeq val size = necessaryOwners.size