diff options
author | Martin Odersky <odersky@gmail.com> | 2003-08-25 15:26:29 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-08-25 15:26:29 +0000 |
commit | 1cfdffddd1d0d8d71426ef6c1b43aba3e9187561 (patch) | |
tree | dff7c39b217d268626af1014bb972d90036ec031 /sources/scalac/ast/TreeInfo.java | |
parent | 4f8b58c0aed01c7a2659963ab658e5dd4239d9c4 (diff) | |
download | scala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.tar.gz scala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.tar.bz2 scala-1cfdffddd1d0d8d71426ef6c1b43aba3e9187561.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast/TreeInfo.java')
-rw-r--r-- | sources/scalac/ast/TreeInfo.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/sources/scalac/ast/TreeInfo.java b/sources/scalac/ast/TreeInfo.java index 19b2341f44..d0a8b41311 100644 --- a/sources/scalac/ast/TreeInfo.java +++ b/sources/scalac/ast/TreeInfo.java @@ -102,6 +102,10 @@ public class TreeInfo { return tree.symbol().isStable(); case Select(Tree qual, _): return tree.symbol().isStable() && isPureExpr(qual); + case Apply(Tree fn, Tree[] args): + return isPureExpr(fn) && args.length == 0; + case TypeApply(Tree fn, Tree[] targs): + return isPureExpr(fn); case Typed(Tree expr, _): return isPureExpr(expr); case Literal(_): @@ -167,19 +171,27 @@ public class TreeInfo { /** The method symbol of an application node, or Symbol.NONE, if none exists. */ public static Symbol methSymbol(Tree tree) { + Tree meth = methPart(tree); + if (meth.hasSymbol()) return meth.symbol(); + else return Symbol.NONE; + } + + /** The method part of an application node + */ + public static Tree methPart(Tree tree) { switch (tree) { case Apply(Tree fn, _): - return methSymbol(fn); + return methPart(fn); case TypeApply(Tree fn, _): - return methSymbol(fn); + return methPart(fn); case AppliedType(Tree fn, _): - return methSymbol(fn); + return methPart(fn); default: - if (tree.hasSymbol()) return tree.symbol(); - else return Symbol.NONE; + return tree; } } + /** returns true if the tree is a sequence-valued pattern. * precondition: tree is a pattern. * calls isSequenceValued( Tree, List ) because needs to remember bound |