diff options
4 files changed, 7 insertions, 6 deletions
diff --git a/src/reflect/scala/reflect/internal/ReificationSupport.scala b/src/reflect/scala/reflect/internal/ReificationSupport.scala index 100c4e6c47..ea230a215b 100644 --- a/src/reflect/scala/reflect/internal/ReificationSupport.scala +++ b/src/reflect/scala/reflect/internal/ReificationSupport.scala @@ -465,8 +465,8 @@ trait ReificationSupport { self: SymbolTable => else gen.mkBlock(stats) def unapply(tree: Tree): Option[List[Tree]] = tree match { - case self.Block(stats, SyntheticUnit()) => Some(stats) - case self.Block(stats, expr) => Some(stats :+ expr) + case bl @ self.Block(stats, SyntheticUnit()) => Some(treeInfo.untypecheckedBlockBody(bl)) + case bl @ self.Block(stats, expr) => Some(treeInfo.untypecheckedBlockBody(bl) :+ expr) case EmptyTree => Some(Nil) case _ if tree.isTerm => Some(tree :: Nil) case _ => None diff --git a/src/reflect/scala/reflect/internal/TreeInfo.scala b/src/reflect/scala/reflect/internal/TreeInfo.scala index 4dee80afa9..7cf749c048 100644 --- a/src/reflect/scala/reflect/internal/TreeInfo.scala +++ b/src/reflect/scala/reflect/internal/TreeInfo.scala @@ -458,7 +458,7 @@ abstract class TreeInfo { // transform getter mods to field val vdMods = (if (!mods.hasStableFlag) mods | Flags.MUTABLE else mods &~ Flags.STABLE) &~ Flags.ACCESSOR ValDef(vdMods, name, tpt, rhs) - case tree => tree + case tr => tr } if (detectTypecheckedTree(tree)) { diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala index 7a6862a770..cefab8ffa2 100644 --- a/src/reflect/scala/reflect/internal/Trees.scala +++ b/src/reflect/scala/reflect/internal/Trees.scala @@ -1687,7 +1687,8 @@ trait Trees extends api.Trees { // when someone tries to c.typecheck a naked MemberDef def wrappingIntoTerm(tree: Tree)(op: Tree => Tree): Tree = { op(build.SyntacticBlock(tree :: Nil)) match { - case build.SyntacticBlock(tree :: Nil) => tree + case Block(tree :: Nil, build.SyntheticUnit()) => tree + case Block(Nil, tree) => tree case tree => tree } } diff --git a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala index 14669764d3..b4b909e9be 100644 --- a/test/files/scalacheck/quasiquotes/TypecheckedProps.scala +++ b/test/files/scalacheck/quasiquotes/TypecheckedProps.scala @@ -92,7 +92,7 @@ object TypecheckedProps extends QuasiquoteProperties("typechecked") { property("class with param (2)") = test { val paramName = TermName("y") - val q"{ class $_($param); $_}" = typecheck(q"{ class Test(val $paramName: Int = 3) }") + val q"{class $_($param)}" = typecheck(q"class Test(val $paramName: Int = 3)") assert(param.name == paramName) assert(param.rhs ≈ q"3") @@ -101,7 +101,7 @@ object TypecheckedProps extends QuasiquoteProperties("typechecked") { property("class with params") = test { val pName1 = TermName("x1") val pName2 = TermName("x2") - val q"{ class $_($param1)(..$params2); $_}" = typecheck(q"{ class Test(val x0: Float)(val $pName1: Int = 3, $pName2: String) }") + val q"{class $_($param1)(..$params2)}" = typecheck(q"class Test(val x0: Float)(val $pName1: Int = 3, $pName2: String)") val List(p1, p2, _*) = params2 |