aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-04-15 00:04:47 +0200
committerGuillaume Martres <smarter@ubuntu.com>2016-04-15 00:04:47 +0200
commit8af61ab2df46456fb943ce614c4d22b22a297239 (patch)
treeb696a8e32d861111b89f5044e75499151d80e1d5
parentb56f5c9620800adfaa27e359754be4b9a7aab4fe (diff)
parent4d805dd6806ab85981c77683681a7e31d6222238 (diff)
downloaddotty-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.scala7
-rw-r--r--tests/pos/i1216.scala11
-rw-r--r--tests/pos/i1216a.scala11
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
+ }
+}