diff options
author | Martin Odersky <odersky@gmail.com> | 2005-08-03 22:18:10 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-08-03 22:18:10 +0000 |
commit | 2a5f62338c30ba6d06aa10c8fb809ce92462f96c (patch) | |
tree | 052924741ede17387be41de5e9ff0d13d0d59fd4 /sources/scala/tools/nsc/ast/TreeInfo.scala | |
parent | e12958a079cbffcfdb8142ab668581664f671334 (diff) | |
download | scala-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.scala | 19 |
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 } |