diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 1809a6042613..a8004c8230bb 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -685,8 +685,6 @@ class Definitions { @tu lazy val QuotedExprClass: ClassSymbol = requiredClass("scala.quoted.Expr") @tu lazy val QuotedExprModule: Symbol = QuotedExprClass.companionModule - @tu lazy val QuotedExprModule_nullExpr: Symbol = QuotedExprModule.requiredMethod(nme.nullExpr) - @tu lazy val QuotedExprModule_unitExpr: Symbol = QuotedExprModule.requiredMethod(nme.unitExpr) @tu lazy val QuoteContextClass: ClassSymbol = requiredClass("scala.quoted.QuoteContext") @@ -716,6 +714,8 @@ class Definitions { @tu lazy val InternalQuotedExprModule: Symbol = requiredModule("scala.internal.quoted.Expr") @tu lazy val InternalQuotedExpr_unapply: Symbol = InternalQuotedExprModule.requiredMethod(nme.unapply) + @tu lazy val InternalQuotedExpr_null: Symbol = InternalQuotedExprModule.requiredMethod(nme.null_) + @tu lazy val InternalQuotedExpr_unit: Symbol = InternalQuotedExprModule.requiredMethod(nme.Unit) @tu lazy val InternalQuotedTypeModule: Symbol = requiredModule("scala.internal.quoted.Type") @tu lazy val InternalQuotedType_unapply: Symbol = InternalQuotedTypeModule.requiredMethod(nme.unapply) diff --git a/compiler/src/dotty/tools/dotc/core/StdNames.scala b/compiler/src/dotty/tools/dotc/core/StdNames.scala index 04b2bfdc74fb..8156a310e2a4 100644 --- a/compiler/src/dotty/tools/dotc/core/StdNames.scala +++ b/compiler/src/dotty/tools/dotc/core/StdNames.scala @@ -535,7 +535,6 @@ object StdNames { val notifyAll_ : N = "notifyAll" val notify_ : N = "notify" val null_ : N = "null" - val nullExpr: N = "nullExpr" val ofDim: N = "ofDim" val on: N = "on" val opaque: N = "opaque" @@ -608,7 +607,6 @@ object StdNames { val unapply: N = "unapply" val unapplySeq: N = "unapplySeq" val unbox: N = "unbox" - val unitExpr: N = "unitExpr" val universe: N = "universe" val update: N = "update" val updateDynamic: N = "updateDynamic" diff --git a/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala b/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala index 1518492e6b1d..66a4232e2de6 100644 --- a/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala +++ b/compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala @@ -150,8 +150,8 @@ class ReifyQuotes extends MacroTransform { def liftedValue(lifter: Symbol) = ref(lifter).appliedToType(originalTp).select(nme.toExpr).appliedTo(lit) lit.const.tag match { - case Constants.NullTag => ref(defn.QuotedExprModule_nullExpr) - case Constants.UnitTag => ref(defn.QuotedExprModule_unitExpr) + case Constants.NullTag => ref(defn.InternalQuotedExpr_null) + case Constants.UnitTag => ref(defn.InternalQuotedExpr_unit) case Constants.BooleanTag => liftedValue(defn.LiftableModule_BooleanIsLiftable) case Constants.ByteTag => liftedValue(defn.LiftableModule_ByteIsLiftable) case Constants.ShortTag => liftedValue(defn.LiftableModule_ShortIsLiftable) diff --git a/library/src-bootstrapped/scala/quoted/Expr.scala b/library/src-bootstrapped/scala/quoted/Expr.scala index ddf9829ce5e4..832e272a5152 100644 --- a/library/src-bootstrapped/scala/quoted/Expr.scala +++ b/library/src-bootstrapped/scala/quoted/Expr.scala @@ -79,18 +79,6 @@ object Expr { case Some(expr1) => expr1.seal.asInstanceOf[Expr[T]] case _ => expr - /** Returns a null expresssion equivalent to `'{null}` */ - def nullExpr: QuoteContext ?=> Expr[Null] = qctx ?=> { - import qctx.tasty._ - Literal(Constant(null)).seal.asInstanceOf[Expr[Null]] - } - - /** Returns a unit expresssion equivalent to `'{}` or `'{()}` */ - def unitExpr: QuoteContext ?=> Expr[Unit] = qctx ?=> { - import qctx.tasty._ - Literal(Constant(())).seal.asInstanceOf[Expr[Unit]] - } - /** Returns an expression containing a block with the given statements and ending with the expresion * Given list of statements `s1 :: s2 :: ... :: Nil` and an expression `e` the resulting expression * will be equivalent to `'{ $s1; $s2; ...; $e }`. diff --git a/library/src/scala/internal/quoted/Expr.scala b/library/src/scala/internal/quoted/Expr.scala index 3180dca1289a..91ce92fe40e7 100644 --- a/library/src/scala/internal/quoted/Expr.scala +++ b/library/src/scala/internal/quoted/Expr.scala @@ -55,4 +55,16 @@ object Expr { new Matcher.QuoteMatcher[qctx.type].termMatch(scrutineeExpr.unseal, patternExpr.unseal, hasTypeSplices).asInstanceOf[Option[Tup]] } + /** Returns a null expresssion equivalent to `'{null}` */ + def `null`: QuoteContext ?=> quoted.Expr[Null] = qctx ?=> { + import qctx.tasty._ + Literal(Constant(null)).seal.asInstanceOf[quoted.Expr[Null]] + } + + /** Returns a unit expresssion equivalent to `'{}` or `'{()}` */ + def Unit: QuoteContext ?=> quoted.Expr[Unit] = qctx ?=> { + import qctx.tasty._ + Literal(Constant(())).seal.asInstanceOf[quoted.Expr[Unit]] + } + } diff --git a/staging/src/scala/quoted/staging/staging.scala b/staging/src/scala/quoted/staging/staging.scala index db9aab9e5b38..a4be3ca9c783 100644 --- a/staging/src/scala/quoted/staging/staging.scala +++ b/staging/src/scala/quoted/staging/staging.scala @@ -37,7 +37,7 @@ package object staging: var result: T = noResult.asInstanceOf[T] def dummyRun(using QuoteContext): Expr[Unit] = { result = thunk - Expr.unitExpr + '{} } toolbox.run(dummyRun(using _)) assert(result != noResult) // toolbox.run should have thrown an exception