aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/FrontEnd.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-09-24 13:50:27 +0200
committerMartin Odersky <odersky@gmail.com>2016-09-24 15:40:49 +0200
commitfb710457959d1c2d4b983986141875a8fde5992b (patch)
tree18883c09f001538303175148ecc3e50fee99d7c3 /src/dotty/tools/dotc/typer/FrontEnd.scala
parent003ea0fba7d37156d890e0dae90f2ce765b08e04 (diff)
downloaddotty-fb710457959d1c2d4b983986141875a8fde5992b.tar.gz
dotty-fb710457959d1c2d4b983986141875a8fde5992b.tar.bz2
dotty-fb710457959d1c2d4b983986141875a8fde5992b.zip
Make positions fit for meta
In particular: - get rid of envelope, it's too complicated and hides too many errors - check that everywhere in parsed trees the position range of a parent node contains the position ranges of its children. - check that all non-empty trees coming from parser have positions. The commit contains lots of fixes to make these checks pass. In particular, it changes the scheme how definitions are positioned. Previously the position of a definition was the token range of the name defined by it. That does obviously not work with the parent/children invariant. Now, the position is the whole definition range, with the point at the defined name (care is taken to not count backticks). Namer is changed to still use the token range of defined name as the position of the symbol.
Diffstat (limited to 'src/dotty/tools/dotc/typer/FrontEnd.scala')
-rw-r--r--src/dotty/tools/dotc/typer/FrontEnd.scala2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/typer/FrontEnd.scala b/src/dotty/tools/dotc/typer/FrontEnd.scala
index 6ca69ea45..e008430a7 100644
--- a/src/dotty/tools/dotc/typer/FrontEnd.scala
+++ b/src/dotty/tools/dotc/typer/FrontEnd.scala
@@ -7,6 +7,7 @@ import Contexts._
import Symbols._
import dotty.tools.dotc.parsing.JavaParsers.JavaParser
import parsing.Parsers.Parser
+import config.Config
import config.Printers.{typr, default}
import util.Stats._
import scala.util.control.NonFatal
@@ -34,6 +35,7 @@ class FrontEnd extends Phase {
else new Parser(unit.source).parse()
val printer = if (ctx.settings.Xprint.value.contains("parser")) default else typr
printer.println("parsed:\n" + unit.untpdTree.show)
+ if (Config.checkPositions) unit.untpdTree.checkPos(complete = true)
}
def enterSyms(implicit ctx: Context) = monitor("indexing") {