From 7cca5422c48ff50942f25fb9c82c9c063b08fe4b Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 27 Feb 2013 21:10:09 -0800 Subject: [PATCH] Test case for dependencies involving implicits and higher-kinds. This is a pending test case for sbt/sbt#686 which tests if dependencies are track properly when it comes to implicit scope. This test is marked as pending because sbt does not track dependencies correctly in this case. --- .../implicit-search-higher-kinded/changes/A1.scala | 3 +++ .../implicit-search-higher-kinded/changes/A2.scala | 5 +++++ .../implicit-search-higher-kinded/changes/B.scala | 2 ++ .../implicit-search-higher-kinded/changes/C.scala | 3 +++ .../implicit-search-higher-kinded/changes/M.scala | 6 ++++++ .../implicit-search-higher-kinded/pending | 14 ++++++++++++++ 6 files changed, 33 insertions(+) create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A1.scala create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A2.scala create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/B.scala create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/C.scala create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/M.scala create mode 100644 sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/pending diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A1.scala b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A1.scala new file mode 100644 index 000000000..c56e4578f --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A1.scala @@ -0,0 +1,3 @@ +import scala.languageFeature.higherKinds +trait A +object A diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A2.scala b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A2.scala new file mode 100644 index 000000000..1b749793d --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/A2.scala @@ -0,0 +1,5 @@ +import scala.languageFeature.higherKinds +trait A +object A { + implicit def m[MM[_], A]: MM[A] = ??? +} diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/B.scala b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/B.scala new file mode 100644 index 000000000..c49ed55ad --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/B.scala @@ -0,0 +1,2 @@ + +trait B extends A diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/C.scala b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/C.scala new file mode 100644 index 000000000..7fd803222 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/C.scala @@ -0,0 +1,3 @@ +object Test { + implicitly[M[B]] +} diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/M.scala b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/M.scala new file mode 100644 index 000000000..9fd664bea --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/changes/M.scala @@ -0,0 +1,6 @@ +import scala.languageFeature.higherKinds + +class M[A](a: A) +object M { + implicit def m[MM[_], A]: MM[A] = ??? +} diff --git a/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/pending b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/pending new file mode 100644 index 000000000..e5f50944f --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/implicit-search-higher-kinded/pending @@ -0,0 +1,14 @@ +# Tests if dependencies on implicit scope are tracked properly +# We use higher kinded types in order to make type checker to +# infer more and thus obscure true dependencies +$ copy-file changes/A1.scala A.scala +$ copy-file changes/B.scala B.scala +$ copy-file changes/M.scala M.scala +$ copy-file changes/C.scala C.scala +> compile + +$ copy-file changes/A2.scala A.scala +-> compile + +> clean +-> compile