diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreeGen.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala index 5ba7465928..0dc3b1fffd 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala @@ -47,6 +47,18 @@ abstract class TreeGen extends reflect.internal.TreeGen { case _ => tree } + def withDefaultCase(matchExpr: Tree, defaultAction: Tree/*scrutinee*/ => Tree): Tree = matchExpr match { + case Match(scrutinee, cases) => + if (cases exists treeInfo.isDefaultCase) matchExpr + else { + val defaultCase = CaseDef(Ident(nme.WILDCARD), EmptyTree, defaultAction(scrutinee)) + Match(scrutinee, cases :+ defaultCase) + } + case _ => + matchExpr + // [Martin] Adriaan: please fill in virtpatmat transformation here + } + def mkCached(cvar: Symbol, expr: Tree): Tree = { val cvarRef = mkUnattributedRef(cvar) Block( |