diff --git a/compiler/src/dotty/tools/dotc/tastyreflect/ConstantOpsImpl.scala b/compiler/src/dotty/tools/dotc/tastyreflect/ConstantOpsImpl.scala index 65cd0e8ce2ef..b467f60d04ce 100644 --- a/compiler/src/dotty/tools/dotc/tastyreflect/ConstantOpsImpl.scala +++ b/compiler/src/dotty/tools/dotc/tastyreflect/ConstantOpsImpl.scala @@ -12,14 +12,17 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { object Constant extends ConstantModule { object Unit extends UnitModule { + def apply(): Constant = Constants.Constant(()) def unapply(x: Constant): Boolean = x.tag == Constants.UnitTag } object Null extends NullModule { + def apply(): Constant = Constants.Constant(null) def unapply(x: Constant): Boolean = x.tag == Constants.NullTag } object Boolean extends BooleanModule { + def apply(x: Boolean): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Boolean] = x match { case x: Constants.Constant if x.tag == Constants.BooleanTag => Some(x.booleanValue) case _ => None @@ -27,6 +30,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Byte extends ByteModule { + def apply(x: Byte): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Byte] = x match { case x: Constants.Constant if x.tag == Constants.ByteTag => Some(x.byteValue) case _ => None @@ -34,6 +38,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Short extends ShortModule { + def apply(x: Short): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Short] = x match { case x: Constants.Constant if x.tag == Constants.ShortTag => Some(x.shortValue) case _ => None @@ -41,6 +46,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Char extends CharModule { + def apply(x: Char): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Char] = x match { case x: Constants.Constant if x.tag == Constants.CharTag => Some(x.charValue) case _ => None @@ -48,6 +54,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Int extends IntModule { + def apply(x: Int): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Int] = x match { case x: Constants.Constant if x.tag == Constants.IntTag => Some(x.intValue) case _ => None @@ -55,6 +62,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Long extends LongModule { + def apply(x: Long): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Long] = x match { case x: Constants.Constant if x.tag == Constants.LongTag => Some(x.longValue) case _ => None @@ -62,6 +70,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Float extends FloatModule { + def apply(x: Float): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Float] = x match { case x: Constants.Constant if x.tag == Constants.FloatTag => Some(x.floatValue) case _ => None @@ -69,6 +78,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Double extends DoubleModule { + def apply(x: Double): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Double] = x match { case x: Constants.Constant if x.tag == Constants.DoubleTag => Some(x.doubleValue) case _ => None @@ -76,6 +86,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object String extends StringModule { + def apply(x: String): Constant = Constants.Constant(x) def unapply(x: Constant): Option[String] = x match { case x: Constants.Constant if x.tag == Constants.StringTag => Some(x.stringValue) case _ => None @@ -83,6 +94,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object ClassTag extends ClassTagModule { + def apply[T](implicit x: scala.reflect.ClassTag[T]): Constant = Constants.Constant(x) def unapply(x: Constant): Option[Type] = x match { case x: Constants.Constant if x.tag == Constants.ClazzTag => Some(x.typeValue) case _ => None @@ -90,6 +102,7 @@ trait ConstantOpsImpl extends scala.tasty.reflect.ConstantOps with CoreImpl { } object Symbol extends SymbolModule { + def apply(x: scala.Symbol): Constant = Constants.Constant(x) def unapply(x: Constant): Option[scala.Symbol] = x match { case x: Constants.Constant if x.tag == Constants.ScalaSymbolTag => Some(x.scalaSymbolValue) case _ => None diff --git a/library/src/scala/tasty/reflect/ConstantOps.scala b/library/src/scala/tasty/reflect/ConstantOps.scala index 7189e8bad9f2..920a07ad64a8 100644 --- a/library/src/scala/tasty/reflect/ConstantOps.scala +++ b/library/src/scala/tasty/reflect/ConstantOps.scala @@ -15,6 +15,9 @@ trait ConstantOps extends Core { /** Module of Null literals */ val Unit: UnitModule abstract class UnitModule { + /** Unit `()` literal */ + def apply(): Constant + /** Extractor for Unit literals */ def unapply(constant: Constant): Boolean } @@ -22,6 +25,9 @@ trait ConstantOps extends Core { /** Module of Null literals */ val Null: NullModule abstract class NullModule { + /** `null` literal */ + def apply(): Constant + /** Extractor for Null literals */ def unapply(constant: Constant): Boolean } @@ -29,6 +35,9 @@ trait ConstantOps extends Core { /** Module of Boolean literals */ val Boolean: BooleanModule abstract class BooleanModule { + /** Boolean literal */ + def apply(x: Boolean): Constant + /** Extractor for Boolean literals */ def unapply(constant: Constant): Option[Boolean] } @@ -36,6 +45,9 @@ trait ConstantOps extends Core { /** Module of Byte literals */ val Byte: ByteModule abstract class ByteModule { + /** Byte literal */ + def apply(x: Byte): Constant + /** Extractor for Byte literals */ def unapply(constant: Constant): Option[Byte] } @@ -43,6 +55,9 @@ trait ConstantOps extends Core { /** Module of Short literals */ val Short: ShortModule abstract class ShortModule { + /** Short literal */ + def apply(x: Short): Constant + /** Extractor for Short literals */ def unapply(constant: Constant): Option[Short] } @@ -50,6 +65,9 @@ trait ConstantOps extends Core { /** Module of Char literals */ val Char: CharModule abstract class CharModule { + /** Char literal */ + def apply(x: Char): Constant + /** Extractor for Char literals */ def unapply(constant: Constant): Option[Char] } @@ -57,6 +75,9 @@ trait ConstantOps extends Core { /** Module of Int literals */ val Int: IntModule abstract class IntModule { + /** Int literal */ + def apply(x: Int): Constant + /** Extractor for Int literals */ def unapply(constant: Constant): Option[Int] } @@ -64,6 +85,9 @@ trait ConstantOps extends Core { /** Module of Long literals */ val Long: LongModule abstract class LongModule { + /** Long literal */ + def apply(x: Long): Constant + /** Extractor for Long literals */ def unapply(constant: Constant): Option[Long] } @@ -71,6 +95,9 @@ trait ConstantOps extends Core { /** Module of Float literals */ val Float: FloatModule abstract class FloatModule { + /** Float literal */ + def apply(x: Float): Constant + /** Extractor for Float literals */ def unapply(constant: Constant): Option[Float] } @@ -78,6 +105,9 @@ trait ConstantOps extends Core { /** Module of Double literals */ val Double: DoubleModule abstract class DoubleModule { + /** Double literal */ + def apply(x: Double): Constant + /** Extractor for Double literals */ def unapply(constant: Constant): Option[Double] } @@ -85,6 +115,9 @@ trait ConstantOps extends Core { /** Module of String literals */ val String: StringModule abstract class StringModule { + /** String literal */ + def apply(x: String): Constant + /** Extractor for String literals */ def unapply(constant: Constant): Option[String] } @@ -92,6 +125,9 @@ trait ConstantOps extends Core { /** Module of ClassTag literals */ val ClassTag: ClassTagModule abstract class ClassTagModule { + /** scala.reflect.ClassTag literal */ + def apply[T](implicit x: scala.reflect.ClassTag[T]): Constant + /** Extractor for ClassTag literals */ def unapply(constant: Constant): Option[Type] } @@ -100,6 +136,10 @@ trait ConstantOps extends Core { val Symbol: SymbolModule /** Extractor for scala.Symbol literals */ abstract class SymbolModule { + /** scala.Symbol literal */ + def apply(x: scala.Symbol): Constant + + /** Extractor for scala.Symbol literals */ def unapply(constant: Constant): Option[scala.Symbol] } }