aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/typer/EtaExpansion.scala10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/typer/EtaExpansion.scala b/src/dotty/tools/dotc/typer/EtaExpansion.scala
index cb8c5a43a..26a2af231 100644
--- a/src/dotty/tools/dotc/typer/EtaExpansion.scala
+++ b/src/dotty/tools/dotc/typer/EtaExpansion.scala
@@ -24,18 +24,18 @@ object EtaExpansion {
if (isIdempotentExpr(expr)) expr
else {
val name = ctx.freshName(prefix).toTermName
- val sym = ctx.newSymbol(ctx.owner, name, EmptyFlags, expr.tpe, coord = positionCoord(expr.pos))
+ val sym = ctx.newSymbol(ctx.owner, name, EmptyFlags, expr.tpe.widen, coord = positionCoord(expr.pos))
defs += ValDef(sym, expr)
Ident(sym.valRef)
}
- /** Lift out common part of tree taking part in an operator assignment such as
+ /** Lift out common part of lhs tree taking part in an operator assignment such as
*
- * tree += expr
+ * lhs += expr
*/
def liftAssigned(defs: mutable.ListBuffer[Tree], tree: Tree)(implicit ctx: Context): Tree = tree match {
- case Apply(fn, args) =>
- cpy.Apply(tree, lift(defs, fn), liftArgs(defs, fn.tpe, args))
+ case Apply(fn @ Select(pre, name), args) =>
+ cpy.Apply(tree, cpy.Select(fn, lift(defs, pre), name), liftArgs(defs, fn.tpe, args))
case Select(pre, name) =>
cpy.Select(tree, lift(defs, pre), name)
case _ =>