aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-08-14 18:57:34 -0700
committerMartin Odersky <odersky@gmail.com>2015-08-15 13:55:31 -0700
commitedaa193aac1d7880a81cd6a836fe3d7c3d652d45 (patch)
tree562dd22cbddd781f148a97d74a967fe640b6666e /src/dotty/tools/dotc/core/Definitions.scala
parentb30843c59757ccaaf00c6733bf81f15eb911e6c2 (diff)
downloaddotty-edaa193aac1d7880a81cd6a836fe3d7c3d652d45.tar.gz
dotty-edaa193aac1d7880a81cd6a836fe3d7c3d652d45.tar.bz2
dotty-edaa193aac1d7880a81cd6a836fe3d7c3d652d45.zip
Fix CaputuredVars/LiftTry interaction.
CapturedVars introduced an assignment that could cause a try to be executed with a non-empty stack, even after LiftTry had already run. We now avoid this by introducing a temporary variable.
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r--src/dotty/tools/dotc/core/Definitions.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala
index 502b42987..fcd9ef224 100644
--- a/src/dotty/tools/dotc/core/Definitions.scala
+++ b/src/dotty/tools/dotc/core/Definitions.scala
@@ -592,13 +592,16 @@ class Definitions {
}
/** The classes for which a Ref type exists. */
- lazy val refClasses: collection.Set[Symbol] = ScalaNumericValueClasses + BooleanClass + ObjectClass
+ lazy val refClassKeys: collection.Set[Symbol] = ScalaNumericValueClasses + BooleanClass + ObjectClass
lazy val refClass: Map[Symbol, Symbol] =
- refClasses.map(rc => rc -> ctx.requiredClass(s"scala.runtime.${rc.name}Ref")).toMap
+ refClassKeys.map(rc => rc -> ctx.requiredClass(s"scala.runtime.${rc.name}Ref")).toMap
lazy val volatileRefClass: Map[Symbol, Symbol] =
- refClasses.map(rc => rc -> ctx.requiredClass(s"scala.runtime.Volatile${rc.name}Ref")).toMap
+ refClassKeys.map(rc => rc -> ctx.requiredClass(s"scala.runtime.Volatile${rc.name}Ref")).toMap
+
+ lazy val boxedRefClasses: collection.Set[Symbol] =
+ refClassKeys.flatMap(k => Set(refClass(k), volatileRefClass(k)))
def wrapArrayMethodName(elemtp: Type): TermName = {
val cls = elemtp.classSymbol