summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2013-05-23 00:28:45 -0700
committerSom Snytt <som.snytt@gmail.com>2013-05-23 00:28:45 -0700
commit5b54681d0360616efdb2a561ce9201fbd67e7288 (patch)
treed02c028da1fbead849a7d191c0519af1e93e6ca5 /src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
parentb45e2b7b30faaa4994740fbe063737934a187d4e (diff)
downloadscala-5b54681d0360616efdb2a561ce9201fbd67e7288.tar.gz
scala-5b54681d0360616efdb2a561ce9201fbd67e7288.tar.bz2
scala-5b54681d0360616efdb2a561ce9201fbd67e7288.zip
SI-7473 Bad for expr crashes postfix
This commit makes building PostfixSelect robust against a bad pos on its operand, which can happen if a bad for expression results in an EmptyTree.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
index b5771454f8..e92c3e1654 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala
@@ -245,6 +245,12 @@ abstract class TreeBuilder {
Assign(lhs, rhs)
}
+ /** Tree for `od op`, start is start0 if od.pos is borked. */
+ def makePostfixSelect(start0: Int, end: Int, od: Tree, op: Name): Tree = {
+ val start = if (od.pos.isDefined) od.pos.startOrPoint else start0
+ atPos(r2p(start, end, end)) { new PostfixSelect(od, op.encode) }
+ }
+
/** A type tree corresponding to (possibly unary) intersection type */
def makeIntersectionTypeTree(tps: List[Tree]): Tree =
if (tps.tail.isEmpty) tps.head