@@ -94,143 +94,54 @@ trait ClassLikeSupport:
94
94
deprecated = classDef.symbol.isDeprecated()
95
95
)
96
96
97
- //
97
+ if summon[ DocContext ].generateInkuire then {
98
98
99
- /**
100
- * Stuff the doesn't work yet:
101
- * - Type parameters work in types but don't work in parents and in types that are arguments or results of functions
102
- * - Extension functions
103
- * - Inheritance of special types (Any, AnyVal, AnyRef, Nothing, ...)
104
- * - SYNTAX!!! <- that's in Inkuire e.g. tuples, different arrows, different parentheses with type params, different constraint syntax
105
- * - Type param constraints
106
- */
99
+ /**
100
+ * Stuff the doesn't work yet:
101
+ * - Type parameters work in types but don't work in parents and in types that are arguments or results of functions
102
+ * - Extension functions
103
+ * - Inheritance of special types (Any, AnyVal, AnyRef, Nothing, ...)
104
+ * - SYNTAX!!! <- that's in Inkuire e.g. tuples, different arrows, different parentheses with type params, different constraint syntax
105
+ * - Type param constraints
106
+ */
107
107
108
- //
108
+ val classType = classDef.asInkuire(Set .empty, true )
109
+ val variableNames = classType.params.map(_.typ.name.name).toSet
109
110
110
- val classType = classDef.asInkuire(Set .empty, true )
111
- val variableNames = classType.params.map(_.typ.name.name).toSet // TODO pass further
111
+ val parents = classDef.parents.map(_.asInkuire(variableNames, false ))
112
112
113
- val parents = classDef.parents.map(_.asInkuire(variableNames, false ) )
113
+ val isModule = classDef.symbol.flags.is( Flags . Module )
114
114
115
- val isModule = classDef.symbol.flags.is( Flags . Module )
115
+ if ! isModule then Inkuire .db = Inkuire .db.copy(types = Inkuire .db.types.updated(classType.itid.get, (classType, parents)) )
116
116
117
- if ! isModule then Inkuire .db = Inkuire .db.copy(types = Inkuire .db.types.updated(classType.itid.get, (classType, parents)))
117
+ val methods = classDef.symbol.declaredMethods.collect {
118
+ case methodSymbol : Symbol =>
119
+ val defdef = methodSymbol.tree.asInstanceOf [DefDef ]
120
+ val methodVars = defdef.paramss.flatMap(_.params).collect {
121
+ case TypeDef (name, _) => name
122
+ }
123
+ val vars = variableNames ++ methodVars
124
+ Inkuire .ExternalSignature (
125
+ signature = Inkuire .Signature (
126
+ receiver = Some (classType).filter(_ => ! isModule),
127
+ arguments = defdef.paramss.flatMap(_.params).collect {
128
+ case ValDef (_, tpe, _) => tpe.asInkuire(vars, false )
129
+ },
130
+ result = defdef.returnTpt.asInkuire(vars, false ),
131
+ context = Inkuire .SignatureContext (
132
+ vars = vars.toSet,
133
+ constraints = Map .empty // TODO for future
134
+ )
135
+ ),
136
+ name = methodSymbol.name,
137
+ packageName = methodSymbol.dri.location,
138
+ uri = methodSymbol.dri.externalLink.getOrElse(" " )
139
+ )
140
+ }
118
141
119
- val methods = classDef.symbol.declaredMethods.collect {
120
- case methodSymbol : Symbol =>
121
- val defdef = methodSymbol.tree.asInstanceOf [DefDef ]
122
- val methodVars = defdef.paramss.flatMap(_.params).collect {
123
- case TypeDef (name, _) => name
124
- }
125
- val vars = variableNames ++ methodVars
126
- Inkuire .ExternalSignature (
127
- signature = Inkuire .Signature (
128
- receiver = Some (classType).filter(_ => ! isModule),
129
- arguments = defdef.paramss.flatMap(_.params).collect {
130
- case ValDef (_, tpe, _) => tpe.asInkuire(vars, false )
131
- },
132
- result = defdef.returnTpt.asInkuire(vars, false ),
133
- context = Inkuire .SignatureContext (
134
- vars = vars.toSet,
135
- constraints = Map .empty // TODO for the future
136
- )
137
- ),
138
- name = methodSymbol.name,
139
- packageName = methodSymbol.dri.location,
140
- uri = methodSymbol.dri.externalLink.getOrElse(" " )
141
- )
142
- }
142
+ Inkuire .db = Inkuire .db.copy(functions = Inkuire .db.functions ++ methods)
143
143
144
- Inkuire .db = Inkuire .db.copy(functions = Inkuire .db.functions ++ methods)
145
-
146
- //
147
-
148
- // def typeParamsToInkuire(typeParams: Seq[TypeParameter], vars: Seq[String], isVariable: Boolean): Seq[Inkuire.Variance] = {
149
- // typeParams.map { p =>
150
- // val t = Inkuire.Type(
151
- // name = Inkuire.TypeName(p.name),
152
- // itid = Some(Inkuire.ITID(p.dri.symbolUUID, isParsed = false)),
153
- // isVariable = vars.contains(p.name) || isVariable,
154
- // params = Seq.empty //TODO not there
155
- // )
156
- // p.variance match {
157
- // case "" => Inkuire.Invariance(t)
158
- // case "+" => Inkuire.Covariance(t)
159
- // case "-" => Inkuire.Contravariance(t)
160
- // }
161
- // }
162
- // }
163
-
164
- // def paramsFromKind(kind: Kind, vars: Seq[String], isVariable: Boolean): Seq[Inkuire.Variance] = kind match {
165
- // case Kind.Class(typeParams, _) => typeParamsToInkuire(typeParams, vars, isVariable)
166
- // case Kind.Trait(typeParams, _) => typeParamsToInkuire(typeParams, vars, isVariable)
167
- // case Kind.Enum(typeParams, _) => typeParamsToInkuire(typeParams, vars, isVariable)
168
- // case _ => Seq.empty
169
- // }
170
-
171
- // val typeITID = Inkuire.ITID(classDef.symbol.dri.symbolUUID, isParsed = false)
172
- // val params = paramsFromKind(baseMember.kind, Seq.empty, true)
173
- // val variablesNames = params.map(_.typ.name.name)
174
- // val baseType = Inkuire.Type(
175
- // name = Inkuire.TypeName(classDef.symbol.name),
176
- // itid = Some(typeITID),
177
- // params = params
178
- // )
179
- // val parents = classDef.getParentsAsLinkToTypes.map {
180
- // case l: LinkToType if l.signature.exists(_.isInstanceOf[Link]) =>
181
- // val link = l.signature.filter(_.isInstanceOf[Link]).head.asInstanceOf[Link]
182
- // if baseType.name.name == "Seq" then {
183
- // println(link.name)
184
- // println(l.kind)
185
- // }
186
- // Inkuire.Type(
187
- // name = Inkuire.TypeName(link.name),
188
- // itid = Some(Inkuire.ITID(link.dri.symbolUUID, isParsed = false)),
189
- // params = paramsFromKind(l.kind, variablesNames, false)
190
- // )
191
- // }
192
- // val isModule = baseMember.kind match {
193
- // case Kind.Object | Kind.Package | Kind.RootPackage => true
194
- // case _ => false
195
- // }
196
- // if !isModule then Inkuire.db = Inkuire.db.copy(types = Inkuire.db.types.updated(typeITID, (baseType, parents)))
197
- // val methods: Seq[Inkuire.ExternalSignature] = classDef.membersToDocument.flatMap(parseMember(classDef)).collect {
198
- // case m: Member if m.kind.isInstanceOf[Kind.Def] && m.signature.exists(_.isInstanceOf[Link]) =>
199
- // val kind: Kind.Def = m.kind.asInstanceOf[Kind.Def]
200
- // val resultLink = m.signature.filter(_.isInstanceOf[Link]).head.asInstanceOf[Link]
201
- // val typeParamNames = variablesNames ++ kind.typeParams.map(p => p.name)
202
- // val function = Inkuire.ExternalSignature(
203
- // signature = Inkuire.Signature(
204
- // receiver = Some(baseType).filter(_ => !isModule),
205
- // arguments = kind.argsLists.flatMap(_.parameters).flatMap(_.signature).collect {
206
- // case l: Link =>
207
- // Inkuire.Type(
208
- // name = Inkuire.TypeName(l.name),
209
- // itid = Some(Inkuire.ITID(l.dri.symbolUUID, isParsed = false)),
210
- // isVariable = typeParamNames.contains(l.name),
211
- // params = Seq.empty //TODO not there
212
- // )
213
- // },
214
- // result = Inkuire.Type(
215
- // name = Inkuire.TypeName(resultLink.name),
216
- // itid = Some(Inkuire.ITID(resultLink.dri.symbolUUID, isParsed = false)),
217
- // isVariable = typeParamNames.contains(resultLink.name),
218
- // params = Seq.empty //TODO not there
219
- // ),
220
- // context = Inkuire.SignatureContext(
221
- // vars = typeParamNames.toSet,
222
- // constraints = Map.empty //TODO for the future
223
- // )
224
- // ),
225
- // name = m.name,
226
- // packageName = classDef.symbol.dri.location,
227
- // uri = m.dri.externalLink.getOrElse("")
228
- // )
229
- // function
230
- // }
231
- // Inkuire.db = Inkuire.db.copy(functions = Inkuire.db.functions ++ methods)
232
-
233
- //
144
+ }
234
145
235
146
if signatureOnly then baseMember else baseMember.copy(
236
147
members = classDef.extractPatchedMembers,
0 commit comments