@@ -69,11 +69,13 @@ trait ClassLikeSupport:
69
69
70
70
val fullExtra =
71
71
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
77
79
78
80
new DClass (
79
81
dri,
@@ -109,9 +111,9 @@ trait ClassLikeSupport:
109
111
case dd : DefDef if ! dd.symbol.isHiddenByVisibility && ! dd.symbol.isSyntheticFunc && dd.symbol.isExtensionMethod =>
110
112
dd.symbol.extendedSymbol.map { extSym =>
111
113
val target = ExtensionTarget (
112
- extSym.symbol.normalizedName,
113
- extSym.tpt.dokkaType.asSignature,
114
- extSym.tpt.symbol.dri,
114
+ extSym.symbol.normalizedName,
115
+ extSym.tpt.dokkaType.asSignature,
116
+ extSym.tpt.symbol.dri,
115
117
extSym.symbol.pos.start
116
118
)
117
119
parseMethod(dd.symbol, kind = Kind .Extension (target))
@@ -203,6 +205,31 @@ trait ClassLikeSupport:
203
205
inherited.flatMap(s => parseInheritedMember(s))
204
206
}
205
207
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
+
206
233
def getParents : List [Tree ] =
207
234
for
208
235
parentTree <- c.parents if isValidPos(parentTree.pos) // We assume here that order is correct
@@ -417,4 +444,3 @@ trait ClassLikeSupport:
417
444
valDef.symbol.source
418
445
))
419
446
)
420
-
0 commit comments