aboutsummaryrefslogtreecommitdiff
path: root/sbt-bridge/test/xsbt/ExtractAPISpecification.scala
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-11-20 00:02:50 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:08 +0100
commitc3eb841ce8ae349d9820dbf6c18884955e74254e (patch)
tree5e82e22a6f0e8245c11a6db81cb9647106a14bde /sbt-bridge/test/xsbt/ExtractAPISpecification.scala
parentda1bfe392c638fc03181e0d6b51eb41dbdcce548 (diff)
downloaddotty-c3eb841ce8ae349d9820dbf6c18884955e74254e.tar.gz
dotty-c3eb841ce8ae349d9820dbf6c18884955e74254e.tar.bz2
dotty-c3eb841ce8ae349d9820dbf6c18884955e74254e.zip
Make every project use the new directory structure
Diffstat (limited to 'sbt-bridge/test/xsbt/ExtractAPISpecification.scala')
-rw-r--r--sbt-bridge/test/xsbt/ExtractAPISpecification.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/sbt-bridge/test/xsbt/ExtractAPISpecification.scala b/sbt-bridge/test/xsbt/ExtractAPISpecification.scala
new file mode 100644
index 000000000..f5af67e45
--- /dev/null
+++ b/sbt-bridge/test/xsbt/ExtractAPISpecification.scala
@@ -0,0 +1,45 @@
+/** Adapted from https://github.com/sbt/sbt/blob/0.13/compile/interface/src/test/scala/xsbt/ExtractAPISpecification.scala */
+package xsbt
+
+import org.junit.runner.RunWith
+import xsbti.api.ClassLike
+import xsbti.api.Def
+import xsbt.api.ShowAPI
+import org.specs2.mutable.Specification
+import org.specs2.runner.JUnitRunner
+
+@RunWith(classOf[JUnitRunner])
+class ExtractAPISpecification extends Specification {
+
+ "Existential types in method signatures" should {
+ "have stable names" in { stableExistentialNames }
+ }
+
+ def stableExistentialNames: Boolean = {
+ def compileAndGetFooMethodApi(src: String): Def = {
+ val compilerForTesting = new ScalaCompilerForUnitTesting
+ val sourceApi = compilerForTesting.extractApiFromSrc(src)
+ val FooApi = sourceApi.definitions().find(_.name() == "Foo").get.asInstanceOf[ClassLike]
+ val fooMethodApi = FooApi.structure().declared().find(_.name == "foo").get
+ fooMethodApi.asInstanceOf[Def]
+ }
+ val src1 = """
+ |class Box[T]
+ |class Foo {
+ | def foo: Box[_] = null
+ |
+ }""".stripMargin
+ val fooMethodApi1 = compileAndGetFooMethodApi(src1)
+ val src2 = """
+ |class Box[T]
+ |class Foo {
+ | def bar: Box[_] = null
+ | def foo: Box[_] = null
+ |
+ }""".stripMargin
+ val fooMethodApi2 = compileAndGetFooMethodApi(src2)
+ fooMethodApi1 == fooMethodApi2
+ // Fails because xsbt.api is compiled with Scala 2.10
+ // SameAPI.apply(fooMethodApi1, fooMethodApi2)
+ }
+}