aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-05-01 18:29:23 +0200
committerMartin Odersky <odersky@gmail.com>2015-05-01 18:30:11 +0200
commita263b5f3aaabe96e7ad238cb18e8f9b98d287ffc (patch)
treee9b11d3deb16721192f14fae253e8f151ec70536 /src
parentd5df72a6cbedf740ee76290fb9d7dbcc7678411f (diff)
downloaddotty-a263b5f3aaabe96e7ad238cb18e8f9b98d287ffc.tar.gz
dotty-a263b5f3aaabe96e7ad238cb18e8f9b98d287ffc.tar.bz2
dotty-a263b5f3aaabe96e7ad238cb18e8f9b98d287ffc.zip
Make sure mixin accessors are not private.
Logic moved from RefChecks to Mixin; implementation is now by name expansion instead of setting NotJavaPrivate flag.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/Mixin.scala2
-rw-r--r--src/dotty/tools/dotc/typer/RefChecks.scala4
2 files changed, 2 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala
index e20468899..de0c0c801 100644
--- a/src/dotty/tools/dotc/transform/Mixin.scala
+++ b/src/dotty/tools/dotc/transform/Mixin.scala
@@ -72,7 +72,7 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait))
- sym.copySymDenotation(initFlags = sym.flags | Deferred)
+ sym.copySymDenotation(initFlags = sym.flags | Deferred).ensureNotPrivate
else
sym
diff --git a/src/dotty/tools/dotc/typer/RefChecks.scala b/src/dotty/tools/dotc/typer/RefChecks.scala
index 93cd412f2..e7ada1254 100644
--- a/src/dotty/tools/dotc/typer/RefChecks.scala
+++ b/src/dotty/tools/dotc/typer/RefChecks.scala
@@ -741,11 +741,9 @@ class RefChecks extends MiniPhase with SymTransformer { thisTransformer =>
*/
override def transformSym(d: SymDenotation)(implicit ctx: Context) = {
def mustBePublicInValueClass = d.isPrimaryConstructor || d.is(ParamAccessor)
- def mustBePublicInTrait = !d.is(Method) || d.isSetter || d.is(ParamAccessor)
def mustBePublic = {
val cls = d.owner
- (isDerivedValueClass(cls) && mustBePublicInValueClass ||
- cls.is(Trait) && mustBePublicInTrait)
+ (isDerivedValueClass(cls) && mustBePublicInValueClass
}
if ((d is PrivateTerm) && mustBePublic) notPrivate(d) else d
}