diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-11-26 16:55:48 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-11-26 16:55:48 +0000 |
commit | 8284808cf62a87a1ad682cc64027d1bd2c444d18 (patch) | |
tree | 320617035bbeb08cdef51e3bec7b44db6c720869 | |
parent | 6f70a9f61c3e4e540dd4a6d1afebe3578501a8dd (diff) | |
download | scala-8284808cf62a87a1ad682cc64027d1bd2c444d18.tar.gz scala-8284808cf62a87a1ad682cc64027d1bd2c444d18.tar.bz2 scala-8284808cf62a87a1ad682cc64027d1bd2c444d18.zip |
Closed #2418
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 943098fe62..58146ffd80 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -1511,8 +1511,12 @@ trait Typers { self: Analyzer => var tpt1 = checkNoEscaping.privates(sym, typer1.typedType(vdef.tpt)) checkNonCyclic(vdef, tpt1) - if (sym.hasAnnotation(definitions.VolatileAttr) && !sym.hasFlag(MUTABLE)) - error(vdef.pos, "values cannot be volatile") + if (sym.hasAnnotation(definitions.VolatileAttr)) { + if (!sym.hasFlag(MUTABLE)) + error(vdef.pos, "values cannot be volatile") + else if (sym.hasFlag(FINAL)) + error(vdef.pos, "final vars cannot be volatile") + } val rhs1 = if (vdef.rhs.isEmpty) { if (sym.isVariable && sym.owner.isTerm && phase.id <= currentRun.typerPhase.id) |