diff options
-rw-r--r-- | examples/kindprojector-example/Main.scala | 10 | ||||
-rw-r--r-- | examples/kindprojector-example/build/build.scala | 11 | ||||
-rw-r--r-- | stage2/plugins/KindProjector.scala | 30 | ||||
-rw-r--r-- | test/test.scala | 5 |
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 |