summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-03-20 10:35:10 -0700
committerPaul Phillips <paulp@improving.org>2012-03-28 14:02:54 -0700
commit399bd6240f775583ee9709311bd0b02e8359c15c (patch)
tree9018bea9794eedd95aaf9f1c6ca5900a7b2f06fd /src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
parent97f03245d9646b9ade43418dee7dc0d2a6203ce7 (diff)
downloadscala-399bd6240f775583ee9709311bd0b02e8359c15c.tar.gz
scala-399bd6240f775583ee9709311bd0b02e8359c15c.tar.bz2
scala-399bd6240f775583ee9709311bd0b02e8359c15c.zip
Never write final fields outside of constructors.
Closes SI-3569, SI-3770. Also threw in experimental -Yoverride-vars. It's not robust.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
index 4248b6f024..94733369a8 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala
@@ -259,7 +259,8 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT
case sel @ Select(Super(_, mix), name) =>
if (sym.isValue && !sym.isMethod || sym.hasAccessorFlag) {
- unit.error(tree.pos, "super may be not be used on "+ sym.accessedOrSelf)
+ if (!settings.overrideVars.value)
+ unit.error(tree.pos, "super may be not be used on "+ sym.accessedOrSelf)
}
else if (isDisallowed(sym)) {
unit.error(tree.pos, "super not allowed here: use this." + name.decode + " instead")