@@ -6,7 +6,6 @@ import dotty.tools.scaladoc.{Signature => DSignature}
6
6
import dotty .tools .scaladoc .Inkuire
7
7
8
8
import scala .quoted ._
9
- import scala .util .chaining ._
10
9
11
10
import SymOps ._
12
11
import NameNormalizer ._
@@ -101,135 +100,7 @@ trait ClassLikeSupport:
101
100
deprecated = classDef.symbol.isDeprecated()
102
101
)
103
102
104
- if summon[DocContext ].args.generateInkuire then {
105
-
106
- val classType : Inkuire .Type = classDef.asInkuire(Set .empty).asInstanceOf [Inkuire .Type ]
107
-
108
- def varName (t : Inkuire .TypeLike ): Option [String ] = t match {
109
- case tpe : Inkuire .Type => Some (tpe.name.name)
110
- case tl : Inkuire .TypeLambda => varName(tl.result)
111
- case _ => None
112
- }
113
-
114
- val variableNames : Set [String ] = classType.params.map(_.typ)
115
- .flatMap(varName(_).toList).toSet
116
-
117
- val parents : Seq [Inkuire .Type ] = classDef.parents.map(_.asInkuire(variableNames).asInstanceOf [Inkuire .Type ])
118
-
119
- val isModule = classDef.symbol.flags.is(Flags .Module )
120
-
121
- if ! isModule then Inkuire .db = Inkuire .db.copy(types = Inkuire .db.types.updated(classType.itid.get, (classType, parents)))
122
-
123
- classDef.symbol.declaredTypes
124
- .filter(viableSymbol)
125
- .foreach {
126
- case typeSymbol : Symbol if typeSymbol.flags.is(Flags .Opaque ) =>
127
- val typ = typeSymbol.tree.asInkuire(variableNames)
128
- if typ.isInstanceOf [Inkuire .Type ] then {
129
- val t = typ.asInstanceOf [Inkuire .Type ]
130
- Inkuire .db = Inkuire .db.copy(types = Inkuire .db.types.updated(t.itid.get, (t, Seq .empty)))
131
- }
132
- case typeSymbol : Symbol if ! typeSymbol.isClassDef =>
133
- val typeDef = typeSymbol.tree.asInstanceOf [TypeDef ]
134
- val typ = typeSymbol.tree.asInkuire(variableNames)
135
- if typ.isInstanceOf [Inkuire .Type ] then {
136
- val t = typ.asInstanceOf [Inkuire .Type ]
137
- val rhsTypeLike = typeDef.rhs.asInkuire(variableNames)
138
- Inkuire .db = Inkuire .db.copy(
139
- typeAliases = Inkuire .db.typeAliases.updated(t.itid.get, rhsTypeLike),
140
- types = Inkuire .db.types.updated(t.itid.get, (t, Seq .empty))
141
- )
142
- }
143
- if typeDef.rhs.symbol.flags.is(Flags .JavaDefined ) then
144
- val typJava = typeDef.rhs.asInkuire(variableNames)
145
- if typJava.isInstanceOf [Inkuire .Type ] then {
146
- val tJava = typJava.asInstanceOf [Inkuire .Type ]
147
- Inkuire .db = Inkuire .db.copy(types = Inkuire .db.types.updated(tJava.itid.get, (tJava, Seq .empty)))
148
- }
149
- case _ =>
150
- }
151
-
152
- def viableSymbol (s : Symbol ): Boolean =
153
- ! s.flags.is(Flags .Private ) &&
154
- ! s.flags.is(Flags .Protected ) &&
155
- ! s.flags.is(Flags .Override ) &&
156
- ! s.flags.is(Flags .Synthetic )
157
-
158
- classDef.symbol.declaredMethods
159
- .filter(viableSymbol)
160
- .tap { _.foreach { // Loop for implicit conversions
161
- case implicitConversion : Symbol if implicitConversion.flags.is(Flags .Implicit )
162
- && classDef.symbol.flags.is(Flags .Module )
163
- && implicitConversion.owner.fullName == (" scala.Predef$" ) =>
164
- val defdef = implicitConversion.tree.asInstanceOf [DefDef ]
165
- val to = defdef.returnTpt.asInkuire(variableNames)
166
- val from = defdef.paramss.flatMap(_.params).collectFirst {
167
- case v : ValDef => v.tpt.asInkuire(variableNames)
168
- }
169
- (from, to) match
170
- case (Some (from : Inkuire .Type ), to : Inkuire .Type ) => Inkuire .db = Inkuire .db.copy(implicitConversions = Inkuire .db.implicitConversions :+ (from.itid.get -> to))
171
- case _ =>
172
- case _ =>
173
- }}
174
- .tap { _.foreach { // Loop for functions and vals
175
- case methodSymbol : Symbol =>
176
- val defdef = methodSymbol.tree.asInstanceOf [DefDef ]
177
- val methodVars = defdef.paramss.flatMap(_.params).collect {
178
- case TypeDef (name, _) => name
179
- }
180
- val vars = variableNames ++ methodVars
181
- val receiver : Option [Inkuire .TypeLike ] =
182
- Some (classType)
183
- .filter(_ => ! isModule)
184
- .orElse(methodSymbol.extendedSymbol.flatMap(s => partialAsInkuire(vars).lift(s.tpt)))
185
- val sgn = Inkuire .ExternalSignature (
186
- signature = Inkuire .Signature (
187
- receiver = receiver,
188
- arguments = methodSymbol.nonExtensionTermParamLists.collect {
189
- case tpc@ TermParamClause (params) if ! tpc.isImplicit && ! tpc.isGiven => params // TODO [Inkuire] Implicit parameters
190
- }.flatten.map(_.tpt.asInkuire(vars)),
191
- result = defdef.returnTpt.asInkuire(vars),
192
- context = Inkuire .SignatureContext (
193
- vars = vars.toSet,
194
- constraints = Map .empty // TODO [Inkuire] Type bounds
195
- )
196
- ),
197
- name = methodSymbol.name,
198
- packageName = methodSymbol.dri.location,
199
- uri = methodSymbol.dri.externalLink.getOrElse(" " ),
200
- entryType = " def"
201
- )
202
- val curriedSgn = sgn.copy(signature = Inkuire .curry(sgn.signature))
203
- Inkuire .db = Inkuire .db.copy(functions = Inkuire .db.functions :+ curriedSgn)
204
- }}
205
-
206
- classDef.symbol.declaredFields
207
- .filter(viableSymbol)
208
- .foreach {
209
- case valSymbol : Symbol =>
210
- val valdef = valSymbol.tree.asInstanceOf [ValDef ]
211
- val receiver : Option [Inkuire .TypeLike ] =
212
- Some (classType)
213
- .filter(_ => ! isModule)
214
- val sgn = Inkuire .ExternalSignature (
215
- signature = Inkuire .Signature (
216
- receiver = receiver,
217
- arguments = Seq .empty,
218
- result = valdef.tpt.asInkuire(variableNames),
219
- context = Inkuire .SignatureContext (
220
- vars = variableNames.toSet,
221
- constraints = Map .empty // TODO [Inkuire] Type bounds
222
- )
223
- ),
224
- name = valSymbol.name,
225
- packageName = valSymbol.dri.location,
226
- uri = valSymbol.dri.externalLink.getOrElse(" " ),
227
- entryType = " val"
228
- )
229
- val curriedSgn = sgn.copy(signature = Inkuire .curry(sgn.signature))
230
- Inkuire .db = Inkuire .db.copy(functions = Inkuire .db.functions :+ curriedSgn)
231
- }
232
- }
103
+ if summon[DocContext ].args.generateInkuire then doInkuireStuff(classDef)
233
104
234
105
if signatureOnly then baseMember else baseMember.copy(
235
106
members = classDef.extractPatchedMembers.sortBy(m => (m.name, m.kind.name)),
0 commit comments