summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/ast/TreeInfo.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-08-03 22:18:10 +0000
committerMartin Odersky <odersky@gmail.com>2005-08-03 22:18:10 +0000
commit2a5f62338c30ba6d06aa10c8fb809ce92462f96c (patch)
tree052924741ede17387be41de5e9ff0d13d0d59fd4 /sources/scala/tools/nsc/ast/TreeInfo.scala
parente12958a079cbffcfdb8142ab668581664f671334 (diff)
downloadscala-2a5f62338c30ba6d06aa10c8fb809ce92462f96c.tar.gz
scala-2a5f62338c30ba6d06aa10c8fb809ce92462f96c.tar.bz2
scala-2a5f62338c30ba6d06aa10c8fb809ce92462f96c.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/ast/TreeInfo.scala')
-rw-r--r--sources/scala/tools/nsc/ast/TreeInfo.scala19
1 files changed, 18 insertions, 1 deletions
diff --git a/sources/scala/tools/nsc/ast/TreeInfo.scala b/sources/scala/tools/nsc/ast/TreeInfo.scala
index 672a01377a..0b18c18b4e 100644
--- a/sources/scala/tools/nsc/ast/TreeInfo.scala
+++ b/sources/scala/tools/nsc/ast/TreeInfo.scala
@@ -34,6 +34,21 @@ abstract class TreeInfo {
case _ => false
}
+ /** Is tree legal as a member definition of an interface?
+ */
+ def isInterfaceMember(tree: Tree): boolean = tree match {
+ case EmptyTree => true
+ case Import(_, _) => true
+ case AbsTypeDef(_, _, _, _) => true
+ case AliasTypeDef(_, _, _, _) => true
+ case DefDef(mods, _, _, _, _, __) => (mods & DEFERRED) != 0
+ case ValDef(mods, _, _, _) => (mods & DEFERRED) != 0
+ case DocDef(_, definition) => isInterfaceMember(definition)
+ case Attributed(_, definition) => isInterfaceMember(definition)
+ case _ => false
+ }
+
+
/** Is tree a pure definition?
*/
def isPureDef(tree: Tree): boolean = tree match {
@@ -43,12 +58,14 @@ abstract class TreeInfo {
| AbsTypeDef(_, _, _, _)
| AliasTypeDef(_, _, _, _)
| Import(_, _)
- | DefDef(_, nme.CONSTRUCTOR, _, _, _, _) =>
+ | DefDef(_, _, _, _, _, _) =>
true
case ValDef(mods, _, _, rhs) =>
(mods & MUTABLE) == 0 && isPureExpr(rhs)
case DocDef(_, definition) =>
isPureDef(definition)
+ case Attributed(_, definition) =>
+ isPureDef(definition)
case _ =>
false
}