diff options
author | Vlad Ureche <vlad.ureche@gmail.com> | 2012-07-08 23:57:56 +0200 |
---|---|---|
committer | Vlad Ureche <vlad.ureche@gmail.com> | 2012-07-16 23:41:44 +0200 |
commit | 929415a3f4d5d6261d10cc6d28720c5241716bae (patch) | |
tree | 5d3f3e66415e63901730f1d2981a68cadb451436 /test/scaladoc/run/SI-4887.scala | |
parent | 8d0ea747c240e4881c057a78cf2c90e69369ca4b (diff) | |
download | scala-929415a3f4d5d6261d10cc6d28720c5241716bae.tar.gz scala-929415a3f4d5d6261d10cc6d28720c5241716bae.tar.bz2 scala-929415a3f4d5d6261d10cc6d28720c5241716bae.zip |
SI-4887 Link existentials in scaladoc
Based on an inital patch by Nada Amin. Rewrote some of the code to
compress it a bit.
Also fixed a problem that was affecting the prefix printing for
typerefs: type parameter and existentials won't get prefixes. While
I can imagine cases where you'd want to see where they come from,
you can always hover over them and see their origin.
Also added support for pretty-printing ThisTypes, SuperTypes and
SingleTypes (with links)
Diffstat (limited to 'test/scaladoc/run/SI-4887.scala')
-rw-r--r-- | test/scaladoc/run/SI-4887.scala | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/scaladoc/run/SI-4887.scala b/test/scaladoc/run/SI-4887.scala new file mode 100644 index 0000000000..af83344613 --- /dev/null +++ b/test/scaladoc/run/SI-4887.scala @@ -0,0 +1,46 @@ +import scala.tools.nsc.doc.model._ +import scala.tools.partest.ScaladocModelTest + +object Test extends ScaladocModelTest { + + override def code = """ + package scala.test.scaladoc.existentials { + import language.higherKinds + import language.existentials + + class X[T, U, V] + + trait TEST { + type T + type U + type A + def foo1(x: X[T, U, _]) = 3 + def foo2(x: X[Z[_], U, z.type] forSome {type Z[_] <: { def z: String }; val z: Z[_ <: Int]}) = 4 + def foo3(x: X[Z, Z, V] forSome { type Z <: T; type V <: T }) = 6 + } + } + """ + + // no need for special settings + def scaladocSettings = "-feature" + + def testModel(rootPackage: Package) = { + // get the quick access implicit defs in scope (_package(s), _class(es), _trait(s), object(s) _method(s), _value(s)) + import access._ + + val base = rootPackage._package("scala")._package("test")._package("scaladoc")._package("existentials") + val TEST = base._trait("TEST") + + val foo1 = TEST._method("foo1") + assert(foo1.valueParams(0)(0).resultType.name == "X[T, U, _]", + foo1.valueParams(0)(0).resultType.name + " == X[T, U, _]") + + val foo2 = TEST._method("foo2") + assert(foo2.valueParams(0)(0).resultType.name == "X[Z[_], U, _ <: [_]AnyRef { def z: String } with Singleton]", + foo2.valueParams(0)(0).resultType.name + " == X[Z[_], U, _ <: [_]AnyRef { def z: String } with Singleton]") + + val foo3 = TEST._method("foo3") + assert(foo3.valueParams(0)(0).resultType.name == "X[Z, Z, V] forSome {type Z <: T, type V <: T}", + foo3.valueParams(0)(0).resultType.name + " == X[Z, Z, V] forSome {type Z <: T, type V <: T}") + } +}
\ No newline at end of file |