summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/TreeInfo.java
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-08-25 15:26:29 +0000
committerMartin Odersky <odersky@gmail.com>2003-08-25 15:26:29 +0000
commit1cfdffddd1d0d8d71426ef6c1b43aba3e9187561 (patch)
treedff7c39b217d268626af1014bb972d90036ec031 /sources/scalac/ast/TreeInfo.java
parent4f8b58c0aed01c7a2659963ab658e5dd4239d9c4 (diff)
downloadscala-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.java22
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