aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/transform
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2017-03-07 10:56:41 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2017-03-07 10:56:41 +0100
commitb7c3c3551fd56fb75018f051666edd8558a98d66 (patch)
tree868b32a732c87559b327d0297fded3ff7764906e /compiler/src/dotty/tools/dotc/transform
parentc90ea6b62de5d70f8855b377688f62c40dfe3a66 (diff)
downloaddotty-b7c3c3551fd56fb75018f051666edd8558a98d66.tar.gz
dotty-b7c3c3551fd56fb75018f051666edd8558a98d66.tar.bz2
dotty-b7c3c3551fd56fb75018f051666edd8558a98d66.zip
Fix #2054: @Static methods may access synthetic private methods stuff
Due to way how we desugar lambdas, we can decide to make a lambda static Static methods could refer to those lambdas and we need to make them public
Diffstat (limited to 'compiler/src/dotty/tools/dotc/transform')
-rw-r--r--compiler/src/dotty/tools/dotc/transform/MoveStatics.scala3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/MoveStatics.scala b/compiler/src/dotty/tools/dotc/transform/MoveStatics.scala
index 5c2cd3145..2dde8ca31 100644
--- a/compiler/src/dotty/tools/dotc/transform/MoveStatics.scala
+++ b/compiler/src/dotty/tools/dotc/transform/MoveStatics.scala
@@ -9,6 +9,7 @@ import dotty.tools.dotc.core.Decorators._
import dotty.tools.dotc.core.NameOps._
import dotty.tools.dotc.core.{Flags, Names}
import dotty.tools.dotc.core.Names.Name
+import dotty.tools.dotc.core.Phases.Phase
import dotty.tools.dotc.core.Symbols._
import dotty.tools.dotc.core.Types.MethodType
import dotty.tools.dotc.transform.TreeTransforms.{MiniPhaseTransform, TransformerInfo}
@@ -19,6 +20,8 @@ class MoveStatics extends MiniPhaseTransform with SymTransformer { thisTransform
import tpd._
override def phaseName = "moveStatic"
+ // This phase moves methods around(in infortransform) so it may need to make other methods public
+ override def runsAfter: Set[Class[_ <: Phase]] = Set(classOf[ExpandPrivate])
def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = {
if (sym.hasAnnotation(defn.ScalaStaticAnnot) && sym.owner.is(Flags.Module) && sym.owner.companionClass.exists) {