Skip to content

Commit 197e812

Browse files
committed
Remove TastyQuoted and RawQuoted abstractions
1 parent 4090212 commit 197e812

File tree

2 files changed

+22
-24
lines changed

2 files changed

+22
-24
lines changed

compiler/src/dotty/tools/dotc/core/quoted/PickledQuotes.scala

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,34 @@ object PickledQuotes {
3434

3535
/** Transform the expression into its fully spliced Tree */
3636
def quotedExprToTree(expr: quoted.Expr[_])(implicit ctx: Context): Tree = expr match {
37-
case expr: TastyExpr[_] => unpickleQuote(expr)
37+
case expr: TastyExpr[_] => unpickleExpr(expr)
3838
case expr: ConstantExpr[_] => Literal(Constant(expr.value))
3939
case expr: RawExpr[Tree] @unchecked => expr.tree
4040
}
4141

4242
/** Transform the expression into its fully spliced TypeTree */
4343
def quotedTypeToTree(expr: quoted.Type[_])(implicit ctx: Context): Tree = expr match {
44-
case expr: TastyType[_] => unpickleQuote(expr)
44+
case expr: TastyType[_] => unpickleType(expr)
4545
case expr: TaggedType[_] => classTagToTypeTree(expr.ct)
4646
case expr: RawType[Tree] @unchecked => expr.tree
4747
}
4848

49-
/** Unpickle the tree contained in the TastyQuoted */
50-
private def unpickleQuote(expr: TastyQuoted)(implicit ctx: Context): Tree = {
49+
/** Unpickle the tree contained in the TastyExpr */
50+
private def unpickleExpr(expr: TastyExpr[_])(implicit ctx: Context): Tree = {
5151
val tastyBytes = TastyString.unpickle(expr.tasty)
5252
val unpickled = unpickle(tastyBytes, expr.args)
53+
unpickled match {
54+
case PackageDef(_, (vdef: ValDef) :: Nil) => vdef.rhs
55+
}
56+
}
57+
58+
/** Unpickle the tree contained in the TastyType */
59+
private def unpickleType(ttpe: TastyType[_])(implicit ctx: Context): Tree = {
60+
val tastyBytes = TastyString.unpickle(ttpe.tasty)
61+
val unpickled = unpickle(tastyBytes, ttpe.args)
5362
unpickled match {
5463
case PackageDef(_, (vdef: ValDef) :: Nil) =>
55-
if (vdef.name == "$quote".toTermName) vdef.rhs
56-
else vdef.rhs.asInstanceOf[TypeApply].args.head
64+
vdef.rhs.asInstanceOf[TypeApply].args.head
5765
}
5866
}
5967

library/src/scala/quoted/Quoted.scala

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,10 @@ abstract class Quoted
88

99
object Quoted {
1010

11-
/** A quote backed by a pickled TASTY tree */
12-
trait TastyQuoted extends Quoted {
13-
def tasty: Pickled
14-
def args: Seq[Any]
15-
}
16-
17-
/** Quoted for which its internal representation is its tree.
18-
* - Used for trees that cannot be serialized, such as references to local symbols that will be spliced in.
19-
* - Used for trees that do not need to be serialized to avoid the overhead of serialization/deserialization.
20-
*/
21-
trait RawQuoted[Tree] extends quoted.Quoted {
22-
def tree: Tree
23-
}
24-
2511
// Implementations of Expr[T]
2612

2713
/** An Expr backed by a pickled TASTY tree */
28-
final class TastyExpr[T](val tasty: Pickled, val args: Seq[Any]) extends Expr[T] with TastyQuoted {
14+
final class TastyExpr[T](val tasty: Pickled, val args: Seq[Any]) extends Expr[T] {
2915
override def toString(): String = s"Expr(<pickled>)"
3016
}
3117

@@ -35,12 +21,14 @@ object Quoted {
3521
}
3622

3723
/** An Expr backed by a tree */
38-
final class RawExpr[Tree](val tree: Tree) extends quoted.Expr[Any] with RawQuoted[Tree]
24+
final class RawExpr[Tree](val tree: Tree) extends quoted.Expr[Any] {
25+
override def toString: String = s"Expr(<raw>)"
26+
}
3927

4028
// Implementations of Type[T]
4129

4230
/** A Type backed by a pickled TASTY tree */
43-
final class TastyType[T](val tasty: Pickled, val args: Seq[Any]) extends Type[T] with TastyQuoted {
31+
final class TastyType[T](val tasty: Pickled, val args: Seq[Any]) extends Type[T] {
4432
override def toString(): String = s"Type(<pickled>)"
4533
}
4634

@@ -50,6 +38,8 @@ object Quoted {
5038
}
5139

5240
/** An Type backed by a tree */
53-
final class RawType[Tree](val tree: Tree) extends quoted.Type[Any] with RawQuoted[Tree]
41+
final class RawType[Tree](val tree: Tree) extends quoted.Type[Any] {
42+
override def toString: String = s"Type(<raw>)"
43+
}
5444

5545
}

0 commit comments

Comments
 (0)