summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeInfo.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-07-11 09:00:48 +0000
committerMartin Odersky <odersky@gmail.com>2011-07-11 09:00:48 +0000
commit9e1d24d64283a4caf47cb68c00298538ca0b9999 (patch)
tree368175c8b2adcc68b671b3b9d2acb8821cf04214 /src/compiler/scala/tools/nsc/ast/TreeInfo.scala
parent7d4cff1dc6040d951b09f8df4af288d16ef53de2 (diff)
downloadscala-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.scala45
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)
+ }
+}