blob: f322d7a5a62d4f7423e89bc8c164de36c5cb848a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package dotty.tools
package dottydoc
package core
import dotty.tools.dotc.transform.TreeTransforms.{ MiniPhaseTransform, TransformerInfo }
import dotty.tools.dotc.core.Flags
import dotc.core.Contexts.Context
class DocImplicitsPhase extends MiniPhaseTransform { thisTransformer =>
import dotty.tools.dotc.ast.tpd._
def phaseName = "addImplicitsPhase"
override def transformDefDef(tree: DefDef)(implicit ctx: Context, info: TransformerInfo): Tree = {
if (
tree.symbol.is(Flags.Implicit) && // has to have an implicit flag
tree.symbol.owner.isStaticOwner && // owner has to be static (e.g. top-level `object`)
tree.vparamss.length > 0 &&
tree.vparamss(0).length == 1 // should only take one arg, since it has to be a transformation
) {
val convertee = tree.vparamss(0)(0).symbol.info.widenDealias.finalResultType.typeSymbol // the pimped type (i.e. `class`)
ctx.docbase.addDef(convertee, tree.symbol.info.widenDealias.finalResultType.typeSymbol)
}
tree
}
}
|