diff options
author | Martin Odersky <odersky@gmail.com> | 2011-07-11 09:00:48 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-07-11 09:00:48 +0000 |
commit | 9e1d24d64283a4caf47cb68c00298538ca0b9999 (patch) | |
tree | 368175c8b2adcc68b671b3b9d2acb8821cf04214 /src/compiler/scala/tools/nsc/ast/TreeInfo.scala | |
parent | 7d4cff1dc6040d951b09f8df4af288d16ef53de2 (diff) | |
download | scala-9e1d24d64283a4caf47cb68c00298538ca0b9999.tar.gz scala-9e1d24d64283a4caf47cb68c00298538ca0b9999.tar.bz2 scala-9e1d24d64283a4caf47cb68c00298538ca0b9999.zip |
Refactored reflection into reflect.api and refl...
Refactored reflection into reflect.api and reflect.internal. Severed the
last remaining dependency on reflect.generic. Review by extempore.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeInfo.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreeInfo.scala | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeInfo.scala b/src/compiler/scala/tools/nsc/ast/TreeInfo.scala new file mode 100644 index 0000000000..bc8ec07ebc --- /dev/null +++ b/src/compiler/scala/tools/nsc/ast/TreeInfo.scala @@ -0,0 +1,45 @@ +/* NSC -- new Scala compiler + * Copyright 2005-2011 LAMP/EPFL + * @author Martin Odersky + */ + +package scala.tools.nsc +package ast + +import reflect.internal.Flags._ +import symtab._ +import util.HashSet + +/** This class ... + * + * @author Martin Odersky + * @version 1.0 + */ +abstract class TreeInfo extends reflect.internal.TreeInfo { + val global: Global + import global._ + + import definitions.ThrowableClass + + /** Is tree legal as a member definition of an interface? + */ + override def isInterfaceMember(tree: Tree): Boolean = tree match { + case DocDef(_, definition) => isInterfaceMember(definition) + case _ => super.isInterfaceMember(tree) + } + + /** Is tree a pure (i.e. non-side-effecting) definition? + */ + override def isPureDef(tree: Tree): Boolean = tree match { + case DocDef(_, definition) => isPureDef(definition) + case _ => super.isPureDef(tree) + } + + /** Does list of trees start with a definition of + * a class of module with given name (ignoring imports) + */ + override def firstDefinesClassOrObject(trees: List[Tree], name: Name): Boolean = trees match { + case ClassDef(_, `name`, _, _) :: Nil => true + case _ => super.firstDefinesClassOrObject(trees, name) + } +} |