@@ -100,133 +100,7 @@ trait ClassLikeSupport:
100100 deprecated = classDef.symbol.isDeprecated()
101101 )
102102
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)
230104
231105 if signatureOnly then baseMember else baseMember.copy(
232106 members = classDef.extractPatchedMembers.sortBy(m => (m.name, m.kind.name)),
0 commit comments