summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorVladimirNik <vladimir.nikolaev9@gmail.com>2014-02-18 23:36:42 +0400
committerVladimirNik <vladimir.nikolaev9@gmail.com>2014-02-20 01:23:26 +0400
commit0f2ce9254b63eda76de218d1236318b697e6d4f7 (patch)
treecdd6dca7a37e6d3a79daa7a36a97c122665250f2 /src/reflect
parent74b5c928795f0702772e5a33c82a7c72b86a8c9b (diff)
downloadscala-0f2ce9254b63eda76de218d1236318b697e6d4f7.tar.gz
scala-0f2ce9254b63eda76de218d1236318b697e6d4f7.tar.bz2
scala-0f2ce9254b63eda76de218d1236318b697e6d4f7.zip
block wrapping for trees modified
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index cefab8ffa2..78a40707e5 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -1685,11 +1685,13 @@ trait Trees extends api.Trees {
// this is necessary to avoid crashes like https://github.com/scalamacros/paradise/issues/1
// when someone tries to c.typecheck a naked MemberDef
- def wrappingIntoTerm(tree: Tree)(op: Tree => Tree): Tree = {
- op(build.SyntacticBlock(tree :: Nil)) match {
- case Block(tree :: Nil, build.SyntheticUnit()) => tree
- case Block(Nil, tree) => tree
- case tree => tree
+ def wrappingIntoTerm(tree0: Tree)(op: Tree => Tree): Tree = {
+ val neededWrapping = !tree0.isTerm
+ val tree1 = build.SyntacticBlock(tree0 :: Nil)
+ op(tree1) match {
+ case Block(tree2 :: Nil, Literal(Constant(()))) if neededWrapping => tree2
+ case Block(Nil, tree2) => tree2
+ case tree2 => tree2
}
}