Skip to content

Commit 74fce2e

Browse files
authored
Merge pull request #6837 from dotty-staging/type-internal-splice-representation
Type internal splice representation
2 parents ba8fb61 + b10eb98 commit 74fce2e

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

compiler/src/dotty/tools/dotc/transform/ReifyQuotes.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,12 @@ class ReifyQuotes extends MacroTransform {
229229
val meth =
230230
if (isType) ref(defn.Unpickler_unpickleType).appliedToType(originalTp)
231231
else ref(defn.Unpickler_unpickleExpr).appliedToType(originalTp.widen)
232+
val spliceResType =
233+
if(isType) defn.QuotedTypeType.appliedTo(WildcardType)
234+
else defn.QuotedExprType.appliedTo(defn.AnyType) | defn.QuotedTypeType.appliedTo(WildcardType)
232235
meth.appliedTo(
233236
liftList(PickledQuotes.pickleQuote(body).map(x => Literal(Constant(x))), defn.StringType),
234-
liftList(splices, defn.AnyType))
237+
liftList(splices, defn.FunctionType(1).appliedTo(defn.SeqType.appliedTo(defn.AnyType), spliceResType)))
235238
}
236239
if (splices.nonEmpty) pickleAsTasty()
237240
else if (isType) {

library/src/scala/runtime/quoted/Unpickler.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ object Unpickler {
1414
/** Unpickle `repr` which represents a pickled `Expr` tree,
1515
* replacing splice nodes with `args`
1616
*/
17-
def unpickleExpr[T](repr: Pickled, args: Seq[Any]): Expr[T] = new TastyExpr[T](repr, args)
17+
def unpickleExpr[T](repr: Pickled, args: Seq[Seq[Any] => (Expr[Any] | Type[_])]): Expr[T] = new TastyExpr[T](repr, args)
1818

1919
/** Unpickle `repr` which represents a pickled `Type` tree,
2020
* replacing splice nodes with `args`
2121
*/
22-
def unpickleType[T](repr: Pickled, args: Seq[Any]): Type[T] = new TastyType[T](repr, args)
22+
def unpickleType[T](repr: Pickled, args: Seq[Seq[Any] => Type[_]]): Type[T] = new TastyType[T](repr, args)
2323
}

0 commit comments

Comments
 (0)