Skip to content

Commit 46e8aa9

Browse files
committed
Better generation of implicit conversions
1 parent a9cd127 commit 46e8aa9

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

scaladoc/src/dotty/tools/scaladoc/Inkuire.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ object Inkuire {
1010
db = db.copy(
1111
functions = db.functions.sortBy(_.hashCode),
1212
types = db.types.toSeq.sortBy(_._1.uuid).toMap,
13-
implicitConversions = db.implicitConversions.sortBy(_._1.uuid)
13+
implicitConversions = db.implicitConversions.sortBy(_._1.hashCode)
1414
)
1515
}
1616

@@ -37,7 +37,7 @@ object Inkuire {
3737
case class InkuireDb(
3838
functions: Seq[ExternalSignature],
3939
types: Map[ITID, (Type, Seq[Type])],
40-
implicitConversions: Seq[(ITID, Type)],
40+
implicitConversions: Seq[(TypeLike, Type)],
4141
typeAliases: Map[ITID, TypeLike]
4242
)
4343

@@ -163,7 +163,7 @@ object Inkuire {
163163
)
164164
}
165165

166-
private def serializeConversion(conversion: (ITID, Type)): JSON = {
166+
private def serializeConversion(conversion: (TypeLike, Type)): JSON = {
167167
jsonList(
168168
Seq(
169169
serialize(conversion._1),

scaladoc/src/dotty/tools/scaladoc/tasty/InkuireSupport.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,16 @@ trait InkuireSupport:
138138

139139
private def handleImplicitConversion(implicitConversion: Symbol, variableNames: Set[String]) = {
140140
val defdef = implicitConversion.tree.asInstanceOf[DefDef]
141-
val to = defdef.returnTpt.asInkuire(variableNames)
141+
val methodVars = defdef.paramss.flatMap(_.params).collect {
142+
case TypeDef(name, _) => name
143+
}
144+
val vars = variableNames ++ methodVars
145+
val to = defdef.returnTpt.asInkuire(vars)
142146
val from = defdef.paramss.flatMap(_.params).collectFirst {
143-
case v: ValDef => v.tpt.asInkuire(variableNames)
147+
case v: ValDef => v.tpt.asInkuire(vars)
144148
}
145149
(from, to) match
146-
case (Some(from: Inkuire.Type), to: Inkuire.Type) => Inkuire.db = Inkuire.db.copy(implicitConversions = Inkuire.db.implicitConversions :+ (from.itid.get -> to))
150+
case (Some(from), to: Inkuire.Type) => Inkuire.db = Inkuire.db.copy(implicitConversions = Inkuire.db.implicitConversions :+ (from -> to))
147151
case _ =>
148152
}
149153

0 commit comments

Comments
 (0)