From 9e27ebeeb600b33a7bda1ece7716ed90d2da4f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20P=C3=A1ll=20Geirsson?= Date: Fri, 18 Aug 2017 10:10:10 +0200 Subject: [PATCH] Clean up before merge - remove unused imports with scalafix (hurray!) - refactor build.sbt a bit - polish new doc entries - Remove unused Patch.applyInternal --- build.sbt | 37 ++++++++++++------- project/plugins.sbt | 1 + readme/ImplementingRewrites.scalatex | 8 ++-- readme/src/main/scala/scalafix/Readme.scala | 1 - .../src/main/scala/scalafix/cli/Cli.scala | 3 -- .../main/scala/scalafix/cli/CliRunner.scala | 2 - .../src/main/scala/scalafix/Failure.scala | 2 - .../scalafix/internal/config/LintConfig.scala | 1 - .../internal/config/PrintStreamReporter.scala | 1 - .../config/ScalafixMetaconfigReaders.scala | 1 - .../scalafix/internal/config/package.scala | 1 - .../src/main/scala/scalafix/patch/Patch.scala | 13 ++----- .../scala/scalafix/rewrite/RewriteCtx.scala | 1 - .../testkit/SemanticRewriteSuite.scala | 2 - 14 files changed, 34 insertions(+), 40 deletions(-) diff --git a/build.sbt b/build.sbt index 5137090f7..a22043410 100644 --- a/build.sbt +++ b/build.sbt @@ -97,8 +97,8 @@ lazy val allSettings = List( stableVersion := version.value.replaceAll("\\+.*", ""), resolvers += Resolver.sonatypeRepo("releases"), triggeredMessage in ThisBuild := Watched.clearWhenTriggered, - scalacOptions ++= compilerOptions, - scalacOptions in (Compile, console) := compilerOptions :+ "-Yrepl-class-based", + scalacOptions ++= compilerOptions.value, + scalacOptions in (Compile, console) := compilerOptions.value :+ "-Yrepl-class-based", libraryDependencies += scalatest.value % Test, testOptions in Test += Tests.Argument("-oD"), scalaVersion := ciScalaVersion.getOrElse(scala212), @@ -197,6 +197,7 @@ lazy val `scalafix-sbt` = project .configs(IntegrationTest) .settings( allSettings, + is210Only, publishSettings, buildInfoSettings, Defaults.itSettings, @@ -220,8 +221,6 @@ lazy val `scalafix-sbt` = project "; very scalafix-sbt/scripted" )(state.value) }, - scalaVersion := scala210, - crossScalaVersions := Seq(scala210), moduleName := "sbt-scalafix", scriptedLaunchOpts ++= Seq( "-Dplugin.version=" + version.value, @@ -293,6 +292,7 @@ lazy val testsInput = project resolvers += Resolver.bintrayRepo("allanrenucci", "maven"), libraryDependencies ++= testsDeps ) + .disablePlugins(ScalafixPlugin) .dependsOn(testsShared) lazy val testsOutput = project @@ -301,6 +301,7 @@ lazy val testsOutput = project allSettings, noPublish, semanticdbSettings, + scalacOptions -= warnUnusedImports, resolvers := resolvers.in(testsInput).value, libraryDependencies := libraryDependencies.in(testsInput).value ) @@ -324,7 +325,7 @@ lazy val testsInputSbt = project .settings( logLevel := Level.Error, // avoid flood of deprecation warnings. scalacOptions += "-Xplugin-require:sbthost", - scalaVersion := scala210, + is210Only, sbtPlugin := true, scalacOptions += s"-P:sbthost:sourceroot:${sourceDirectory.in(Compile).value}", addCompilerPlugin( @@ -334,7 +335,7 @@ lazy val testsInputSbt = project lazy val testsOutputSbt = project .in(file("scalafix-tests/output-sbt")) .settings( - scalaVersion := scala210, + is210Only, sbtPlugin := true ) @@ -434,17 +435,27 @@ lazy val readme = scalatex .dependsOn(coreJVM, cli) .enablePlugins(GhpagesPlugin) +lazy val is210Only = Seq( + scalaVersion := scala210, + crossScalaVersions := Seq(scala210), + scalacOptions -= warnUnusedImports +) + lazy val isFullCrossVersion = Seq( crossVersion := CrossVersion.full ) -lazy val compilerOptions = Seq( - "-deprecation", - "-encoding", - "UTF-8", - "-feature", - "-unchecked" -) +lazy val warnUnusedImports = "-Ywarn-unused-import" +lazy val compilerOptions = Def.setting { + Seq( + "-deprecation", + "-encoding", + "UTF-8", + "-feature", + warnUnusedImports, + "-unchecked" + ) +} lazy val gitPushTag = taskKey[Unit]("Push to git tag") diff --git a/project/plugins.sbt b/project/plugins.sbt index fac6e0a44..20226ea74 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -15,5 +15,6 @@ addSbtPlugin( addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.18") addSbtPlugin("ch.epfl.scala" % "sbt-scalajs-bundler" % "0.7.0") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.14") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.5.0-M4") libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value diff --git a/readme/ImplementingRewrites.scalatex b/readme/ImplementingRewrites.scalatex index d1dc93d09..1d8b3274d 100644 --- a/readme/ImplementingRewrites.scalatex +++ b/readme/ImplementingRewrites.scalatex @@ -98,7 +98,7 @@ of the rewrite and the expected output in the @code{output} project. @li Assert that a @sect.ref{LintMessage} is expected at a particular line - by suffixing the line with the comment @code{// scalafix: warning}. + by suffixing the line with the comment @code{// scalafix: }. The test fails if there exist reported lint messages that have no associated assertion in the input file. @@ -149,7 +149,7 @@ Rewrites are able to emit "lint messages" with info/warn/error severity using @code{ctx.lint(lintCategory.at(String/Position)): Patch}. To report a lint message, first create a @sect.ref{LintCategory} and then - report as a Patch + report it as a @code{Patch} @hl.scala val divisionByZero = LintCategory.error("Division by zero is unsafe!") def rewrite(ctx: RewriteCtx): Patch = { @@ -159,7 +159,9 @@ @sect{LintCategory} A LintCategory is group of lint messages of the same kind. - The severity of a LintCategory can be customized in @sect.ref{lint}. + A LintCategory has a default severity level (info/warn/error) at which + it will be reported. Scalafix users can override the default severity + with @sect.ref{lint}. @sect{Scalameta} Scalafix uses @lnk("Scalameta", "http://scalameta.org/") to implement diff --git a/readme/src/main/scala/scalafix/Readme.scala b/readme/src/main/scala/scalafix/Readme.scala index 5960a4714..3fdb09c55 100644 --- a/readme/src/main/scala/scalafix/Readme.scala +++ b/readme/src/main/scala/scalafix/Readme.scala @@ -7,7 +7,6 @@ import scalafix.internal.config.ScalafixMetaconfigReaders import scalafix.reflect.ScalafixReflect import scalatags.Text.TypedTag import scalatags.Text.all._ -import scalatex.Main import scalatex.site.Highlighter object Readme { diff --git a/scalafix-cli/src/main/scala/scalafix/cli/Cli.scala b/scalafix-cli/src/main/scala/scalafix/cli/Cli.scala index f3b646d32..bca0a8ab5 100644 --- a/scalafix-cli/src/main/scala/scalafix/cli/Cli.scala +++ b/scalafix-cli/src/main/scala/scalafix/cli/Cli.scala @@ -10,9 +10,6 @@ import scalafix.internal.cli.CommonOptions import scalafix.internal.cli.ScalafixOptions import scalafix.rewrite.ScalafixRewrites import scala.meta.io.AbsolutePath -import scalafix.internal.config.PrintStreamReporter -import scalafix.internal.config.ScalafixReporter -import scalafix.internal.util.Severity import caseapp.Name import caseapp.core.Arg import caseapp.core.Messages diff --git a/scalafix-cli/src/main/scala/scalafix/cli/CliRunner.scala b/scalafix-cli/src/main/scala/scalafix/cli/CliRunner.scala index 5c0f7d114..13f1f893b 100644 --- a/scalafix-cli/src/main/scala/scalafix/cli/CliRunner.scala +++ b/scalafix-cli/src/main/scala/scalafix/cli/CliRunner.scala @@ -17,7 +17,6 @@ import java.util.regex.PatternSyntaxException import scala.meta._ import scala.meta.inputs.Input import scala.meta.internal.inputs._ -import scala.meta.internal.tokenizers.PlatformTokenizerCache import scala.meta.io.AbsolutePath import scala.meta.sbthost.Sbthost import scala.util.Try @@ -37,7 +36,6 @@ import scalafix.reflect.ScalafixReflect import scalafix.syntax._ import metaconfig.Configured.Ok import metaconfig._ -import org.scalameta.logger sealed abstract case class CliRunner( sourceroot: AbsolutePath, diff --git a/scalafix-core/shared/src/main/scala/scalafix/Failure.scala b/scalafix-core/shared/src/main/scala/scalafix/Failure.scala index 5118b1e0d..64475b175 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/Failure.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/Failure.scala @@ -1,7 +1,5 @@ package scalafix -import scala.meta._ - // TODO(olafur) this signature makes no sense. We should try to avoid exception // try/catch dodgeball court whenever possible. sealed abstract class Failure(val ex: Throwable) diff --git a/scalafix-core/shared/src/main/scala/scalafix/internal/config/LintConfig.scala b/scalafix-core/shared/src/main/scala/scalafix/internal/config/LintConfig.scala index c7eb69d0f..3b14b1940 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/internal/config/LintConfig.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/internal/config/LintConfig.scala @@ -1,7 +1,6 @@ package scalafix.internal.config import scalafix.lint.LintSeverity -import scalafix.lint.LintCategory import metaconfig.ConfDecoder case class LintConfig( diff --git a/scalafix-core/shared/src/main/scala/scalafix/internal/config/PrintStreamReporter.scala b/scalafix-core/shared/src/main/scala/scalafix/internal/config/PrintStreamReporter.scala index 29f203738..1e936ee53 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/internal/config/PrintStreamReporter.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/internal/config/PrintStreamReporter.scala @@ -4,7 +4,6 @@ import scala.meta.Position import scala.meta.internal.inputs.XtensionPositionFormatMessage import java.io.PrintStream import java.util.concurrent.atomic.AtomicInteger -import java.util.concurrent.atomic.AtomicReference import scalafix.internal.util.Severity import metaconfig._ diff --git a/scalafix-core/shared/src/main/scala/scalafix/internal/config/ScalafixMetaconfigReaders.scala b/scalafix-core/shared/src/main/scala/scalafix/internal/config/ScalafixMetaconfigReaders.scala index e5ed5280f..01883c667 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/internal/config/ScalafixMetaconfigReaders.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/internal/config/ScalafixMetaconfigReaders.scala @@ -25,7 +25,6 @@ import metaconfig.Configured.Ok import scalafix.internal.config.MetaconfigParser.{parser => hoconParser} import scalafix.patch.TreePatch import scalafix.rewrite.ConfigRewrite -import org.scalameta.logger object ScalafixMetaconfigReaders extends ScalafixMetaconfigReaders // A collection of metaconfig.Reader instances that are shared across diff --git a/scalafix-core/shared/src/main/scala/scalafix/internal/config/package.scala b/scalafix-core/shared/src/main/scala/scalafix/internal/config/package.scala index ad884fbdc..22348ed5b 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/internal/config/package.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/internal/config/package.scala @@ -2,7 +2,6 @@ package scalafix.internal import scala.meta.Tree import scala.meta.parsers.Parse -import scalafix.SemanticCtx package object config extends ScalafixMetaconfigReaders { type MetaParser = Parse[_ <: Tree] diff --git a/scalafix-core/shared/src/main/scala/scalafix/patch/Patch.scala b/scalafix-core/shared/src/main/scala/scalafix/patch/Patch.scala index 4f4ca2707..9e2c61813 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/patch/Patch.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/patch/Patch.scala @@ -114,14 +114,6 @@ object Patch { case (rem: Remove, rem2: Remove) => rem case _ => throw Failure.TokenPatchMergeError(a, b) } - // Patch.apply and Patch.lintMessages package private. Feel free to use them - // for your application, but please ask on the Gitter channel to see if we - // can expose a better api for your use case. - private[scalafix] def apply( - p: Patch, - ctx: RewriteCtx, - semanticCtx: Option[SemanticCtx]): String = - applyInternal(p, ctx, semanticCtx) private[scalafix] def lintMessages( patch: Patch, @@ -135,7 +127,10 @@ object Patch { builder.result() } - private[scalafix] def applyInternal( + // Patch.apply and Patch.lintMessages package private. Feel free to use them + // for your application, but please ask on the Gitter channel to see if we + // can expose a better api for your use case. + private[scalafix] def apply( p: Patch, ctx: RewriteCtx, semanticCtx: Option[SemanticCtx] diff --git a/scalafix-core/shared/src/main/scala/scalafix/rewrite/RewriteCtx.scala b/scalafix-core/shared/src/main/scala/scalafix/rewrite/RewriteCtx.scala index 7dcb13762..91ea7c382 100644 --- a/scalafix-core/shared/src/main/scala/scalafix/rewrite/RewriteCtx.scala +++ b/scalafix-core/shared/src/main/scala/scalafix/rewrite/RewriteCtx.scala @@ -8,7 +8,6 @@ import scalafix.internal.config.ScalafixConfig import scalafix.internal.config.ScalafixMetaconfigReaders import scalafix.internal.config.ScalafixReporter import scalafix.internal.util.SymbolOps.BottomSymbol -import scalafix.lint.LintSeverity import scalafix.patch.LintPatch import scalafix.patch.PatchOps import scalafix.patch.TokenPatch diff --git a/scalafix-testkit/src/main/scala/scalafix/testkit/SemanticRewriteSuite.scala b/scalafix-testkit/src/main/scala/scalafix/testkit/SemanticRewriteSuite.scala index c1ced4bd0..ca9453e0c 100644 --- a/scalafix-testkit/src/main/scala/scalafix/testkit/SemanticRewriteSuite.scala +++ b/scalafix-testkit/src/main/scala/scalafix/testkit/SemanticRewriteSuite.scala @@ -1,7 +1,6 @@ package scalafix package testkit -import scala.collection.JavaConverters._ import scala.collection.mutable import scalafix.syntax._ import scala.meta._ @@ -11,7 +10,6 @@ import org.scalatest.BeforeAndAfterAll import org.scalatest.FunSuite import org.scalatest.exceptions.TestFailedException import scala.meta.internal.inputs.XtensionPositionFormatMessage -import scalafix.lint.LintSeverity abstract class SemanticRewriteSuite( val semanticCtx: SemanticCtx,