diff options
author | Paul Phillips <paulp@improving.org> | 2012-07-26 10:16:29 -0700 |
---|---|---|
committer | James Iry <jamesiry@gmail.com> | 2013-01-31 08:48:51 -0800 |
commit | 243cedecda536d2d49fd64a19a9862fd26fe07f6 (patch) | |
tree | 0e3420f4702295d796270b084e5ad02b3f9ad596 /src/compiler | |
parent | 42c4cc7a1eed222a1593c6ac2652cd5357c2897a (diff) | |
download | scala-243cedecda536d2d49fd64a19a9862fd26fe07f6.tar.gz scala-243cedecda536d2d49fd64a19a9862fd26fe07f6.tar.bz2 scala-243cedecda536d2d49fd64a19a9862fd26fe07f6.zip |
[backport] Removed restriction on final vars, SI-2418.
Backport of b79c7600544db9964c228b94a2f70f3ed854f89b
The original fix for SI-2418 excluded final vars entirely, but
the problem was not final vars per se, but the emission of ACC_FINAL
in combination with ACC_VOLATILE. Since vars never get ACC_FINAL
now, this is no longer an issue.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala | 3 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 9 |
2 files changed, 3 insertions, 9 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala index dc367b11fd..2e5d61cc6b 100644 --- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala @@ -273,9 +273,6 @@ trait ContextErrors { def VolatileValueError(vdef: Tree) = issueNormalTypeError(vdef, "values cannot be volatile") - def FinalVolatileVarError(vdef: Tree) = - issueNormalTypeError(vdef, "final vars cannot be volatile") - def LocalVarUninitializedError(vdef: Tree) = issueNormalTypeError(vdef, "local variables must be initialized") diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index fd134ac894..2816015671 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -2067,12 +2067,9 @@ trait Typers extends Modes with Adaptations with Tags { var tpt1 = checkNoEscaping.privates(sym, typer1.typedType(vdef.tpt)) checkNonCyclic(vdef, tpt1) - if (sym.hasAnnotation(definitions.VolatileAttr)) { - if (!sym.isMutable) - VolatileValueError(vdef) - else if (sym.isFinal) - FinalVolatileVarError(vdef) - } + if (sym.hasAnnotation(definitions.VolatileAttr) && !sym.isMutable) + VolatileValueError(vdef) + val rhs1 = if (vdef.rhs.isEmpty) { if (sym.isVariable && sym.owner.isTerm && !sym.isLazy && !isPastTyper) |