From a661bed267745d5f19f967712462b3f038ad8dcd Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sat, 6 Sep 2014 04:47:17 +0200 Subject: Bring back blockescapes test... ... by reverting a premature optimization in Erasure. --- src/dotty/tools/dotc/transform/Erasure.scala | 3 --- test/dotc/tests.scala | 2 +- tests/pending/pos/blockescapes.scala | 11 ----------- tests/pos/blockescapes.scala | 11 +++++++++++ 4 files changed, 12 insertions(+), 15 deletions(-) delete mode 100644 tests/pending/pos/blockescapes.scala create mode 100644 tests/pos/blockescapes.scala diff --git a/src/dotty/tools/dotc/transform/Erasure.scala b/src/dotty/tools/dotc/transform/Erasure.scala index d22fdc669..a5679d598 100644 --- a/src/dotty/tools/dotc/transform/Erasure.scala +++ b/src/dotty/tools/dotc/transform/Erasure.scala @@ -318,9 +318,6 @@ object Erasure { } } - override def ensureNoLocalRefs(block: Block, pt: Type, forcedDefined: Boolean = false)(implicit ctx: Context): Tree = - block // optimization, no checking needed, as block symbols do not change. - override def typedDefDef(ddef: untpd.DefDef, sym: Symbol)(implicit ctx: Context) = { val ddef1 = untpd.cpy.DefDef(ddef)( tparams = Nil, diff --git a/test/dotc/tests.scala b/test/dotc/tests.scala index 35b762780..843489df9 100644 --- a/test/dotc/tests.scala +++ b/test/dotc/tests.scala @@ -26,7 +26,7 @@ class tests extends CompilerTest { @Test def pos_erasure = compileFile(posDir, "erasure", doErase) @Test def pos_Coder() = compileFile(posDir, "Coder", doErase) - // @Test def pos_blockescapes() = compileFile(posDir, "blockescapes", doErase) + @Test def pos_blockescapes() = compileFile(posDir, "blockescapes", doErase) @Test def pos_collections() = compileFile(posDir, "collections", doErase) @Test def pos_functions1() = compileFile(posDir, "functions1", doErase) @Test def pos_implicits1() = compileFile(posDir, "implicits1", doErase) diff --git a/tests/pending/pos/blockescapes.scala b/tests/pending/pos/blockescapes.scala deleted file mode 100644 index 35d40974b..000000000 --- a/tests/pending/pos/blockescapes.scala +++ /dev/null @@ -1,11 +0,0 @@ -object blockescapes { - - { val x = 0; () } - val x0 = { class Foo; new Foo } - val x1 = {} - val x2 = { val z = 0 } - val m1 = { val x = 2; x } - - trait T - def m0: T = { object Foo { class Bar extends T } ; new Foo.Bar } -} \ No newline at end of file diff --git a/tests/pos/blockescapes.scala b/tests/pos/blockescapes.scala new file mode 100644 index 000000000..35d40974b --- /dev/null +++ b/tests/pos/blockescapes.scala @@ -0,0 +1,11 @@ +object blockescapes { + + { val x = 0; () } + val x0 = { class Foo; new Foo } + val x1 = {} + val x2 = { val z = 0 } + val m1 = { val x = 2; x } + + trait T + def m0: T = { object Foo { class Bar extends T } ; new Foo.Bar } +} \ No newline at end of file -- cgit v1.2.3