Skip to content

Commit 5926939

Browse files
committed
Workaround #4198
1 parent 5b271bc commit 5926939

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@ object PickledQuotes {
3232
}
3333

3434
/** Transform the expression into its fully spliced Tree */
35-
def quotedExprToTree(expr: quoted.Expr[_])(implicit ctx: Context): Tree = expr match {
35+
def quotedExprToTree[T](expr: quoted.Expr[T])(implicit ctx: Context): Tree = expr match {
3636
case expr: TastyExpr[_] => unpickleExpr(expr)
37-
case expr: LiftedExpr[_] =>
38-
if (expr.value.isInstanceOf[Class[_]]) // Should be a pattern match after #4198 is fixed
39-
ref(defn.Predef_classOf).appliedToType(classToType(expr.value.asInstanceOf[Class[_]]))
40-
else Literal(Constant(expr.value))
37+
case expr: LiftedExpr[T] =>
38+
expr.value match {
39+
case value: Class[_] => ref(defn.Predef_classOf).appliedToType(classToType(value))
40+
case value=> Literal(Constant(value))
41+
}
4142
case expr: TreeExpr[Tree] @unchecked => expr.tree
4243
case expr: FunctionAppliedTo[_, _] =>
4344
functionAppliedTo(quotedExprToTree(expr.f), quotedExprToTree(expr.x))

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ object Splicer {
2828
private def reflectiveSplice(tree: Tree)(implicit ctx: Context): Tree = {
2929
val interpreter = new Interpreter
3030
val interpreted =
31-
try interpreter.interpretTree[scala.quoted.Expr[_]](tree)
31+
try interpreter.interpretTree[scala.quoted.Expr[Nothing]](tree)
3232
catch { case ex: InvocationTargetException => handleTargetException(tree, ex); None }
3333
interpreted.fold(tree)(PickledQuotes.quotedExprToTree)
3434
}

0 commit comments

Comments
 (0)