@@ -917,8 +917,8 @@ self =>
917
917
if (opinfo.targs.nonEmpty)
918
918
syntaxError(opinfo.offset, " type application is not allowed for postfix operators" )
919
919
920
- val od = stripParens( reduceExprStack(base, opinfo.lhs) )
921
- makePostfixSelect(start, opinfo.offset, od , opinfo.operator)
920
+ val lhs = reduceExprStack(base, opinfo.lhs)
921
+ makePostfixSelect(if (lhs.pos.isDefined) lhs.pos. start else start , opinfo.offset, stripParens(lhs) , opinfo.operator)
922
922
}
923
923
924
924
def finishBinaryOp (isExpr : Boolean , opinfo : OpInfo , rhs : Tree ): Tree = {
@@ -1217,11 +1217,12 @@ self =>
1217
1217
1218
1218
def identOrMacro (): Name = if (isMacro) rawIdent() else ident()
1219
1219
1220
- def selector (t : Tree ): Tree = {
1220
+ def selector (t0 : Tree ): Tree = {
1221
+ val t = stripParens(t0)
1221
1222
val point = if (isIdent) in.offset else in.lastOffset // scala/bug#8459
1222
1223
// assert(t.pos.isDefined, t)
1223
1224
if (t != EmptyTree )
1224
- Select (t, ident(skipIt = false )) setPos r2p(t .pos.start, point, in.lastOffset)
1225
+ Select (t, ident(skipIt = false )) setPos r2p(t0 .pos.start, point, in.lastOffset)
1225
1226
else
1226
1227
errorTermTree // has already been reported
1227
1228
}
@@ -1793,14 +1794,14 @@ self =>
1793
1794
in.token match {
1794
1795
case DOT =>
1795
1796
in.nextToken()
1796
- simpleExprRest(selector(stripParens(t) ), canApply = true )
1797
+ simpleExprRest(selector(t ), canApply = true )
1797
1798
case LBRACKET =>
1798
1799
val t1 = stripParens(t)
1799
1800
t1 match {
1800
1801
case Ident (_) | Select (_, _) | Apply (_, _) =>
1801
1802
var app : Tree = t1
1802
1803
while (in.token == LBRACKET )
1803
- app = atPos(app .pos.start, in.offset)(TypeApply (app, exprTypeArgs()))
1804
+ app = atPos(t .pos.start, in.offset)(TypeApply (app, exprTypeArgs()))
1804
1805
1805
1806
simpleExprRest(app, canApply = true )
1806
1807
case _ =>
0 commit comments