Skip to content

Commit 7f40c53

Browse files
committed
Fix infinite loop in members extraction after dotty version bump
1 parent bf0b5b6 commit 7f40c53

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ trait ClassLikeSupport:
130130
case _ => None
131131
)
132132

133+
private def parseInheritedMember(s: Tree): Option[Member] = processTreeOpt(s)(s match
134+
case c: ClassDef if c.symbol.shouldDocumentClasslike && !c.symbol.isGiven => Some(parseClasslike(c, signatureOnly = true))
135+
case other => parseMember(other)
136+
).map(_.withOrigin(Origin.InheritedFrom(s.symbol.owner.name, s.symbol.owner.dri)))
137+
133138
extension (c: ClassDef):
134139
def membersToDocument = c.body.filterNot(_.symbol.isHiddenByVisibility)
135140

@@ -139,14 +144,13 @@ trait ClassLikeSupport:
139144
.map(_.tree)
140145

141146
def extractMembers: Seq[Member] = {
142-
// val inherited = c.getNonTrivialInheritedMemberTrees.collect {
143-
// case dd: DefDef if !dd.symbol.isClassConstructor && !(dd.symbol.isSuperBridgeMethod || dd.symbol.isDefaultHelperMethod) => dd
144-
// case other => other
145-
// }
146-
147-
c.membersToDocument.flatMap(parseMember)
148-
// ++
149-
// inherited.flatMap(s => parseMember(s).map(_.withOrigin(Origin.InheritedFrom(s.symbol.owner.name, s.symbol.owner.dri))))
147+
val inherited = c.getNonTrivialInheritedMemberTrees.collect {
148+
case dd: DefDef if !dd.symbol.isClassConstructor && !(dd.symbol.isSuperBridgeMethod || dd.symbol.isDefaultHelperMethod) => dd
149+
case other => other
150+
}
151+
152+
c.membersToDocument.flatMap(parseMember) ++
153+
inherited.flatMap(s => parseInheritedMember(s))
150154
}
151155

152156
def getParents: List[Tree] =

0 commit comments

Comments
 (0)