diff options
author | VladimirNik <vladimir.nikolaev9@gmail.com> | 2014-02-18 23:36:42 +0400 |
---|---|---|
committer | VladimirNik <vladimir.nikolaev9@gmail.com> | 2014-02-20 01:23:26 +0400 |
commit | 0f2ce9254b63eda76de218d1236318b697e6d4f7 (patch) | |
tree | cdd6dca7a37e6d3a79daa7a36a97c122665250f2 /src/reflect | |
parent | 74b5c928795f0702772e5a33c82a7c72b86a8c9b (diff) | |
download | scala-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.scala | 12 |
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 } } |