summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/Settings.scala1
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreePrinters.scala6
-rw-r--r--test/files/pos/bug646.scala16
3 files changed, 21 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala
index 8db03da28c..fe031ce15d 100644
--- a/src/compiler/scala/tools/nsc/Settings.scala
+++ b/src/compiler/scala/tools/nsc/Settings.scala
@@ -120,6 +120,7 @@ class Settings(error: String => unit) {
val Xgadt = BooleanSetting("-Xgadt", "enable gadt for classes")
val Xlinearizer = ChoiceSetting ("-Xlinearizer", "Linearizer to use", List("normal", "dfs", "rpo", "dump"), "rpo")
val Xgenerics = BooleanSetting("-Xgenerics", "Use generic Java types");
+ val Xprintpos = BooleanSetting("-Xprintpos", "Print tree positions (as offsets)");
/** A list of all settings */
def allSettings: List[Setting] = allsettings.reverse
diff --git a/src/compiler/scala/tools/nsc/ast/TreePrinters.scala b/src/compiler/scala/tools/nsc/ast/TreePrinters.scala
index 137de920b9..cada6bdbc5 100644
--- a/src/compiler/scala/tools/nsc/ast/TreePrinters.scala
+++ b/src/compiler/scala/tools/nsc/ast/TreePrinters.scala
@@ -308,7 +308,8 @@ abstract class TreePrinters {
}
}
- def print(tree: Tree): unit =
+ def print(tree: Tree): unit = {
+ if (settings.Xprintpos.value) print("["+tree.pos+"]")
printRaw(
if (tree.isDef && tree.symbol != NoSymbol) {
tree match {
@@ -320,7 +321,8 @@ abstract class TreePrinters {
case AliasTypeDef(_, _, _, rhs) => AliasTypeDef(tree.symbol, rhs)
case _ => tree
}
- } else tree);
+ } else tree)
+ }
def print(unit: CompilationUnit): unit = {
print("// Scala source: " + unit.source + "\n")
diff --git a/test/files/pos/bug646.scala b/test/files/pos/bug646.scala
new file mode 100644
index 0000000000..d5d3471731
--- /dev/null
+++ b/test/files/pos/bug646.scala
@@ -0,0 +1,16 @@
+object xfor {
+
+ import scala.xml.NodeSeq
+
+ val books =
+ <bks>
+ <title>Blabla</title>
+ <title>Blubabla</title>
+ <title>Baaaaaaalabla</title>
+ </bks>;
+
+ new NodeSeq { val theSeq = books.child } match {
+ case t @ <title>Blabla</title> => t
+ }
+
+}