summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-12-21 11:24:03 -0800
committerGitHub <noreply@github.com>2016-12-21 11:24:03 -0800
commitc4dcc9948a996d36954f15065138557c254ea244 (patch)
tree93fe4619733f8147cf057c3ec7e798d791b91030 /src/compiler
parenta3135bf8578dee506c107b19ae7f8c1a70236a29 (diff)
parent34dad77513d08535adaf26989bd0cd84993ceab1 (diff)
downloadscala-c4dcc9948a996d36954f15065138557c254ea244.tar.gz
scala-c4dcc9948a996d36954f15065138557c254ea244.tar.bz2
scala-c4dcc9948a996d36954f15065138557c254ea244.zip
Merge pull request #5583 from lrytz/t10093
SI-10093 don't move member traits to constructor body in constructors
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Constructors.scala10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala
index 92823bafb2..231a3e4c64 100644
--- a/src/compiler/scala/tools/nsc/transform/Constructors.scala
+++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala
@@ -462,7 +462,7 @@ abstract class Constructors extends Statics with Transform with TypingTransforme
// find and dissect primary constructor
private val (primaryConstr, _primaryConstrParams, primaryConstrBody) = stats collectFirst {
- case dd@DefDef(_, _, _, vps :: Nil, _, rhs: Block) if dd.symbol.isPrimaryConstructor || dd.symbol.isMixinConstructor => (dd, vps map (_.symbol), rhs)
+ case dd@DefDef(_, _, _, vps :: Nil, _, rhs: Block) if dd.symbol.isPrimaryConstructor => (dd, vps map (_.symbol), rhs)
} getOrElse {
abort("no constructor in template: impl = " + impl)
}
@@ -646,14 +646,14 @@ abstract class Constructors extends Statics with Transform with TypingTransforme
stat match {
// recurse on class definition, store in defBuf
- case _: ClassDef if !statSym.isInterface =>
- defBuf += new ConstructorTransformer(unit).transform(stat)
+ case _: ClassDef =>
+ if (statSym.isInterface) defBuf += stat
+ else defBuf += new ConstructorTransformer(unit).transform(stat)
// primary constructor is already tracked as `primaryConstr`
// non-primary constructors go to auxConstructorBuf
- // mixin constructors are suppressed (!?!?)
case _: DefDef if statSym.isConstructor =>
- if ((statSym ne primaryConstrSym) && !statSym.isMixinConstructor) auxConstructorBuf += stat
+ if (statSym ne primaryConstrSym) auxConstructorBuf += stat
// If a val needs a field, an empty valdef goes into the template.
// Except for lazy and ConstantTyped vals, the field is initialized by an assignment in: