@@ -69,11 +69,13 @@ trait ClassLikeSupport:
6969
7070 val fullExtra =
7171 if (signatureOnly) baseExtra
72- else baseExtra.plus(CompositeMemberExtension (
73- classDef.extractMembers,
74- classDef.getParents.map(_.dokkaType.asSignature),
75- supertypes,
76- Nil ))
72+ else
73+ baseExtra.plus(CompositeMemberExtension (
74+ classDef.extractPatchedMembers,
75+ classDef.getParents.map(_.dokkaType.asSignature),
76+ supertypes,
77+ Nil ))
78+ end if
7779
7880 new DClass (
7981 dri,
@@ -203,6 +205,31 @@ trait ClassLikeSupport:
203205 inherited.flatMap(s => parseInheritedMember(s))
204206 }
205207
208+ /** Extracts members while taking Dotty logic for patching the stdlib into account. */
209+ def extractPatchedMembers : Seq [Member ] = {
210+ val ownMembers = c.extractMembers
211+ def extractPatchMembers (sym : Symbol ) = {
212+ // NOTE for some reason scala.language$.experimental$ class doesn't show up here, so we manually add the name
213+ val ownMemberDRIs = ownMembers.iterator.map(_.name).toSet + " experimental$"
214+ sym.tree.asInstanceOf [ClassDef ]
215+ .membersToDocument.filterNot(m => ownMemberDRIs.contains(m.symbol.name))
216+ .flatMap(parseMember)
217+ }
218+ c.symbol.show match {
219+ case " scala.Predef$" =>
220+ ownMembers ++
221+ extractPatchMembers(qctx.reflect.Symbol .requiredClass(" scala.runtime.stdLibPatches.Predef$" ))
222+ case " scala.language$" =>
223+ ownMembers ++
224+ extractPatchMembers(qctx.reflect.Symbol .requiredModule(" scala.runtime.stdLibPatches.language" ).moduleClass)
225+ case " scala.language$.experimental$" =>
226+ ownMembers ++
227+ extractPatchMembers(qctx.reflect.Symbol .requiredModule(" scala.runtime.stdLibPatches.language.experimental" ).moduleClass)
228+ case _ => ownMembers
229+ }
230+
231+ }
232+
206233 def getParents : List [Tree ] =
207234 for
208235 parentTree <- c.parents if isValidPos(parentTree.pos) // We assume here that order is correct
@@ -417,4 +444,3 @@ trait ClassLikeSupport:
417444 valDef.symbol.source
418445 ))
419446 )
420-
0 commit comments