Skip to content

Commit 8af61ab

Browse files
committed
Merge pull request #1217 from dotty-staging/fix-1216
Fix #1216 Desugar: vals that are desugared PatDef may need setters.
2 parents b56f5c9 + 4d805dd commit 8af61ab

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,11 @@ object desugar {
634634
def makeAnnotated(cls: Symbol, tree: Tree)(implicit ctx: Context) =
635635
Annotated(untpd.New(untpd.TypeTree(cls.typeRef), Nil), tree)
636636

637-
private def derivedValDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers) =
638-
ValDef(named.name.asTermName, tpt, rhs).withMods(mods).withPos(named.pos)
637+
private def derivedValDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers)(implicit ctx: Context) = {
638+
val vdef = ValDef(named.name.asTermName, tpt, rhs).withMods(mods).withPos(named.pos)
639+
val mayNeedSetter = valDef(vdef)
640+
mayNeedSetter
641+
}
639642

640643
private def derivedDefDef(named: NameTree, tpt: Tree, rhs: Tree, mods: Modifiers) =
641644
DefDef(named.name.asTermName, Nil, Nil, tpt, rhs).withMods(mods).withPos(named.pos)

tests/pos/i1216.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
object Main {
2+
val MAX = 10
3+
val s1, s2, target = new Array[Long](MAX)
4+
5+
var i, j = 0
6+
7+
while (i < MAX) {
8+
target(i) = s1(i) + s2(i)
9+
i+= 1
10+
}
11+
}

tests/pos/i1216a.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
object Main {
2+
val MAX = 10
3+
val s1, s2, target = new Array[Long](MAX)
4+
5+
var i = 0
6+
7+
while (i < MAX) {
8+
target(i) = s1(i) + s2(i)
9+
i+= 1
10+
}
11+
}

0 commit comments

Comments
 (0)