From db96a8fc5220c813e1dacd5aa3d63a894f3d630e Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Fri, 6 Nov 2020 16:36:55 +0100 Subject: [PATCH 1/2] Rename CompilerInterface to QuoteContextInternal --- compiler/src/dotty/tools/dotc/quoted/Matcher.scala | 2 +- .../src/dotty/tools/dotc/quoted/QuoteContextImpl.scala | 4 ++-- .../src-bootstrapped/scala/internal/quoted/Expr.scala | 4 ++-- .../src-bootstrapped/scala/internal/quoted/Type.scala | 4 ++-- library/src/scala/internal/quoted/PickledQuote.scala | 4 ++-- ...pilerInterface.scala => QuoteContextInternal.scala} | 10 +++++----- 6 files changed, 14 insertions(+), 14 deletions(-) rename library/src/scala/internal/quoted/{CompilerInterface.scala => QuoteContextInternal.scala} (84%) diff --git a/compiler/src/dotty/tools/dotc/quoted/Matcher.scala b/compiler/src/dotty/tools/dotc/quoted/Matcher.scala index dda40070d7d8..c588e8368da5 100644 --- a/compiler/src/dotty/tools/dotc/quoted/Matcher.scala +++ b/compiler/src/dotty/tools/dotc/quoted/Matcher.scala @@ -97,7 +97,7 @@ import scala.quoted._ */ object Matcher { - abstract class QuoteMatcher[QCtx <: QuoteContext & scala.internal.quoted.CompilerInterface & Singleton](val qctx: QCtx) { + abstract class QuoteMatcher[QCtx <: QuoteContext & scala.internal.quoted.QuoteContextInternal & Singleton](val qctx: QCtx) { // TODO improve performance diff --git a/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala b/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala index 6d820094c216..c7f0eb16586d 100644 --- a/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala +++ b/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala @@ -45,7 +45,7 @@ object QuoteContextImpl { } -class QuoteContextImpl private (ctx: Context) extends QuoteContext, scala.internal.quoted.CompilerInterface: +class QuoteContextImpl private (ctx: Context) extends QuoteContext, scala.internal.quoted.QuoteContextInternal: object reflect extends scala.tasty.Reflection: @@ -2670,7 +2670,7 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, scala.intern ctx1 val qctx1 = dotty.tools.dotc.quoted.QuoteContextImpl()(using ctx1) - .asInstanceOf[QuoteContext & scala.internal.quoted.CompilerInterface] + .asInstanceOf[QuoteContext & scala.internal.quoted.QuoteContextInternal] val matcher = new Matcher.QuoteMatcher[qctx1.type](qctx1) { def patternHoleSymbol: qctx1.reflect.Symbol = dotc.core.Symbols.defn.InternalQuotedPatterns_patternHole.asInstanceOf diff --git a/library/src-bootstrapped/scala/internal/quoted/Expr.scala b/library/src-bootstrapped/scala/internal/quoted/Expr.scala index 3bb78a5ae035..763c46f4dd91 100644 --- a/library/src-bootstrapped/scala/internal/quoted/Expr.scala +++ b/library/src-bootstrapped/scala/internal/quoted/Expr.scala @@ -1,7 +1,7 @@ package scala.internal.quoted import scala.quoted._ -import scala.internal.quoted.CompilerInterface.quoteContextWithCompilerInterface +import scala.internal.quoted.QuoteContextInternal.quoteContextWithQuoteContextInternal /** An Expr backed by a tree. Only the current compiler trees are allowed. * @@ -53,7 +53,7 @@ object Expr { */ def unapply[TypeBindings <: Tuple, Tup <: Tuple](scrutineeExpr: scala.quoted.Expr[Any]) (using patternExpr: scala.quoted.Expr[Any], qctx: QuoteContext): Option[Tup] = { - val qctx1 = quoteContextWithCompilerInterface(qctx) + val qctx1 = quoteContextWithQuoteContextInternal(qctx) qctx1.exprMatch(scrutineeExpr, patternExpr).asInstanceOf[Option[Tup]] } diff --git a/library/src-bootstrapped/scala/internal/quoted/Type.scala b/library/src-bootstrapped/scala/internal/quoted/Type.scala index cbe730578d51..f755f9be93c9 100644 --- a/library/src-bootstrapped/scala/internal/quoted/Type.scala +++ b/library/src-bootstrapped/scala/internal/quoted/Type.scala @@ -1,7 +1,7 @@ package scala.internal.quoted import scala.quoted._ -import scala.internal.quoted.CompilerInterface.quoteContextWithCompilerInterface +import scala.internal.quoted.QuoteContextInternal.quoteContextWithQuoteContextInternal /** Quoted type (or kind) `T` backed by a tree */ final class Type[Tree](val typeTree: Tree, val scopeId: Int) extends scala.quoted.Type[Any] { @@ -36,7 +36,7 @@ object Type { */ def unapply[TypeBindings <: Tuple, Tup <: Tuple](scrutineeType: scala.quoted.Type[_]) (using patternType: scala.quoted.Type[_], qctx: QuoteContext): Option[Tup] = { - val qctx1 = quoteContextWithCompilerInterface(qctx) + val qctx1 = quoteContextWithQuoteContextInternal(qctx) qctx1.typeMatch(scrutineeType, patternType).asInstanceOf[Option[Tup]] } diff --git a/library/src/scala/internal/quoted/PickledQuote.scala b/library/src/scala/internal/quoted/PickledQuote.scala index db8b1e2ce7f7..40d6ec264368 100644 --- a/library/src/scala/internal/quoted/PickledQuote.scala +++ b/library/src/scala/internal/quoted/PickledQuote.scala @@ -17,11 +17,11 @@ trait PickledQuote: object PickledQuote: def unpickleExpr[T](pickledQuote: PickledQuote): QuoteContext ?=> Expr[T] = - val qctx = CompilerInterface.quoteContextWithCompilerInterface(summon[QuoteContext]) + val qctx = QuoteContextInternal.quoteContextWithQuoteContextInternal(summon[QuoteContext]) qctx.unpickleExpr(pickledQuote).asInstanceOf[Expr[T]] def unpickleType[T](pickledQuote: PickledQuote): QuoteContext ?=> Type[T] = - val qctx = CompilerInterface.quoteContextWithCompilerInterface(summon[QuoteContext]) + val qctx = QuoteContextInternal.quoteContextWithQuoteContextInternal(summon[QuoteContext]) qctx.unpickleType(pickledQuote).asInstanceOf[Type[T]] /** Create an instance of PickledExpr from encoded tasty and sequence of labmdas to fill holes diff --git a/library/src/scala/internal/quoted/CompilerInterface.scala b/library/src/scala/internal/quoted/QuoteContextInternal.scala similarity index 84% rename from library/src/scala/internal/quoted/CompilerInterface.scala rename to library/src/scala/internal/quoted/QuoteContextInternal.scala index 0d0c8174501d..24faa62070e5 100644 --- a/library/src/scala/internal/quoted/CompilerInterface.scala +++ b/library/src/scala/internal/quoted/QuoteContextInternal.scala @@ -4,8 +4,8 @@ import scala.quoted.QuoteContext import scala.tasty.reflect._ import scala.internal.quoted.PickledQuote -/** Part of the reflection interface that needs to be implemented by the compiler */ -trait CompilerInterface { self: scala.quoted.QuoteContext => +/** Part of the QuoteContext interface that needs to be implemented by the compiler but is not visible to users */ +trait QuoteContextInternal { self: scala.quoted.QuoteContext => import self.reflect._ @@ -52,9 +52,9 @@ trait CompilerInterface { self: scala.quoted.QuoteContext => } -object CompilerInterface { +object QuoteContextInternal { - private[scala] def quoteContextWithCompilerInterface(qctx: QuoteContext): qctx.type { val reflect: qctx.reflect.type } & CompilerInterface = - qctx.asInstanceOf[qctx.type { val reflect: qctx.reflect.type } & CompilerInterface] + private[scala] def quoteContextWithQuoteContextInternal(qctx: QuoteContext): qctx.type { val reflect: qctx.reflect.type } & QuoteContextInternal = + qctx.asInstanceOf[qctx.type { val reflect: qctx.reflect.type } & QuoteContextInternal] } From 4e1830cef0f536a95a0d9591ee3a2d6e70b3d566 Mon Sep 17 00:00:00 2001 From: Nicolas Stucki Date: Fri, 6 Nov 2020 17:08:22 +0100 Subject: [PATCH 2/2] Simplify uses of QuoteContextInternal --- compiler/src/dotty/tools/dotc/quoted/Matcher.scala | 2 +- .../src/dotty/tools/dotc/quoted/QuoteContextImpl.scala | 1 - .../src-bootstrapped/scala/internal/quoted/Expr.scala | 4 +--- .../src-bootstrapped/scala/internal/quoted/Type.scala | 4 +--- library/src/scala/internal/quoted/PickledQuote.scala | 6 ++---- .../scala/internal/quoted/QuoteContextInternal.scala | 10 ---------- 6 files changed, 5 insertions(+), 22 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/quoted/Matcher.scala b/compiler/src/dotty/tools/dotc/quoted/Matcher.scala index c588e8368da5..d8fcb61398d9 100644 --- a/compiler/src/dotty/tools/dotc/quoted/Matcher.scala +++ b/compiler/src/dotty/tools/dotc/quoted/Matcher.scala @@ -97,7 +97,7 @@ import scala.quoted._ */ object Matcher { - abstract class QuoteMatcher[QCtx <: QuoteContext & scala.internal.quoted.QuoteContextInternal & Singleton](val qctx: QCtx) { + abstract class QuoteMatcher[QCtx <: QuoteContext & Singleton](val qctx: QCtx) { // TODO improve performance diff --git a/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala b/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala index c7f0eb16586d..2749e24f9895 100644 --- a/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala +++ b/compiler/src/dotty/tools/dotc/quoted/QuoteContextImpl.scala @@ -2670,7 +2670,6 @@ class QuoteContextImpl private (ctx: Context) extends QuoteContext, scala.intern ctx1 val qctx1 = dotty.tools.dotc.quoted.QuoteContextImpl()(using ctx1) - .asInstanceOf[QuoteContext & scala.internal.quoted.QuoteContextInternal] val matcher = new Matcher.QuoteMatcher[qctx1.type](qctx1) { def patternHoleSymbol: qctx1.reflect.Symbol = dotc.core.Symbols.defn.InternalQuotedPatterns_patternHole.asInstanceOf diff --git a/library/src-bootstrapped/scala/internal/quoted/Expr.scala b/library/src-bootstrapped/scala/internal/quoted/Expr.scala index 763c46f4dd91..8175d4b115ed 100644 --- a/library/src-bootstrapped/scala/internal/quoted/Expr.scala +++ b/library/src-bootstrapped/scala/internal/quoted/Expr.scala @@ -1,7 +1,6 @@ package scala.internal.quoted import scala.quoted._ -import scala.internal.quoted.QuoteContextInternal.quoteContextWithQuoteContextInternal /** An Expr backed by a tree. Only the current compiler trees are allowed. * @@ -53,8 +52,7 @@ object Expr { */ def unapply[TypeBindings <: Tuple, Tup <: Tuple](scrutineeExpr: scala.quoted.Expr[Any]) (using patternExpr: scala.quoted.Expr[Any], qctx: QuoteContext): Option[Tup] = { - val qctx1 = quoteContextWithQuoteContextInternal(qctx) - qctx1.exprMatch(scrutineeExpr, patternExpr).asInstanceOf[Option[Tup]] + qctx.asInstanceOf[QuoteContextInternal].exprMatch(scrutineeExpr, patternExpr).asInstanceOf[Option[Tup]] } /** Returns a null expresssion equivalent to `'{null}` */ diff --git a/library/src-bootstrapped/scala/internal/quoted/Type.scala b/library/src-bootstrapped/scala/internal/quoted/Type.scala index f755f9be93c9..f360a2dcea1d 100644 --- a/library/src-bootstrapped/scala/internal/quoted/Type.scala +++ b/library/src-bootstrapped/scala/internal/quoted/Type.scala @@ -1,7 +1,6 @@ package scala.internal.quoted import scala.quoted._ -import scala.internal.quoted.QuoteContextInternal.quoteContextWithQuoteContextInternal /** Quoted type (or kind) `T` backed by a tree */ final class Type[Tree](val typeTree: Tree, val scopeId: Int) extends scala.quoted.Type[Any] { @@ -36,8 +35,7 @@ object Type { */ def unapply[TypeBindings <: Tuple, Tup <: Tuple](scrutineeType: scala.quoted.Type[_]) (using patternType: scala.quoted.Type[_], qctx: QuoteContext): Option[Tup] = { - val qctx1 = quoteContextWithQuoteContextInternal(qctx) - qctx1.typeMatch(scrutineeType, patternType).asInstanceOf[Option[Tup]] + qctx.asInstanceOf[QuoteContextInternal].typeMatch(scrutineeType, patternType).asInstanceOf[Option[Tup]] } diff --git a/library/src/scala/internal/quoted/PickledQuote.scala b/library/src/scala/internal/quoted/PickledQuote.scala index 40d6ec264368..6c44109c41e7 100644 --- a/library/src/scala/internal/quoted/PickledQuote.scala +++ b/library/src/scala/internal/quoted/PickledQuote.scala @@ -17,12 +17,10 @@ trait PickledQuote: object PickledQuote: def unpickleExpr[T](pickledQuote: PickledQuote): QuoteContext ?=> Expr[T] = - val qctx = QuoteContextInternal.quoteContextWithQuoteContextInternal(summon[QuoteContext]) - qctx.unpickleExpr(pickledQuote).asInstanceOf[Expr[T]] + qctx.asInstanceOf[QuoteContextInternal].unpickleExpr(pickledQuote).asInstanceOf[Expr[T]] def unpickleType[T](pickledQuote: PickledQuote): QuoteContext ?=> Type[T] = - val qctx = QuoteContextInternal.quoteContextWithQuoteContextInternal(summon[QuoteContext]) - qctx.unpickleType(pickledQuote).asInstanceOf[Type[T]] + qctx.asInstanceOf[QuoteContextInternal].unpickleType(pickledQuote).asInstanceOf[Type[T]] /** Create an instance of PickledExpr from encoded tasty and sequence of labmdas to fill holes * diff --git a/library/src/scala/internal/quoted/QuoteContextInternal.scala b/library/src/scala/internal/quoted/QuoteContextInternal.scala index 24faa62070e5..0efdbb9f5945 100644 --- a/library/src/scala/internal/quoted/QuoteContextInternal.scala +++ b/library/src/scala/internal/quoted/QuoteContextInternal.scala @@ -7,8 +7,6 @@ import scala.internal.quoted.PickledQuote /** Part of the QuoteContext interface that needs to be implemented by the compiler but is not visible to users */ trait QuoteContextInternal { self: scala.quoted.QuoteContext => - import self.reflect._ - /** Unpickle `repr` which represents a pickled `Expr` tree, * replacing splice nodes with `holes` */ @@ -50,11 +48,3 @@ trait QuoteContextInternal { self: scala.quoted.QuoteContext => def typeMatch(scrutinee: scala.quoted.Type[?], pattern: scala.quoted.Type[?]): Option[Tuple] } - - -object QuoteContextInternal { - - private[scala] def quoteContextWithQuoteContextInternal(qctx: QuoteContext): qctx.type { val reflect: qctx.reflect.type } & QuoteContextInternal = - qctx.asInstanceOf[qctx.type { val reflect: qctx.reflect.type } & QuoteContextInternal] - -}