summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeDSL.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-08-23 19:10:07 +0000
committerPaul Phillips <paulp@improving.org>2009-08-23 19:10:07 +0000
commit0f7296a008e0e4090e69b489c23a492df26fd4f6 (patch)
treef1eec61e91fb4ca4c71494cf0f57a1130e5c6f4c /src/compiler/scala/tools/nsc/ast/TreeDSL.scala
parentaffff809b09e3d23a2625080db3b0c7d9d8b1e0e (diff)
downloadscala-0f7296a008e0e4090e69b489c23a492df26fd4f6.tar.gz
scala-0f7296a008e0e4090e69b489c23a492df26fd4f6.tar.bz2
scala-0f7296a008e0e4090e69b489c23a492df26fd4f6.zip
Generalized pattern matcher generated null test.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeDSL.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreeDSL.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeDSL.scala b/src/compiler/scala/tools/nsc/ast/TreeDSL.scala
index 253994744b..6d1914f88b 100644
--- a/src/compiler/scala/tools/nsc/ast/TreeDSL.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreeDSL.scala
@@ -23,6 +23,15 @@ trait TreeDSL {
// clarity aliases
type TreeFunction1 = Tree => Tree
type TreeFunction2 = (Tree, Tree) => Tree
+ type BooleanTreeFunction2 = (Tree, Tree) => Boolean
+
+ // Add a null check to a Tree => Tree function
+ // (this assumes your result Tree is representing a Boolean expression)
+ def nullSafe[T](f: TreeFunction1): TreeFunction1 =
+ tree => (tree OBJ_!= NULL) AND f(tree)
+
+ // XXX these two are in scala.PartialFunction now, just have to
+ // settle on the final names.
// Create a conditional based on a partial function - for values not defined
// on the partial, it is false.
@@ -102,6 +111,7 @@ trait TreeDSL {
def APPLY(params: Tree*) = Apply(target, params.toList)
def APPLY(params: List[Tree]) = Apply(target, params)
def MATCH(cases: CaseDef*) = Match(target, cases.toList)
+
def DOT(member: Name) = SelectStart(Select(target, member))
def DOT(sym: Symbol) = SelectStart(Select(target, sym))