Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

38 lines (31 sloc) 1.333 kb
package scala.tools.nsc
package ast
import scala.reflect.internal.util.{ SourceFile, Position, OffsetPosition, NoPosition }
trait Positions extends scala.reflect.internal.Positions {
self: Global =>
def rangePos(source: SourceFile, start: Int, point: Int, end: Int) =
new OffsetPosition(source, point)
def validatePositions(tree: Tree) {}
class ValidatingPosAssigner extends PosAssigner {
var pos: Position = _
override def traverse(t: Tree) {
if (t eq EmptyTree) ()
else if (t.pos == NoPosition) super.traverse(t setPos pos)
else if (globalPhase.id <= currentRun.picklerPhase.id) {
// When we prune due to encountering a position, traverse the
// pruned children so we can warn about those lacking positions.
t.children foreach { c =>
if (c.isDummy) ()
else if (c.pos == NoPosition) {
reporter.warning(t.pos, " Positioned tree has unpositioned child in phase " + globalPhase)
inform("parent: " + treeSymStatus(t))
inform(" child: " + treeSymStatus(c) + "\n")
}
}
}
}
}
override protected[this] lazy val posAssigner: PosAssigner =
if (settings.Yrangepos.value && settings.debug.value || settings.Yposdebug.value) new ValidatingPosAssigner
else new DefaultPosAssigner
}
Jump to Line
Something went wrong with that request. Please try again.