aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Kirillov <darthorimar@users.noreply.github.com>2017-03-18 15:42:33 +0300
committerIlya Kirillov <darthorimar@users.noreply.github.com>2017-03-19 02:56:28 +0300
commit923fd231e0b2c22c0c60379da91066c0f544e83c (patch)
tree1f80e94e0f605453c769bb4e62ecb3b5d8cc836c
parentb9c20082bcbd231eb67c3ded0d3fe6674c8c55b7 (diff)
downloadcbt-923fd231e0b2c22c0c60379da91066c0f544e83c.tar.gz
cbt-923fd231e0b2c22c0c60379da91066c0f544e83c.tar.bz2
cbt-923fd231e0b2c22c0c60379da91066c0f544e83c.zip
Add scalafix plugin with example project and tests
-rw-r--r--examples/scalafix-example/.scalafix.conf9
-rw-r--r--examples/scalafix-example/Main.scala9
-rw-r--r--examples/scalafix-example/build/build.scala3
-rw-r--r--examples/scalafix-example/build/build/build.scala5
-rw-r--r--plugins/scalafix/Scalafix.scala28
-rw-r--r--plugins/scalafix/build/build.scala12
-rw-r--r--stage2/BuildBuild.scala1
-rw-r--r--test/test.scala15
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)