aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-26 17:39:51 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-26 18:17:56 +0200
commitb50f9abef672221a4706f0819eca2cfc1068751c (patch)
tree4c0efb035ed19d2e52ed6c03f39835058a2e9e54
parentef0184826b784fda9e2e1ef9aab31cab692cf3d2 (diff)
downloaddotty-b50f9abef672221a4706f0819eca2cfc1068751c.tar.gz
dotty-b50f9abef672221a4706f0819eca2cfc1068751c.tar.bz2
dotty-b50f9abef672221a4706f0819eca2cfc1068751c.zip
Drop Module flag from lifted symbols.
Reason: A lifted module is no longer a module (i.e. singleton object) in the scope to which it is lifted. Fixes #689.
-rw-r--r--src/dotty/tools/dotc/transform/LambdaLift.scala3
-rw-r--r--tests/run/i689.scala10
-rw-r--r--tests/run/t8002.scala (renamed from tests/pending/run/t8002.scala)0
3 files changed, 12 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/LambdaLift.scala b/src/dotty/tools/dotc/transform/LambdaLift.scala
index 043c92737..cefd283be 100644
--- a/src/dotty/tools/dotc/transform/LambdaLift.scala
+++ b/src/dotty/tools/dotc/transform/LambdaLift.scala
@@ -309,7 +309,8 @@ class LambdaLift extends MiniPhase with IdentityDenotTransformer { thisTransform
local.copySymDenotation(
owner = newOwner,
name = newName(local),
- initFlags = local.flags &~ InSuperCall | Private | maybeStatic,
+ initFlags = local.flags &~ (InSuperCall | Module) | Private | maybeStatic,
+ // drop Module because class is no longer a singleton in the lifted context.
info = liftedInfo(local)).installAfter(thisTransform)
if (local.isClass)
for (member <- local.asClass.info.decls)
diff --git a/tests/run/i689.scala b/tests/run/i689.scala
new file mode 100644
index 000000000..262d13852
--- /dev/null
+++ b/tests/run/i689.scala
@@ -0,0 +1,10 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ object A {
+ def a = new A
+ def y = 0
+ }
+ class A { A.y }
+ A.a
+ }
+}
diff --git a/tests/pending/run/t8002.scala b/tests/run/t8002.scala
index c27e83a46..c27e83a46 100644
--- a/tests/pending/run/t8002.scala
+++ b/tests/run/t8002.scala