From 72c4a8d33528f924d4623eb204539455b82c4e01 Mon Sep 17 00:00:00 2001 From: Eric Torreborre Date: Wed, 14 Jun 2017 17:04:12 +0200 Subject: added a cbt plugin for the kind-projector compiler plugin --- stage2/plugins/KindProjector.scala | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 stage2/plugins/KindProjector.scala diff --git a/stage2/plugins/KindProjector.scala b/stage2/plugins/KindProjector.scala new file mode 100644 index 0000000..1e04a08 --- /dev/null +++ b/stage2/plugins/KindProjector.scala @@ -0,0 +1,28 @@ +package cbt + +trait KindProjectorPlugin extends BaseBuild { + def kindProjectorVersion = "0.9.4" + + override def scalacOptions = super.scalacOptions ++ + KindProjector.scalacOptions( + KindProjector.dependencies( scalaMajorVersion, kindProjectorVersion, context.cbtLastModified, context.paths.mavenCache ).jar + ) +} + +object KindProjector { + def dependencies( + scalaMajorVersion: String, kindProjectorVersion: String, cbtLastModified: Long, mavenCache: java.io.File + )( + implicit logger: Logger, transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache + ) = + MavenResolver( cbtLastModified, mavenCache, mavenCentral ).bindOne( + MavenDependency( + "org.spire-math", "kind-projector_"+scalaMajorVersion, kindProjectorVersion + ) + ) + + def scalacOptions( jarPath: File ) = + Seq( + "-Xplugin:" ++ jarPath.string + ) +} -- cgit v1.2.3 From 66c3d62ebb08eb0054ade9b98dc7a477976117b7 Mon Sep 17 00:00:00 2001 From: Eric Torreborre Date: Wed, 14 Jun 2017 17:20:42 +0200 Subject: added an example --- examples/kindprojector-example/Main.scala | 10 ++++++++++ examples/kindprojector-example/build/build.scala | 11 +++++++++++ stage2/plugins/KindProjector.scala | 4 +++- test/test.scala | 5 +++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 examples/kindprojector-example/Main.scala create mode 100644 examples/kindprojector-example/build/build.scala diff --git a/examples/kindprojector-example/Main.scala b/examples/kindprojector-example/Main.scala new file mode 100644 index 0000000..3da3aaf --- /dev/null +++ b/examples/kindprojector-example/Main.scala @@ -0,0 +1,10 @@ +package kindprojector_example + +object Main { + + def parametric[F[_]]: Unit = () + + def main(args: Array[String]): Unit = { + parametric[Either[String, ?]] + } +} diff --git a/examples/kindprojector-example/build/build.scala b/examples/kindprojector-example/build/build.scala new file mode 100644 index 0000000..e5ad8b4 --- /dev/null +++ b/examples/kindprojector-example/build/build.scala @@ -0,0 +1,11 @@ +package kindprojector_example_build + +import cbt._ + +class Build(val context: Context) extends BaseBuild with KindProjectorPlugin { + + override def scalacOptions: Seq[String] = + super.scalacOptions ++ + Seq("-language:higherKinds") + +} diff --git a/stage2/plugins/KindProjector.scala b/stage2/plugins/KindProjector.scala index 1e04a08..cb8a776 100644 --- a/stage2/plugins/KindProjector.scala +++ b/stage2/plugins/KindProjector.scala @@ -1,5 +1,7 @@ package cbt +import java.io.File + trait KindProjectorPlugin extends BaseBuild { def kindProjectorVersion = "0.9.4" @@ -11,7 +13,7 @@ trait KindProjectorPlugin extends BaseBuild { object KindProjector { def dependencies( - scalaMajorVersion: String, kindProjectorVersion: String, cbtLastModified: Long, mavenCache: java.io.File + scalaMajorVersion: String, kindProjectorVersion: String, cbtLastModified: Long, mavenCache: File )( implicit logger: Logger, transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache ) = diff --git a/test/test.scala b/test/test.scala index 74177c5..81a164f 100644 --- a/test/test.scala +++ b/test/test.scala @@ -459,6 +459,11 @@ object Main{ lib.write(sourceFile, sourceBefore) } + { + val res = runCbt("../examples/kindprojector-example", Seq()) + assert(res.exit0) + } + /* // currently fails with // java.lang.UnsupportedOperationException: scalafix.rewrite.ScalafixMirror.fromMirror $anon#typeSignature requires the semantic api -- cgit v1.2.3 From 07bd7bef8f811c03f133f42bb56a3076cc6ccb14 Mon Sep 17 00:00:00 2001 From: Jan Christopher Vogt Date: Thu, 15 Jun 2017 16:23:25 -0400 Subject: adjusted whitespace to cbt convention --- stage2/plugins/KindProjector.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stage2/plugins/KindProjector.scala b/stage2/plugins/KindProjector.scala index cb8a776..50b1576 100644 --- a/stage2/plugins/KindProjector.scala +++ b/stage2/plugins/KindProjector.scala @@ -13,10 +13,10 @@ trait KindProjectorPlugin extends BaseBuild { object KindProjector { def dependencies( - scalaMajorVersion: String, kindProjectorVersion: String, cbtLastModified: Long, mavenCache: File - )( - implicit logger: Logger, transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache - ) = + scalaMajorVersion: String, kindProjectorVersion: String, cbtLastModified: Long, mavenCache: File + )( + implicit logger: Logger, transientCache: java.util.Map[AnyRef,AnyRef], classLoaderCache: ClassLoaderCache + ) = MavenResolver( cbtLastModified, mavenCache, mavenCentral ).bindOne( MavenDependency( "org.spire-math", "kind-projector_"+scalaMajorVersion, kindProjectorVersion -- cgit v1.2.3