Skip to content

Commit 5d34fba

Browse files
committed
Generalise SymOps to more than one def type clause
1 parent 7f5dd67 commit 5d34fba

File tree

2 files changed

+25
-28
lines changed

2 files changed

+25
-28
lines changed

library/src/scala/quoted/Quotes.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3119,7 +3119,7 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
31193119
/** Extension methods of `MethodType` */
31203120
trait MethodTypeMethods:
31213121
extension (self: MethodType)
3122-
/** Is this the type of given parameter clause `(implicit X1, ..., Xn)`, `(given X1, ..., Xn)` or `(given x1: X1, ..., xn: Xn)` */
3122+
/** Is this the type of using parameter clause `(implicit X1, ..., Xn)`, `(using X1, ..., Xn)` or `(using x1: X1, ..., xn: Xn)` */
31233123
def isImplicit: Boolean
31243124
def isErased: Boolean
31253125
def param(idx: Int): TypeRepr

scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,9 @@ object SymOps:
143143
import reflect._
144144
sym.flags.is(Flags.Artifact)
145145

146-
def isLeftAssoc: Boolean = !sym.name.endsWith(":")
146+
def isRightAssoc: Boolean = sym.name.endsWith(":")
147+
148+
def isLeftAssoc: Boolean = !sym.isRightAssoc
147149

148150
def extendedSymbol: Option[reflect.ValDef] =
149151
import reflect.*
@@ -172,41 +174,36 @@ object SymOps:
172174
)
173175
case _ => Nil -> Nil
174176

177+
def extendedParamLists: List[reflect.ParamClause] = sym.splitExtensionParamList._1
178+
179+
def extendedTypeParamLists: List[reflect.TypeParamClause] =
180+
sym.extendedParamLists.collect {
181+
case typeClause: reflect.TypeParamClause => typeClause
182+
}
183+
175184
def extendedTypeParams: List[reflect.TypeDef] =
176-
import reflect.*
177-
sym.tree match
178-
case tree: DefDef =>
179-
tree.leadingTypeParams
180-
case _ => Nil
185+
sym.extendedTypeParamLists.headOption.map(_.params).getOrElse(List())
181186

182187
def extendedTermParamLists: List[reflect.TermParamClause] =
183-
import reflect.*
184-
sym.splitExtensionParamList._1.collect {
185-
case tpc: TermParamClause => tpc
188+
sym.extendedParamLists.collect {
189+
case tpc: reflect.TermParamClause => tpc
186190
}
187191

188-
def nonExtensionTermParamLists: List[reflect.TermParamClause] =
189-
import reflect.*
190-
if sym.nonExtensionLeadingTypeParams.nonEmpty then
191-
sym.nonExtensionParamLists.dropWhile {
192-
case _: TypeParamClause => false
193-
case _ => true
194-
}.drop(1).collect {
195-
case tpc: TermParamClause => tpc
196-
}
197-
else
198-
sym.nonExtensionParamLists.collect {
199-
case tpc: TermParamClause => tpc
200-
}
201-
202192
def nonExtensionParamLists: List[reflect.ParamClause] =
203193
sym.splitExtensionParamList._2
204194

195+
def nonExtensionTermParamLists: List[reflect.TermParamClause] =
196+
sym.nonExtensionParamLists.collect {
197+
case tpc: reflect.TermParamClause => tpc
198+
}
199+
200+
def nonExtensionTypeParamLists: List[reflect.TypeParamClause] =
201+
sym.nonExtensionParamLists.collect {
202+
case typeClause: reflect.TypeParamClause => typeClause
203+
}
204+
205205
def nonExtensionLeadingTypeParams: List[reflect.TypeDef] =
206-
import reflect.*
207-
sym.nonExtensionParamLists.collectFirst {
208-
case TypeParamClause(params) => params
209-
}.toList.flatten
206+
sym.nonExtensionTypeParamLists.headOption.map(_.params).getOrElse(List())
210207

211208
end extension
212209

0 commit comments

Comments
 (0)