Skip to content

Commit 5ac497d

Browse files
committed
Add methods for flexible types in Quotes
1 parent 9f759a4 commit 5ac497d

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

compiler/src/scala/quoted/runtime/impl/QuotesImpl.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2356,6 +2356,14 @@ class QuotesImpl private (using val ctx: Context) extends Quotes, QuoteUnpickler
23562356
def unapply(x: FlexibleType): Some[TypeRepr] = Some(x.hi)
23572357
end FlexibleType
23582358

2359+
given FlexibleTypeMethods: FlexibleTypeMethods with
2360+
extension (self: FlexibleType)
2361+
def underlying: TypeRepr = self.hi
2362+
def lo: TypeRepr = self.lo
2363+
def hi: TypeRepr = self.hi
2364+
end extension
2365+
end FlexibleTypeMethods
2366+
23592367
type Constant = dotc.core.Constants.Constant
23602368

23612369
object Constant extends ConstantModule

library/src/scala/quoted/Quotes.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3446,6 +3446,18 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
34463446
def unapply(x: FlexibleType): Option[TypeRepr]
34473447
}
34483448

3449+
/** Makes extension methods on `FlexibleType` available without any imports */
3450+
given FlexibleTypeMethods: FlexibleTypeMethods
3451+
3452+
/** Extension methods of `FlexibleType` */
3453+
trait FlexibleTypeMethods:
3454+
extension (self: FlexibleType)
3455+
def underlying: TypeRepr
3456+
def lo: TypeRepr
3457+
def hi: TypeRepr
3458+
end extension
3459+
end FlexibleTypeMethods
3460+
34493461
///////////////
34503462
// CONSTANTS //
34513463
///////////////

project/MiMaFilters.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ object MiMaFilters {
5353
// `ReversedMissingMethodProblem`s are acceptable. See comment in `Breaking changes since last LTS`.
5454
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule.FlexibleType"),
5555
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule.FlexibleTypeTypeTest"),
56+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#FlexibleTypeMethods.underlying"),
57+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#FlexibleTypeMethods.lo"),
58+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#FlexibleTypeMethods.hi"),
5659
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.isSuperAccessor"),
5760
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule.MethodTypeKind"),
5861
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#MethodTypeModule.apply"),

0 commit comments

Comments
 (0)