@@ -152,23 +152,38 @@ object SymOps:
152152
153153 def splitExtensionParamList : (List [reflect.ParamClause ], List [reflect.ParamClause ]) =
154154 import reflect .*
155- val method = sym.tree.asInstanceOf [DefDef ]
156- (for {
157- defPosition <- method.symbol.pos
158- defStart <- scala.util.Try (defPosition.start).toOption
159- } yield {
160- method.paramss.partition(_.params.headOption.flatMap(_.symbol.pos.map(_.start < defStart)).getOrElse(false ))
161- }).getOrElse(List .empty, List .empty)
155+
156+ def getPositionStartOption (pos : Option [Position ]): Option [Int ] = pos.flatMap {
157+ case dotty.tools.dotc.util.NoSourcePosition => None
158+ case pos : Position => Some (pos.start)
159+ }
160+
161+ def comparePositionStarts (posA : Option [Position ], posB : Option [Position ]): Option [Boolean ] =
162+ for {
163+ startA <- getPositionStartOption(posA)
164+ startB <- getPositionStartOption(posB)
165+ } yield {
166+ startA < startB
167+ }
168+
169+ sym.tree match
170+ case tree : DefDef =>
171+ tree.paramss.partition(_.params.headOption.flatMap(param =>
172+ comparePositionStarts(param.symbol.pos, tree.symbol.pos)).getOrElse(false )
173+ )
174+ case _ => Nil -> Nil
162175
163176 def extendedTypeParams : List [reflect.TypeDef ] =
164177 import reflect .*
165- val method = sym.tree.asInstanceOf [DefDef ]
166- method.leadingTypeParams
178+ sym.tree match
179+ case tree : DefDef =>
180+ tree.leadingTypeParams
181+ case _ => Nil
167182
168183 def extendedTermParamLists : List [reflect.TermParamClause ] =
169184 import reflect .*
170- sym.splitExtensionParamList._1.collect {
171- case tpc : TermParamClause => tpc
185+ sym.splitExtensionParamList._1.collect {
186+ case tpc : TermParamClause => tpc
172187 }
173188
174189 def nonExtensionTermParamLists : List [reflect.TermParamClause ] =
0 commit comments