summaryrefslogtreecommitdiff
path: root/test/scaladoc/resources/links.scala
blob: 679d0b0dce44c3348d81d13b17bd3c10830734e9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// that would be:
// SI-5079 "Scaladoc can't link to an object (only a class or trait)"
// SI-4497 "Links in ScalaDoc - Spec and implementation unsufficient"
// SI-4224 "Wiki-links should support method targets"
// SI-3695 "support non-fully-qualified type links in scaladoc comments"
package scala.test.scaladoc.links {
  import language.higherKinds
  class C

  trait Target {
    type T
    type S = String
    class C
    def foo(i: Int) = 2
    def foo(s: String) = 3
    def foo[A[_]](x: A[String]) = 5
    def foo[A[_[_]]](x: A[List]) = 6
    val bar: Boolean
    def baz(c: scala.test.scaladoc.links.C) = 7
  }

  object Target {
    type T = Int => Int
    type S = Int
    class C
    def foo(i: Int) = 2
    def foo(z: String) = 3
    def foo[A[_]](x: A[String]) = 5
    def foo[A[_[_]]](x: A[List]) = 6
    val bar: Boolean = false
    val onlyInObject = 1
    def baz(c: scala.test.scaladoc.links.C) = 7
  }

  /**
   *  Links to the trait:
   *  - [[scala.test.scaladoc.links.Target!.T trait Target -> type T]]
   *  - [[test.scaladoc.links.Target!.S       trait Target -> type S]]
   *  - [[scaladoc.links.Target!.foo(Int)*    trait Target -> def foo]]
   *  - [[links.Target!.bar                   trait Target -> def bar]]
   *  - [[[[Target!.foo[A[_[_]]]*             trait Target -> def foo with 3 nested tparams]]]] (should exercise nested parens)
   *  - [[Target$.T                           object Target -> type T]]
   *  - [[Target$.S                           object Target -> type S]]
   *  - [[Target$.foo(Str*                    object Target -> def foo]]
   *  - [[Target$.bar                         object Target -> def bar]]
   *  - [[[[Target$.foo[A[_[_]]]*             trait Target -> def foo with 3 nested tparams]]]] (should exercise nested parens)
   *  - [[Target.onlyInObject                 object Target -> def foo]] (should find the object)
   *  - [[Target$.C                           object Target -> class C]] (should link directly to C, not as a member)
   *  - [[Target!.C                           trait Target -> class C]] (should link directly to C, not as a member)
   *  - [[Target$.baz(links\.C)*              object Target -> def baz]] (should use dots in prefix)
   *  - [[Target!.baz(links\.C)*              trait Target -> def baz]] (should use dots in prefix)
   *  - [[localMethod                         object TEST -> localMethod]] (should use the current template to resolve link instead of inTpl, that's the package)
   */
  object TEST {
    def localMethod = 3
  }
}