diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2016-04-15 00:04:47 +0200 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2016-04-15 00:04:47 +0200 |
commit | 8af61ab2df46456fb943ce614c4d22b22a297239 (patch) | |
tree | b696a8e32d861111b89f5044e75499151d80e1d5 | |
parent | b56f5c9620800adfaa27e359754be4b9a7aab4fe (diff) | |
parent | 4d805dd6806ab85981c77683681a7e31d6222238 (diff) | |
download | dotty-8af61ab2df46456fb943ce614c4d22b22a297239.tar.gz dotty-8af61ab2df46456fb943ce614c4d22b22a297239.tar.bz2 dotty-8af61ab2df46456fb943ce614c4d22b22a297239.zip |
Merge pull request #1217 from dotty-staging/fix-1216
Fix #1216 Desugar: vals that are desugared PatDef may need setters.
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 7 | ||||
-rw-r--r-- | tests/pos/i1216.scala | 11 | ||||
-rw-r--r-- | tests/pos/i1216a.scala | 11 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index 719f3d036..ac2f8ae73 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -634,8 +634,11 @@ object desugar { def makeAnnotated(cls: Symbol, tree: Tree)(implicit ctx: Context) = Annotated(untpd.New(untpd.TypeTree(cls.typeRef), Nil), tree) - private def derivedValDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers) = - ValDef(named.name.asTermName, tpt, rhs).withMods(mods).withPos(named.pos) + private def derivedValDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers)(implicit ctx: Context) = { + val vdef = ValDef(named.name.asTermName, tpt, rhs).withMods(mods).withPos(named.pos) + val mayNeedSetter = valDef(vdef) + mayNeedSetter + } private def derivedDefDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers) = DefDef(named.name.asTermName, Nil, Nil, tpt, rhs).withMods(mods).withPos(named.pos) diff --git a/tests/pos/i1216.scala b/tests/pos/i1216.scala new file mode 100644 index 000000000..74c2d6c9a --- /dev/null +++ b/tests/pos/i1216.scala @@ -0,0 +1,11 @@ +object Main { + val MAX = 10 + val s1, s2, target = new Array[Long](MAX) + + var i, j = 0 + + while (i < MAX) { + target(i) = s1(i) + s2(i) + i+= 1 + } +} diff --git a/tests/pos/i1216a.scala b/tests/pos/i1216a.scala new file mode 100644 index 000000000..0652ff7a2 --- /dev/null +++ b/tests/pos/i1216a.scala @@ -0,0 +1,11 @@ +object Main { + val MAX = 10 + val s1, s2, target = new Array[Long](MAX) + + var i = 0 + + while (i < MAX) { + target(i) = s1(i) + s2(i) + i+= 1 + } +} |