aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2016-02-20 17:24:07 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2016-02-20 17:42:17 +0100
commit8439c7feb204cfacf861322ad6dcfe4056188891 (patch)
tree3eba406038b1a92fd10dd5605eeb056273f1e005 /src
parent910481a0f4fe671f3f4d8965eac61870596970e1 (diff)
downloaddotty-8439c7feb204cfacf861322ad6dcfe4056188891.tar.gz
dotty-8439c7feb204cfacf861322ad6dcfe4056188891.tar.bz2
dotty-8439c7feb204cfacf861322ad6dcfe4056188891.zip
FirstTransform: simplify needsCompanion code
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/transform/FirstTransform.scala10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/transform/FirstTransform.scala b/src/dotty/tools/dotc/transform/FirstTransform.scala
index 5d42d4c16..c24c5bbd9 100644
--- a/src/dotty/tools/dotc/transform/FirstTransform.scala
+++ b/src/dotty/tools/dotc/transform/FirstTransform.scala
@@ -34,11 +34,13 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi
override def phaseName = "firstTransform"
- private var needsCompanionPredicate: ClassSymbol => Boolean = null
+ private var addCompanionPhases: List[NeedsCompanions] = _
+
+ def needsCompanion(cls: ClassSymbol)(implicit ctx: Context) =
+ addCompanionPhases.exists(_.isCompanionNeeded(cls))
override def prepareForUnit(tree: tpd.Tree)(implicit ctx: Context): TreeTransform = {
- needsCompanionPredicate = ctx.phasePlan.flatMap(_.filter(x => x.isInstanceOf[NeedsCompanions])).
- foldLeft((x: ClassSymbol) => false)((pred, phase) => x => pred(x) || phase.asInstanceOf[NeedsCompanions].isCompanionNeeded(x))
+ addCompanionPhases = ctx.phasePlan.flatMap(_ collect { case p: NeedsCompanions => p })
this
}
@@ -90,7 +92,7 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi
}
def addMissingCompanions(stats: List[Tree]): List[Tree] = stats map {
- case stat: TypeDef if (singleClassDefs contains stat.name) && needsCompanionPredicate(stat.symbol.asClass) =>
+ case stat: TypeDef if (singleClassDefs contains stat.name) && needsCompanion(stat.symbol.asClass) =>
val objName = stat.name.toTermName
val nameClash = stats.exists {
case other: MemberDef =>