File tree Expand file tree Collapse file tree 7 files changed +144
-0
lines changed
scala3doc-testcases/src/tests
scala3doc/test/dotty/dokka/linking Expand file tree Collapse file tree 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