Skip to content

Commit ff3db41

Browse files
committed
Handle exports of object properties
1 parent 5633399 commit ff3db41

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed

scala3doc-testcases/src/tests/exports.scala

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,22 @@ package tests
22
package exports
33

44
class A:
5-
def defInt: Int = 1
6-
def def1: 1 = 1
7-
val valInt: Int = 1
8-
val val1: 1 = 1
9-
var varInt: Int = 1
10-
var var1: 1 = 1
5+
def aDefInt: Int = 1
6+
def aDef1: 1 = 1
7+
val aValInt: Int = 1
8+
val aVal1: 1 = 1
9+
var aVarInt: Int = 1
10+
var aVar1: 1 = 1
11+
12+
object X:
13+
def xDefInt: Int = 1
14+
def xDef1: 1 = 1
15+
val xValInt: Int = 1
16+
val xVal1: 1 = 1
17+
var xVarInt: Int = 1
18+
var xVar1: 1 = 1
1119

1220
class B:
1321
val a = new A
1422
export a._
23+
export X._

scala3doc/src/dotty/dokka/site/PartiallyRenderedContent.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ class A:
5050
var varInt: Int = 1
5151
var var1: 1 = 1
5252

53+
object X:
54+
def x: Int = 1
55+
val x2: 1 = 1
56+
var x3: Int = 1
57+
5358
class B:
5459
val a = new A
5560
export a._
61+
export X._
5662

scala3doc/src/dotty/dokka/tasty/ClassLikeSupport.scala

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -125,22 +125,17 @@ trait ClassLikeSupport:
125125
}
126126

127127
case dd: DefDef if !dd.symbol.isHiddenByVisibility && dd.symbol.isExported =>
128-
val exportedTarget = dd.rhs.flatMap {
129-
case a: Apply => Some(a.fun)
130-
case s: Select => Some(s)
131-
case _ => None
132-
}.map {
128+
val exportedTarget = dd.rhs.collect {
129+
case a: Apply => a.fun.asInstanceOf[Select]
133130
case s: Select => s
134-
}
135-
val functionName = exportedTarget.fold("instance")(_.name)
136-
val instanceName = exportedTarget.fold("function")(_.qualifier.asInstanceOf[Select].name)
137-
val dri = dd.rhs.flatMap {
138-
case a: Apply => None
139-
case s: Select =>
140-
val dri = s.symbol.dri
141-
dri.getCallable match
142-
case null => None
143-
case _ => Some(dri)
131+
}
132+
val functionName = exportedTarget.fold("function")(_.name)
133+
val instanceName = exportedTarget.collect {
134+
case Select(qualifier: Select, _) => qualifier.name
135+
case Select(qualifier: Ident, _) => qualifier.tpe.typeSymbol.name
136+
}.getOrElse("instance")
137+
val dri = dd.rhs.collect {
138+
case s: Select if s.symbol.isDefDef => s.symbol.dri
144139
}.orElse(exportedTarget.map(_.qualifier.tpe.typeSymbol.dri))
145140
Some(parseMethod(dd.symbol, kind = Kind.Exported).withOrigin(Origin.ExportedFrom(s"$instanceName.$functionName", dri)))
146141

0 commit comments

Comments
 (0)