diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2016-12-21 11:24:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-21 11:24:03 -0800 |
commit | c4dcc9948a996d36954f15065138557c254ea244 (patch) | |
tree | 93fe4619733f8147cf057c3ec7e798d791b91030 /src/compiler | |
parent | a3135bf8578dee506c107b19ae7f8c1a70236a29 (diff) | |
parent | 34dad77513d08535adaf26989bd0cd84993ceab1 (diff) | |
download | scala-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.scala | 10 |
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: |