aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-03-10 11:30:34 +0100
committerMartin Odersky <odersky@gmail.com>2016-03-10 11:30:48 +0100
commitb6daa2a522e88cfb70776b66301b65ed6d0205f6 (patch)
treee71dc0d7da962b2d1f6a2c962b8d438c7ba3f862 /src
parentff8731041a522b73fde6bddd2d7077d19d35b6b0 (diff)
downloaddotty-b6daa2a522e88cfb70776b66301b65ed6d0205f6.tar.gz
dotty-b6daa2a522e88cfb70776b66301b65ed6d0205f6.tar.bz2
dotty-b6daa2a522e88cfb70776b66301b65ed6d0205f6.zip
Make sure lazy accessors in traits are not private.
Fixes #1140. Review by @DarkDimius or @smarter.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/Mixin.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala
index 32b268fc7..fc82caf65 100644
--- a/src/dotty/tools/dotc/transform/Mixin.scala
+++ b/src/dotty/tools/dotc/transform/Mixin.scala
@@ -98,8 +98,12 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
override def runsAfter: Set[Class[_ <: Phase]] = Set(classOf[Erasure])
override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
- if (sym.is(Accessor, butNot = Deferred | Lazy) && sym.owner.is(Trait))
- sym.copySymDenotation(initFlags = sym.flags &~ ParamAccessor | Deferred).ensureNotPrivate
+ if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait)) {
+ val sym1 =
+ if (sym is Lazy) sym
+ else sym.copySymDenotation(initFlags = sym.flags &~ ParamAccessor | Deferred)
+ sym1.ensureNotPrivate
+ }
else if (sym.isConstructor && sym.owner.is(Trait))
sym.copySymDenotation(
name = nme.TRAIT_CONSTRUCTOR,