aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2017-06-15 16:23:49 -0400
committerGitHub <noreply@github.com>2017-06-15 16:23:49 -0400
commit618711302b7ea29de651c1f771eb3160e236b339 (patch)
tree58d5ee8973830f1f34ca96f5bc7cc9cbe0cee19c
parent3df15ef7c9c5a48516c06cf7b598acf298d8b8c0 (diff)
parent07bd7bef8f811c03f133f42bb56a3076cc6ccb14 (diff)
downloadcbt-618711302b7ea29de651c1f771eb3160e236b339.tar.gz
cbt-618711302b7ea29de651c1f771eb3160e236b339.tar.bz2
cbt-618711302b7ea29de651c1f771eb3160e236b339.zip
Merge pull request #519 from etorreborre/kind-projector-plugin
Added a cbt plugin for the kind-projector compiler plugin
-rw-r--r--examples/kindprojector-example/Main.scala10
-rw-r--r--examples/kindprojector-example/build/build.scala11
-rw-r--r--stage2/plugins/KindProjector.scala30
-rw-r--r--test/test.scala5
4 files changed, 56 insertions, 0 deletions
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
new file mode 100644
index 0000000..50b1576
--- /dev/null
+++ b/stage2/plugins/KindProjector.scala
@@ -0,0 +1,30 @@
+package cbt
+
+import java.io.File
+
+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: 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
+ )
+}
diff --git a/test/test.scala b/test/test.scala
index 13e477f..55ce205 100644
--- a/test/test.scala
+++ b/test/test.scala
@@ -472,6 +472,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