aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-04-09 19:06:28 +0200
committerMartin Odersky <odersky@gmail.com>2017-04-09 19:06:48 +0200
commit6e8ca801e53abdac645a19a3643c42558bce262a (patch)
tree0597debaf3322e8d4077006900ceae9a7e1ab950
parentb8bb34dd0ea68cfed09ed54604f659a787037d2d (diff)
downloaddotty-6e8ca801e53abdac645a19a3643c42558bce262a.tar.gz
dotty-6e8ca801e53abdac645a19a3643c42558bce262a.tar.bz2
dotty-6e8ca801e53abdac645a19a3643c42558bce262a.zip
Fix #2188: Do cbn transform also on Selects
These can arise as a result of an explicit outer transform.
-rw-r--r--compiler/src/dotty/tools/dotc/transform/ElimByName.scala3
-rw-r--r--tests/pos/i2188.scala5
2 files changed, 8 insertions, 0 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/ElimByName.scala b/compiler/src/dotty/tools/dotc/transform/ElimByName.scala
index 839552799..06c489029 100644
--- a/compiler/src/dotty/tools/dotc/transform/ElimByName.scala
+++ b/compiler/src/dotty/tools/dotc/transform/ElimByName.scala
@@ -112,6 +112,9 @@ class ElimByName extends MiniPhaseTransform with InfoTransformer { thisTransform
override def transformIdent(tree: Ident)(implicit ctx: Context, info: TransformerInfo): Tree =
applyIfFunction(tree, tree)
+ override def transformSelect(tree: Select)(implicit ctx: Context, info: TransformerInfo): Tree =
+ applyIfFunction(tree, tree)
+
override def transformTypeApply(tree: TypeApply)(implicit ctx: Context, info: TransformerInfo): Tree = tree match {
case TypeApply(Select(_, nme.asInstanceOf_), arg :: Nil) =>
// tree might be of form e.asInstanceOf[x.type] where x becomes a function.
diff --git a/tests/pos/i2188.scala b/tests/pos/i2188.scala
new file mode 100644
index 000000000..4129977ac
--- /dev/null
+++ b/tests/pos/i2188.scala
@@ -0,0 +1,5 @@
+class Fill(elem: => Int) {
+ class Iter {
+ def next(): Int = elem
+ }
+}