diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-05-19 05:22:40 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2012-05-19 05:22:40 -0700 |
commit | df3689f8da225679f4af85be2c4da47370b148cd (patch) | |
tree | d168a3321aa7262c4cbafc9950bbbe832b335318 | |
parent | 2d2fe0cfcdbf7e450222027e34be733b714d3e7c (diff) | |
parent | 57967c9d1e93aa3a4d26fc02f13172f4622ed9e3 (diff) | |
download | scala-df3689f8da225679f4af85be2c4da47370b148cd.tar.gz scala-df3689f8da225679f4af85be2c4da47370b148cd.tar.bz2 scala-df3689f8da225679f4af85be2c4da47370b148cd.zip |
Merge pull request #581 from lrytz/t4812-unc
Fix SI-4812: handle trait method with Symbol as default for argument
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 11 | ||||
-rw-r--r-- | test/files/pos/t4812.scala | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index 7f220992a3..f01cbade18 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -568,7 +568,12 @@ abstract class UnCurry extends InfoTransform if ((sym ne null) && (sym.elisionLevel.exists (_ < settings.elidebelow.value || settings.noassertions.value))) replaceElidableTree(tree) else translateSynchronized(tree) match { - case dd @ DefDef(mods, name, tparams, vparamss, tpt, rhs) => + case dd @ DefDef(mods, name, tparams, _, tpt, rhs) => + // Remove default argument trees from parameter ValDefs, SI-4812 + val vparamssNoRhs = dd.vparamss mapConserve (_ mapConserve {p => + treeCopy.ValDef(p, p.mods, p.name, p.tpt, EmptyTree) + }) + if (dd.symbol hasAnnotation VarargsClass) saveRepeatedParams(dd) withNeedLift(false) { @@ -586,10 +591,10 @@ abstract class UnCurry extends InfoTransform } treeCopy.DefDef( dd, mods, name, transformTypeDefs(tparams), - transformValDefss(vparamss), transform(tpt), rhs1) + transformValDefss(vparamssNoRhs), transform(tpt), rhs1) } } else { - super.transform(dd) + super.transform(treeCopy.DefDef(dd, mods, name, tparams, vparamssNoRhs, tpt, rhs)) } } case ValDef(_, _, _, rhs) => diff --git a/test/files/pos/t4812.scala b/test/files/pos/t4812.scala new file mode 100644 index 0000000000..2a807ab05e --- /dev/null +++ b/test/files/pos/t4812.scala @@ -0,0 +1,4 @@ +trait Test1 { + def m1(sym: Symbol = 'TestSym) + def m2(s: String = "TestString") +} |