Skip to content

Commit de0f6a3

Browse files
committed
Opaque types
1 parent 715ffe2 commit de0f6a3

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ trait ClassLikeSupport:
114114
if !isModule then Inkuire.db = Inkuire.db.copy(types = Inkuire.db.types.updated(classType.itid.get, (classType, parents)))
115115

116116
classDef.symbol.declaredTypes.foreach {
117+
case typeSymbol: Symbol if typeSymbol.flags.is(Flags.Opaque) =>
118+
val t = typeSymbol.tree.asInkuire(variableNames)
119+
t match
120+
case t: Inkuire.Type => Inkuire.db = Inkuire.db.copy(types = Inkuire.db.types.updated(t.itid.get, (t, Seq.empty)))
121+
case _ =>
117122
case typeSymbol: Symbol =>
118123
val typeDef = typeSymbol.tree.asInstanceOf[TypeDef]
119124
if typeDef.rhs.symbol.flags.is(Flags.JavaDefined) then

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,20 @@ trait InkuireSupport:
3434
inner(tpeTree.tpe, vars)
3535
case term: Term => inner(term.tpe, vars)
3636
case classDef: ClassDef => mkTypeFromClassDef(classDef, vars)
37-
case typeDef: TypeDef =>
37+
case typeDef: TypeDef => mkTypeDef(typeDef)
38+
}
39+
40+
def mkTypeDef(typeDef: TypeDef): Inkuire.Type = typeDef.rhs match {
41+
case LambdaTypeTree(paramsDefs, _) =>
42+
val name = typeDef.symbol.normalizedName
43+
val normalizedName = if name.matches("_\\$\\d*") then "_" else name
44+
val params = paramsDefs.map(_.name).map(Inkuire.TypeLambda.argument)
45+
Inkuire.Type(
46+
name = Inkuire.TypeName(normalizedName),
47+
itid = typeDef.symbol.itid,
48+
params = params.map(Inkuire.Invariance(_))
49+
)
50+
case _ =>
3851
Inkuire.Type(
3952
name = Inkuire.TypeName(typeDef.name),
4053
itid = typeDef.symbol.itid

0 commit comments

Comments
 (0)