File tree 7 files changed +144
-0
lines changed
scala3doc/test/dotty/dokka/linking
scala3doc-testcases/src/tests
7 files changed +144
-0
lines changed Original file line number Diff line number Diff line change
1
+ package tests .extensionDRIs
2
+
3
+ class A
4
+
5
+ class B
6
+
7
+ extension (a : A ) def fun = 8
8
+ extension (b : B ) def fun = 9
9
+ extension (as : Seq [A ]) def fun = 10
Original file line number Diff line number Diff line change
1
+ package tests .functionDRI
2
+
3
+ import scala .annotation .targetName
4
+
5
+
6
+ class A
7
+ class B
8
+
9
+ def a (as : Seq [A ]) = 1
10
+ def a (a : A ) = 2
11
+ def b (b : B ) = 3
12
+
13
+ // scala3doc right now is ignroing @targetName
14
+ // def b(a: A, b: B) = 4
15
+ // @targetName("b2") def b(a: A)(b: B) = 5
16
+
17
+ // @targetName("c_a") def c(p: Seq[A]) = 6
18
+ // @targetName("c_b") def c(p: Seq[B]) = 7
19
+
20
+ // scala3 doc right now is not differentiating between fields and nested classlikes
21
+ // class C(val b: Int):
22
+ // trait b
23
+
24
+ class D :
25
+ trait b :
26
+ def b = 8
27
+ def b = 9
28
+
29
+ class E :
30
+ class F :
31
+ def b = 10
32
+ object F :
33
+ def b = 11
Original file line number Diff line number Diff line change
1
+ package tests .genericDRI
2
+
3
+ class A
4
+ class B
5
+
6
+ def a [T <: A ](t : T ) = 1
7
+ def a [T <: B ](t : T ) = 2
8
+
9
+ def a [T >: A ](t : T ) = 3
Original file line number Diff line number Diff line change
1
+ package tests .givenDRI
2
+
3
+ trait A [T ]
4
+ trait B [T ]
5
+ trait C
6
+
7
+ given A [Int ]
8
+
9
+ given A [String ]
10
+
11
+ given A [Seq [String ]]
12
+
13
+ given [T : A ] as A [Option [T ]]
14
+
15
+ given [T : B ] as A [T ]
16
+
17
+ given [C ] as A [C ]
18
+
19
+ given A [C ]
20
+
21
+ given [S <: C ] as A [S ]
22
+
23
+ class R :
24
+ def a = 1
25
+
26
+ given R as A [Int ]:
27
+ def a = 2
28
+
29
+ class S :
30
+ class R :
31
+ def a = 3
32
+
33
+ given R as A [Int ]:
34
+ def a = 5
Original file line number Diff line number Diff line change
1
+ package tests .shadowingDRI
2
+
3
+ trait A [T ]
4
+ class B
5
+
6
+ class S :
7
+ class R :
8
+ def findThisDeclaration = 1
9
+
10
+ given R as A [B ]
Original file line number Diff line number Diff line change
1
+ package dotty .dokka .linking
2
+
3
+ import scala .jdk .CollectionConverters ._
4
+ import scala .Function .const
5
+ import org .jetbrains .dokka .links .DRI
6
+ import org .jetbrains .dokka .model .DModule
7
+ import dotty .dokka .model .api ._
8
+ import dotty .dokka .{ScaladocTest , Assertion }
9
+
10
+ abstract class DriTest (testName : String ) extends ScaladocTest (testName):
11
+ // override for additional assertions
12
+ def assertOnDRIs (dris : Seq [DRI ]): Unit = ()
13
+
14
+ override def assertions = Assertion .AfterDocumentablesTransformation { root =>
15
+ val dris = root.collectMembers.map(_.dri)
16
+
17
+ val grouping = dris.groupMapReduce(identity)(const(1 ))(_+_)
18
+ val duplicates = grouping.filter { (_, v )=> v > 1 }
19
+
20
+ if duplicates.nonEmpty then
21
+ val duplicatesMessage = duplicates.map { (k, v) => s " $k - $v times " }.mkString(" \n " )
22
+ val otherMessage = grouping.flatMap { (k, v) => Option .when(v == 1 )(k) }.mkString(" \n " )
23
+ val message = s " \n There were some repeating DRIs: \n $duplicatesMessage\n\n Other DRIs: \n $otherMessage\n\n "
24
+ reportError(message)
25
+
26
+ assertOnDRIs(dris)
27
+ } :: Nil
28
+
29
+ extension (m : DModule ) private def collectMembers = m.getPackages.asScala.toList.flatMap(collectFrom)
30
+
31
+ private def collectFrom (m : Member ): Seq [Member ] =
32
+ m +: m.allMembers.filter(_.origin == Origin .DefinedWithin ).flatMap(collectFrom)
Original file line number Diff line number Diff line change
1
+ package dotty .dokka .linking
2
+
3
+ import org .jetbrains .dokka .links .DRI
4
+ import org .junit .Ignore
5
+
6
+ class ExtensionTest extends DriTest (" extensionDRIs" )
7
+
8
+ class GivenTest extends DriTest (" givenDRI" )
9
+
10
+ class GenericTest extends DriTest (" genericDRI" )
11
+
12
+ class FunctionTest extends DriTest (" functionDRI" )
13
+
14
+ @ Ignore class ShadowingTest extends DriTest (" shadowingDRI" ):
15
+ override def assertOnDRIs (dris : Seq [DRI ]) =
16
+ if (! dris.flatMap(d => Option (d.getExtra)).exists(_.contains(" findThisDeclaration" ))) then
17
+ reportError(" \n\n Symbol with name `findThisDeclaration` was expected but not found\n\n " )
You can’t perform that action at this time.
0 commit comments