summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-08-29 18:16:22 +0200
committerAdriaan Moors <adriaan@lightbend.com>2016-08-29 18:33:59 +0200
commit0fbb427a2d0c20dd20d046249f37164b46eb602d (patch)
tree34be632505dcd188096cf1a92b31124b2dfa8b34 /test
parent3304bc33987f5821912bb0c7371b5e9a115c893d (diff)
downloadscala-0fbb427a2d0c20dd20d046249f37164b46eb602d.tar.gz
scala-0fbb427a2d0c20dd20d046249f37164b46eb602d.tar.bz2
scala-0fbb427a2d0c20dd20d046249f37164b46eb602d.zip
Ensure trait var accessor type is widened
If we don't widen, we'll fail to find the setter when typing `x = 42`, because `x` is constant-folded to `0`, as its type is `=> Int(0)`. After widening, `x` is type checked to `x` and its symbol is the getter in the trait, which can then be rewritten to the setter. Regression spotted and test case by szeiger.
Diffstat (limited to 'test')
-rw-r--r--test/files/pos/fields_widen_trait_var.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/test/files/pos/fields_widen_trait_var.scala b/test/files/pos/fields_widen_trait_var.scala
new file mode 100644
index 0000000000..0ea9d9629a
--- /dev/null
+++ b/test/files/pos/fields_widen_trait_var.scala
@@ -0,0 +1,4 @@
+// check that the `var x` below is assigned the type `Int`, and not `Constant(0)`,
+// and that we can assign to it (if it gets a constant type, the `x` in `x = 42`
+// is constant-folded to `0` and we can't find a setter..
+trait C { protected final var x = 0; x = 42 }