diff options
Diffstat (limited to 'src/compiler/scala/tools/nsc/dependencies/References.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/dependencies/References.scala | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/dependencies/References.scala b/src/compiler/scala/tools/nsc/dependencies/References.scala new file mode 100644 index 0000000000..89fa71f6c1 --- /dev/null +++ b/src/compiler/scala/tools/nsc/dependencies/References.scala @@ -0,0 +1,34 @@ +package scala.tools.nsc.dependencies; +import util.SourceFile; + +import collection._ + +abstract class References extends SubComponent with Files { + import global._ + + val phaseName = "references analysis"; + + def newPhase(prev: Phase) = new ReferenceAnalysisPhase(prev) + + /** Top level definitions per source file. */ + val definitions: mutable.Map[String, List[Symbol]] = new mutable.HashMap + + class ReferenceAnalysisPhase(prev: Phase) extends StdPhase(prev) { + def apply(unit: global.CompilationUnit) { + val buf = new mutable.ListBuffer[Symbol] + (new Traverser { + override def traverse(tree: Tree) { + tree match { + case cdef: ClassDef if !cdef.symbol.isModuleClass => + buf += cdef.symbol.cloneSymbol + case _ => + super.traverse(tree) + } + } + }).apply(unit.body) + + definitions(unit.source.file.path) = buf.toList + } + } +} + |