diff options
author | Martin Odersky <odersky@gmail.com> | 2016-03-10 11:30:34 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-03-10 11:30:48 +0100 |
commit | b6daa2a522e88cfb70776b66301b65ed6d0205f6 (patch) | |
tree | e71dc0d7da962b2d1f6a2c962b8d438c7ba3f862 /src | |
parent | ff8731041a522b73fde6bddd2d7077d19d35b6b0 (diff) | |
download | dotty-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.scala | 8 |
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, |