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