compilationunits.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 87 行
SCALA
87 行
/* NSC -- new Scala compiler * Copyright 2005-2006 LAMP/EPFL * @author Martin Odersky */// $Id: CompilationUnits.scala 13955 2008-02-12 15:25:38Z odersky $package scala.tools.nscimport scala.tools.nsc.util.{FreshNameCreator,OffsetPosition,Position,SourceFile}import scala.tools.nsc.io.AbstractFileimport scala.collection.mutable.{HashSet, HashMap}trait CompilationUnits { self: Global => /** One unit of compilation that has been submitted to the compiler. * It typically corresponds to a single file of source code. It includes * error-reporting hooks. */ class CompilationUnit(val source: SourceFile) extends CompilationUnitTrait { /** the fresh name creator */ var fresh : FreshNameCreator = new FreshNameCreator.Default /** the content of the compilation unit in tree form */ var body: Tree = EmptyTree /** Note: depends now contains toplevel classes. * To get their sourcefiles, you need to dereference with .sourcefile */ val depends = new HashSet[Symbol] /** Synthetic definitions generated by namer, eliminated by typer. */ val synthetics = new HashMap[Symbol, Tree] /** used to track changes in a signature */ var pickleHash : Long = 0 def position(pos: Int) = source.position(pos) /** The icode representation of classes in this compilation unit. * It is empty up to phase 'icode'. */ val icode: HashSet[icodes.IClass] = new HashSet val errorPositions = new HashSet[Position] def error(pos: Position, msg: String) = if (inIDE || !(errorPositions contains pos)) { if (!inIDE) errorPositions += pos reporter.error((pos), msg) } def warning(pos: Position, msg: String) = if (inIDE || !(errorPositions contains pos)) { if (!inIDE) errorPositions += pos reporter.warning((pos), msg) } def deprecationWarning(pos: Position, msg: String) = if (settings.deprecation.value) warning(pos, msg) else currentRun.deprecationWarnings = true def uncheckedWarning(pos: Position, msg: String) = if (settings.unchecked.value) warning(pos, msg) else currentRun.uncheckedWarnings = true def incompleteInputError(pos: Position, msg:String) = if (inIDE || !(errorPositions contains pos)) { val hadErrors = !errorPositions.isEmpty if (!hadErrors) reporter.incompleteInputError((pos), msg) else reporter.error((pos), msg) if (!inIDE) errorPositions += pos } override def toString() = source.toString() def clear() = { fresh = null body = null depends.clear errorPositions.clear } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?