Skip to content

Commit 0f7f5ef

Browse files
committed
Put constants extractors in object
1 parent 2015fa1 commit 0f7f5ef

File tree

5 files changed

+130
-120
lines changed

5 files changed

+130
-120
lines changed

compiler/src/dotty/tools/dotc/tasty/TastyImpl.scala

Lines changed: 59 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -755,83 +755,88 @@ object TastyImpl extends scala.tasty.Tasty {
755755

756756
def constantClassTag: ClassTag[Constant] = implicitly[ClassTag[Constant]]
757757

758-
val UnitConstant: UnitExtractor = new UnitExtractor {
759-
def unapply(x: Constant): Boolean = x match {
760-
case x: Constants.Constant => x.tag == Constants.UnitTag
761-
case _ => false
758+
object Constant extends ConstantModule {
759+
760+
object Unit extends UnitExtractor {
761+
def unapply(x: Constant): Boolean = x match {
762+
case x: Constants.Constant => x.tag == Constants.UnitTag
763+
case _ => false
764+
}
762765
}
763-
}
764766

765-
val NullConstant: NullExtractor = new NullExtractor {
766-
def unapply(x: Constant): Boolean = x match {
767-
case x: Constants.Constant => x.tag == Constants.NullTag
768-
case _ => false
767+
object Null extends NullExtractor {
768+
def unapply(x: Constant): Boolean = x match {
769+
case x: Constants.Constant => x.tag == Constants.NullTag
770+
case _ => false
771+
}
769772
}
770-
}
771773

772-
val BooleanConstant: BooleanExtractor = new BooleanExtractor {
773-
def unapply(x: Constant): Option[Boolean] = x match {
774-
case x: Constants.Constant if x.tag == Constants.BooleanTag => Some(x.booleanValue)
775-
case _ => None
774+
object Boolean extends BooleanExtractor {
775+
def unapply(x: Constant): Option[Boolean] = x match {
776+
case x: Constants.Constant if x.tag == Constants.BooleanTag => Some(x.booleanValue)
777+
case _ => None
778+
}
776779
}
777-
}
778780

779-
val ByteConstant: ByteExtractor = new ByteExtractor {
780-
def unapply(x: Constant): Option[Byte] = x match {
781-
case x: Constants.Constant if x.tag == Constants.ByteTag => Some(x.byteValue)
782-
case _ => None
781+
object Byte extends ByteExtractor {
782+
def unapply(x: Constant): Option[Byte] = x match {
783+
case x: Constants.Constant if x.tag == Constants.ByteTag => Some(x.byteValue)
784+
case _ => None
785+
}
783786
}
784-
}
785787

786-
val ShortConstant: ShortExtractor = new ShortExtractor {
787-
def unapply(x: Constant): Option[Short] = x match {
788-
case x: Constants.Constant if x.tag == Constants.ShortTag => Some(x.shortValue)
789-
case _ => None
788+
object Short extends ShortExtractor {
789+
def unapply(x: Constant): Option[Short] = x match {
790+
case x: Constants.Constant if x.tag == Constants.ShortTag => Some(x.shortValue)
791+
case _ => None
792+
}
790793
}
791-
}
792794

793-
val CharConstant: CharExtractor = new CharExtractor {
794-
def unapply(x: Constant): Option[Char] = x match {
795-
case x: Constants.Constant if x.tag == Constants.CharTag => Some(x.charValue)
796-
case _ => None
795+
object Char extends CharExtractor {
796+
def unapply(x: Constant): Option[Char] = x match {
797+
case x: Constants.Constant if x.tag == Constants.CharTag => Some(x.charValue)
798+
case _ => None
799+
}
797800
}
798-
}
799801

800-
val IntConstant: IntExtractor = new IntExtractor {
801-
def unapply(x: Constant): Option[Int] = x match {
802-
case x: Constants.Constant if x.tag == Constants.IntTag => Some(x.intValue)
803-
case _ => None
802+
object Int extends IntExtractor {
803+
def unapply(x: Constant): Option[Int] = x match {
804+
case x: Constants.Constant if x.tag == Constants.IntTag => Some(x.intValue)
805+
case _ => None
806+
}
804807
}
805-
}
806808

807-
val LongConstant: LongExtractor = new LongExtractor {
808-
def unapply(x: Constant): Option[Long] = x match {
809-
case x: Constants.Constant if x.tag == Constants.LongTag => Some(x.longValue)
810-
case _ => None
809+
object Long extends LongExtractor {
810+
def unapply(x: Constant): Option[Long] = x match {
811+
case x: Constants.Constant if x.tag == Constants.LongTag => Some(x.longValue)
812+
case _ => None
813+
}
811814
}
812-
}
813815

814-
val FloatConstant: FloatExtractor = new FloatExtractor {
815-
def unapply(x: Constant): Option[Float] = x match {
816-
case x: Constants.Constant if x.tag == Constants.FloatTag => Some(x.floatValue)
817-
case _ => None
816+
object Float extends FloatExtractor {
817+
def unapply(x: Constant): Option[Float] = x match {
818+
case x: Constants.Constant if x.tag == Constants.FloatTag => Some(x.floatValue)
819+
case _ => None
820+
}
818821
}
819-
}
820822

821-
val DoubleConstant: DoubleExtractor = new DoubleExtractor {
822-
def unapply(x: Constant): Option[Double] = x match {
823-
case x: Constants.Constant if x.tag == Constants.DoubleTag => Some(x.doubleValue)
824-
case _ => None
823+
object Double extends DoubleExtractor {
824+
def unapply(x: Constant): Option[Double] = x match {
825+
case x: Constants.Constant if x.tag == Constants.DoubleTag => Some(x.doubleValue)
826+
case _ => None
827+
}
825828
}
826-
}
827829

828-
val StringConstant: StringExtractor = new StringExtractor {
829-
def unapply(x: Constant): Option[String] = x match {
830-
case x: Constants.Constant if x.tag == Constants.StringTag => Some(x.stringValue)
831-
case _ => None
830+
object String extends StringExtractor {
831+
def unapply(x: Constant): Option[String] = x match {
832+
case x: Constants.Constant if x.tag == Constants.StringTag => Some(x.stringValue)
833+
case _ => None
834+
}
832835
}
836+
833837
}
834838

839+
835840
// ===== Modifier =================================================
836841

837842
type Modifier = ModImpl

library/src/scala/tasty/Tasty.scala

Lines changed: 57 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -573,59 +573,64 @@ abstract class Tasty {
573573

574574
implicit def constantClassTag: ClassTag[Constant]
575575

576-
val UnitConstant: UnitExtractor
577-
abstract class UnitExtractor {
578-
def unapply(x: Constant): Boolean
579-
}
580-
581-
val NullConstant: NullExtractor
582-
abstract class NullExtractor {
583-
def unapply(x: Constant): Boolean
584-
}
585-
586-
val BooleanConstant: BooleanExtractor
587-
abstract class BooleanExtractor {
588-
def unapply(x: Constant): Option[Boolean]
589-
}
590-
591-
val ByteConstant: ByteExtractor
592-
abstract class ByteExtractor {
593-
def unapply(x: Constant): Option[Byte]
594-
}
595-
596-
val ShortConstant: ShortExtractor
597-
abstract class ShortExtractor {
598-
def unapply(x: Constant): Option[Short]
599-
}
600-
601-
val CharConstant: CharExtractor
602-
abstract class CharExtractor {
603-
def unapply(x: Constant): Option[Char]
604-
}
605-
606-
val IntConstant: IntExtractor
607-
abstract class IntExtractor {
608-
def unapply(x: Constant): Option[Int]
609-
}
610-
611-
val LongConstant: LongExtractor
612-
abstract class LongExtractor {
613-
def unapply(x: Constant): Option[Long]
614-
}
615-
616-
val FloatConstant: FloatExtractor
617-
abstract class FloatExtractor {
618-
def unapply(x: Constant): Option[Float]
619-
}
620-
621-
val DoubleConstant: DoubleExtractor
622-
abstract class DoubleExtractor {
623-
def unapply(x: Constant): Option[Double]
624-
}
576+
val Constant: ConstantModule
577+
abstract class ConstantModule {
578+
579+
val Unit: UnitExtractor
580+
abstract class UnitExtractor {
581+
def unapply(x: Constant): Boolean
582+
}
583+
584+
val Null: NullExtractor
585+
abstract class NullExtractor {
586+
def unapply(x: Constant): Boolean
587+
}
588+
589+
val Boolean: BooleanExtractor
590+
abstract class BooleanExtractor {
591+
def unapply(x: Constant): Option[Boolean]
592+
}
593+
594+
val Byte: ByteExtractor
595+
abstract class ByteExtractor {
596+
def unapply(x: Constant): Option[Byte]
597+
}
598+
599+
val Short: ShortExtractor
600+
abstract class ShortExtractor {
601+
def unapply(x: Constant): Option[Short]
602+
}
603+
604+
val Char: CharExtractor
605+
abstract class CharExtractor {
606+
def unapply(x: Constant): Option[Char]
607+
}
608+
609+
val Int: IntExtractor
610+
abstract class IntExtractor {
611+
def unapply(x: Constant): Option[Int]
612+
}
613+
614+
val Long: LongExtractor
615+
abstract class LongExtractor {
616+
def unapply(x: Constant): Option[Long]
617+
}
618+
619+
val Float: FloatExtractor
620+
abstract class FloatExtractor {
621+
def unapply(x: Constant): Option[Float]
622+
}
623+
624+
val Double: DoubleExtractor
625+
abstract class DoubleExtractor {
626+
def unapply(x: Constant): Option[Double]
627+
}
628+
629+
val String: StringExtractor
630+
abstract class StringExtractor {
631+
def unapply(x: Constant): Option[String]
632+
}
625633

626-
val StringConstant: StringExtractor
627-
abstract class StringExtractor {
628-
def unapply(x: Constant): Option[String]
629634
}
630635

631636
// ===== Modifiers ================================================

library/src/scala/tasty/util/TastyPrinter.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,17 @@ class TastyPrinter[T <: Tasty with Singleton](val tasty: T) {
130130
}
131131

132132
def visitConstant(x: Constant): Buffer = x match {
133-
case UnitConstant() => this += "Unit()"
134-
case NullConstant() => this += "Null()"
135-
case BooleanConstant(value) => this += "Boolean(" += value += ")"
136-
case ByteConstant(value) => this += "Byte(" += value += ")"
137-
case ShortConstant(value) => this += "Short(" += value += ")"
138-
case CharConstant(value) => this += "Char(" += value += ")"
139-
case IntConstant(value) => this += "Int(" += value.toString += ")"
140-
case LongConstant(value) => this += "Long(" += value += ")"
141-
case FloatConstant(value) => this += "Float(" += value += ")"
142-
case DoubleConstant(value) => this += "Double(" += value += ")"
143-
case StringConstant(value) => this += "String(" += value += ")"
133+
case Constant.Unit() => this += "Unit()"
134+
case Constant.Null() => this += "Null()"
135+
case Constant.Boolean(value) => this += "Boolean(" += value += ")"
136+
case Constant.Byte(value) => this += "Byte(" += value += ")"
137+
case Constant.Short(value) => this += "Short(" += value += ")"
138+
case Constant.Char(value) => this += "Char(" += value += ")"
139+
case Constant.Int(value) => this += "Int(" += value.toString += ")"
140+
case Constant.Long(value) => this += "Long(" += value += ")"
141+
case Constant.Float(value) => this += "Float(" += value += ")"
142+
case Constant.Double(value) => this += "Double(" += value += ")"
143+
case Constant.String(value) => this += "String(" += value += ")"
144144
}
145145

146146
def visitType(x: TypeOrBounds): Buffer = x match {

tests/run/tasty-eval/quoted_1.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ object Macros {
2525
e.toTasty.tpe match {
2626
case SymRef(ValDef(_, tpt, _), pre) =>
2727
tpt.tpe match {
28-
case ConstantType(IntConstant(i)) => Some(i)
28+
case ConstantType(Constant.Int(i)) => Some(i)
2929
case _ => None
3030
}
31-
case ConstantType(IntConstant(i)) => Some(i)
31+
case ConstantType(Constant.Int(i)) => Some(i)
3232
case _ => None
3333
}
3434
}

tests/run/tasty-indexed-map/quoted_1.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ object Index {
3232
import u.tasty._
3333

3434
def name(tp: TypeOrBounds): String = tp match {
35-
case ConstantType(StringConstant(str)) => str
35+
case ConstantType(Constant.String(str)) => str
3636
}
3737

3838
def names(tp: TypeOrBounds): List[String] = tp match {

0 commit comments

Comments
 (0)