diff options
Diffstat (limited to 'bridge/src/sbt-test/source-dependencies/inherited-deps-java')
11 files changed, 70 insertions, 0 deletions
diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/A.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/A.java new file mode 100644 index 000000000..894125a7e --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/A.java @@ -0,0 +1 @@ +class A implements B.T<Integer>, E {} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/B.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/B.java new file mode 100644 index 000000000..6b54edc7d --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/B.java @@ -0,0 +1,11 @@ +public class B { + static interface T<X> extends C {} + + // not public, so this shouldn't be tracked as an inherited dependency + private class Q implements E<Integer> {} + + public void x(int i) { + // not public, not an inherited dependency + D j = new D() {}; + } +} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/C.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/C.java new file mode 100644 index 000000000..6c06f4033 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/C.java @@ -0,0 +1 @@ +interface C extends D {} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/D.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/D.java new file mode 100644 index 000000000..9455ef5b0 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/D.java @@ -0,0 +1 @@ +interface D extends G.P {} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/E.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/E.java new file mode 100644 index 000000000..d5e4d6517 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/E.java @@ -0,0 +1 @@ +public interface E<T> {} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/F.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/F.java new file mode 100644 index 000000000..e205778d5 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/F.java @@ -0,0 +1,3 @@ +public class F { + public C q() { return null; } +} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/G.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/G.java new file mode 100644 index 000000000..ed3429f8c --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/G.java @@ -0,0 +1,3 @@ +public class G { + static interface P extends J {} +} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/J.java b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/J.java new file mode 100644 index 000000000..8aeeb05b6 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/J.java @@ -0,0 +1 @@ +public interface J {} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/build.sbt b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/build.sbt new file mode 100644 index 000000000..c25b54921 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/build.sbt @@ -0,0 +1,30 @@ +// this test is specific to the old incremental compilation algorithm +incOptions := incOptions.value.withNameHashing(false) + +lazy val verifyDeps = taskKey[Unit]("verify inherited dependencies are properly extracted") + +verifyDeps := { + val a = compile.in(Compile).value + same(a.relations.publicInherited.internal.forwardMap, expectedDeps.forwardMap) +} + +lazy val expected = Seq( + "A" -> Seq("C", "D", "E", "G", "J"), + "B" -> Seq("C", "D", "G", "J"), + "C" -> Seq("D", "G", "J"), + "D" -> Seq("G", "J"), + "E" -> Seq(), + "F" -> Seq(), + "G" -> Seq("J"), + "J" -> Seq() +) +lazy val pairs = + expected.map { case (from,tos) => + (toFile(from), tos.map(toFile)) + } +lazy val expectedDeps = (Relation.empty[File,File] /: pairs) { case (r, (x,ys)) => r + (x,ys) } +def toFile(s: String) = file(s + ".java").getAbsoluteFile + +def same[T](x: T, y: T): Unit = { + assert(x == y, s"\nActual: $x, \nExpected: $y") +} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/project/DottyInjectedPlugin.scala b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/project/DottyInjectedPlugin.scala new file mode 100644 index 000000000..3433779b6 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/project/DottyInjectedPlugin.scala @@ -0,0 +1,17 @@ +import sbt._ +import Keys._ + +object DottyInjectedPlugin extends AutoPlugin { + override def requires = plugins.JvmPlugin + override def trigger = allRequirements + + override val projectSettings = Seq( + scalaVersion := "0.1-SNAPSHOT", + scalaOrganization := "ch.epfl.lamp", + scalacOptions += "-language:Scala2", + scalaBinaryVersion := "2.11", + autoScalaLibrary := false, + libraryDependencies ++= Seq("org.scala-lang" % "scala-library" % "2.11.5"), + scalaCompilerBridgeSource := ("ch.epfl.lamp" % "dotty-bridge" % "0.1.1-SNAPSHOT" % "component").sources() + ) +} diff --git a/bridge/src/sbt-test/source-dependencies/inherited-deps-java/test b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/test new file mode 100644 index 000000000..e5d477601 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inherited-deps-java/test @@ -0,0 +1 @@ +> verifyDeps |