@@ -199,52 +199,30 @@ object SymOps:
199
199
// println(res._1.map(_.params.map(_.show)).mkString("ExtensionPart:\n","\n","\n"))
200
200
// println(res._2.map(_.params.map(_.show)).mkString("NonExtensionPart:\n","\n","\n"))
201
201
res
202
+
203
+ def extendedParamLists : List [reflect.ParamClause ] =
204
+ sym.splitExtensionParamLists._1
205
+
202
206
def extendedTypeParams : List [reflect.TypeDef ] =
203
- import reflect .*
204
- val method = sym.tree. asInstanceOf [ DefDef ]
205
- method.leadingTypeParams
207
+ val typeParamss : List [ reflect.TypeParamClause ] = sym.extendedParamLists.collect{ case types : reflect. TypeParamClause => types}
208
+ typeParamss.headOption.map(_.params).getOrElse( List ()) // only one type param clause on LHS
209
+
206
210
211
+
207
212
def extendedTermParamLists : List [reflect.TermParamClause ] =
208
- import reflect .*
209
- if sym.nonExtensionLeadingTypeParams.nonEmpty then
210
- sym.nonExtensionParamLists.takeWhile {
211
- case _ : TypeParamClause => false
212
- case _ => true
213
- }.collect {
214
- case tpc : TermParamClause => tpc
215
- }
216
- else
217
- List .empty
213
+ sym.extendedParamLists.collect{case terms : reflect.TermParamClause => terms}
218
214
219
215
def nonExtensionTermParamLists : List [reflect.TermParamClause ] =
220
- import reflect .*
221
- if sym.nonExtensionLeadingTypeParams.nonEmpty then
222
- sym.nonExtensionParamLists.dropWhile {
223
- case _ : TypeParamClause => false
224
- case _ => true
225
- }.drop(1 ).collect {
226
- case tpc : TermParamClause => tpc
227
- }
228
- else
229
- sym.nonExtensionParamLists.collect {
230
- case tpc : TermParamClause => tpc
231
- }
216
+ sym.nonExtensionParamLists.collect{case terms : reflect.TermParamClause => terms}
232
217
233
218
def nonExtensionParamLists : List [reflect.ParamClause ] =
234
- import reflect .*
235
- val method = sym.tree.asInstanceOf [DefDef ]
236
- if sym.isExtensionMethod then
237
- val params = method.paramss
238
- val toDrop = if method.leadingTypeParams.nonEmpty then 2 else 1
239
- if sym.isLeftAssoc || params.size == 1 then params.drop(toDrop)
240
- else params.head :: params.tail.drop(toDrop)
241
- else method.paramss
219
+ sym.splitExtensionParamLists._2
220
+
242
221
243
222
def nonExtensionLeadingTypeParams : List [reflect.TypeDef ] =
244
- import reflect .*
245
- sym.nonExtensionParamLists.collectFirst {
246
- case TypeParamClause (params) => params
247
- }.toList.flatten
223
+ val typeParamss : List [reflect.TypeParamClause ] = sym.nonExtensionParamLists.collect{case types : reflect.TypeParamClause => types}
224
+ typeParamss.headOption.map(_.params).getOrElse(List ()) // only one type param clause on RHS
225
+
248
226
249
227
end extension
250
228
0 commit comments