diff options
-rw-r--r-- | examples/scalafix-example/.scalafix.conf | 9 | ||||
-rw-r--r-- | examples/scalafix-example/Main.scala | 9 | ||||
-rw-r--r-- | examples/scalafix-example/build/build.scala | 3 | ||||
-rw-r--r-- | examples/scalafix-example/build/build/build.scala | 5 | ||||
-rw-r--r-- | plugins/scalafix/Scalafix.scala | 28 | ||||
-rw-r--r-- | plugins/scalafix/build/build.scala | 12 | ||||
-rw-r--r-- | stage2/BuildBuild.scala | 1 | ||||
-rw-r--r-- | test/test.scala | 15 |
8 files changed, 82 insertions, 0 deletions
diff --git a/examples/scalafix-example/.scalafix.conf b/examples/scalafix-example/.scalafix.conf new file mode 100644 index 0000000..dbb79d7 --- /dev/null +++ b/examples/scalafix-example/.scalafix.conf @@ -0,0 +1,9 @@ +rewrites = [ + ProcedureSyntax + ExplicitImplicit + VolatileLazyVal +] + +patches.addGlobalImports = [ + "scala.collection.immutable" +] diff --git a/examples/scalafix-example/Main.scala b/examples/scalafix-example/Main.scala new file mode 100644 index 0000000..c82c77b --- /dev/null +++ b/examples/scalafix-example/Main.scala @@ -0,0 +1,9 @@ +object Main{ + lazy val x = 1 + 1 + + implicit def toString(i :Int) = i.toString + + def main( args: Array[String] ){ + println("Hello world!") + } +} diff --git a/examples/scalafix-example/build/build.scala b/examples/scalafix-example/build/build.scala new file mode 100644 index 0000000..776d1e0 --- /dev/null +++ b/examples/scalafix-example/build/build.scala @@ -0,0 +1,3 @@ +import cbt._ + +class Build(val context: Context) extends BaseBuild with Scalafix diff --git a/examples/scalafix-example/build/build/build.scala b/examples/scalafix-example/build/build/build.scala new file mode 100644 index 0000000..404356f --- /dev/null +++ b/examples/scalafix-example/build/build/build.scala @@ -0,0 +1,5 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild { + override def dependencies = super.dependencies :+ plugins.scalafix +} diff --git a/plugins/scalafix/Scalafix.scala b/plugins/scalafix/Scalafix.scala new file mode 100644 index 0000000..cf808d7 --- /dev/null +++ b/plugins/scalafix/Scalafix.scala @@ -0,0 +1,28 @@ +package cbt + +import cbt._ +import java.nio.file.Files._ +import java.nio.file._ +import java.io.File + +trait Scalafix extends BaseBuild { + def scalafixVersion = "0.3.1" + + override def scalacOptions = super.scalacOptions ++ + Scalafix.scalacOptions(projectDirectory.toPath, + Resolver( mavenCentral, sonatypeReleases ).bindOne( + ScalaDependency( "ch.epfl.scala", "scalafix-nsc", scalafixVersion ) + ).jar) +} + +object Scalafix { + def scalacOptions( rootPath: Path, nscJar: File ) = + Seq( + "-Xplugin:" ++ nscJar.string, + "-Yrangepos" + ) ++ configOption(rootPath) + + def configOption( rootPath: Path ) = + Some( rootPath.resolve(".scalafix.conf").toAbsolutePath ) + .filter(isRegularFile(_)).map("-P:scalafix:" ++ _.toString).toSeq +} diff --git a/plugins/scalafix/build/build.scala b/plugins/scalafix/build/build.scala new file mode 100644 index 0000000..b25b54d --- /dev/null +++ b/plugins/scalafix/build/build.scala @@ -0,0 +1,12 @@ +package scalafix_build + +import cbt._ + +class Build(val context: Context) extends Plugin { + override def dependencies = ( + super.dependencies ++ + Resolver( mavenCentral, sonatypeReleases ).bind( + ScalaDependency( "ch.epfl.scala", "scalafix-nsc", "0.3.1" ) + ) + ) +} diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala index 7be4714..9b48e15 100644 --- a/stage2/BuildBuild.scala +++ b/stage2/BuildBuild.scala @@ -26,6 +26,7 @@ class plugins(implicit context: Context){ final lazy val sonatypeRelease = plugin( "sonatype-release" ) final lazy val uberJar = plugin( "uber-jar" ) final lazy val wartremover = plugin( "wartremover" ) + final lazy val scalafix = plugin( "scalafix" ) } trait BuildBuildWithoutEssentials extends BaseBuild{ object plugins extends plugins diff --git a/test/test.scala b/test/test.scala index c49d1e5..245b925 100644 --- a/test/test.scala +++ b/test/test.scala @@ -220,6 +220,7 @@ object Main{ compile("../plugins/scalatest") compile("../plugins/wartremover") compile("../plugins/uber-jar") + compile("../plugins/scalafix") compile("../examples/scalafmt-example") compile("../examples/scalariform-example") compile("../examples/scalatest-example") @@ -231,6 +232,7 @@ object Main{ } compile("../examples/multi-standalone-example") compile("../examples/multi-combined-example") + compile("../examples/scalafix-example") if(sys.props("java.version").startsWith("1.7")){ System.err.println("\nskipping dotty tests on Java 7") } else { @@ -381,6 +383,19 @@ object Main{ assert(res.out.contains("via parent.parent: true 2"), res.out) } + { + val sourceFile = cbtHome / "examples" / "scalafix-example" / "Main.scala" + val sourceBefore = sourceFile.readAsString + val res = runCbt("../examples/scalafix-example", Seq("compile")) + assert(res.exit0) + val sourceAfter = sourceFile.readAsString + assert(sourceAfter contains "@volatile") + assert(sourceAfter contains ": Unit") + assert(sourceAfter contains ": String ") + assert(sourceAfter contains "import scala.collection.immutable") + lib.write(sourceFile, sourceBefore) + } + System.err.println(" DONE!") System.err.println( successes.toString ++ " succeeded, "++ failures.toString ++ " failed" ) if(failures > 0) System.exit(1) else System.exit(0) |