Skip to content

Commit 43a1a26

Browse files
committed
Refactor existing methods using new heuristic
1 parent d0f7300 commit 43a1a26

File tree

1 file changed

+15
-37
lines changed

1 file changed

+15
-37
lines changed

Diff for: scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala

+15-37
Original file line numberDiff line numberDiff line change
@@ -199,52 +199,30 @@ object SymOps:
199199
//println(res._1.map(_.params.map(_.show)).mkString("ExtensionPart:\n","\n","\n"))
200200
//println(res._2.map(_.params.map(_.show)).mkString("NonExtensionPart:\n","\n","\n"))
201201
res
202+
203+
def extendedParamLists: List[reflect.ParamClause] =
204+
sym.splitExtensionParamLists._1
205+
202206
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+
206210

211+
207212
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}
218214

219215
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}
232217

233218
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+
242221

243222
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+
248226

249227
end extension
250228

0 commit comments

Comments
 (0)