summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-06-08 12:06:21 -0700
committerPaul Phillips <paulp@improving.org>2013-06-08 12:06:21 -0700
commitcb9edc9736d8fe27c8c8bf5fefbd64f163a1c596 (patch)
treeed4fd7a130ba6e5e0be63df1eb99abb196047ff0
parent618126dc6819ca03452da99c46cf89739be8210e (diff)
parentdd5fa60c1d56587b07548c01ea70a0077a9f1fa3 (diff)
downloadscala-cb9edc9736d8fe27c8c8bf5fefbd64f163a1c596.tar.gz
scala-cb9edc9736d8fe27c8c8bf5fefbd64f163a1c596.tar.bz2
scala-cb9edc9736d8fe27c8c8bf5fefbd64f163a1c596.zip
Merge pull request #2629 from retronym/ticket/7558
SI-7558 Fix capture of free local vars in toolbox compiler
-rw-r--r--src/reflect/scala/reflect/internal/CapturedVariables.scala2
-rw-r--r--test/files/run/t7558.scala9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/CapturedVariables.scala b/src/reflect/scala/reflect/internal/CapturedVariables.scala
index 77909d9157..a3d2a8bd94 100644
--- a/src/reflect/scala/reflect/internal/CapturedVariables.scala
+++ b/src/reflect/scala/reflect/internal/CapturedVariables.scala
@@ -29,7 +29,7 @@ trait CapturedVariables { self: SymbolTable =>
def refType(valueRef: Map[Symbol, Symbol], objectRefClass: Symbol) =
if (isPrimitiveValueClass(symClass) && symClass != UnitClass) valueRef(symClass).tpe
else if (erasedTypes) objectRefClass.tpe
- else appliedType(objectRefClass, tpe)
+ else appliedType(objectRefClass, tpe1)
if (vble.hasAnnotation(VolatileAttr)) refType(volatileRefClass, VolatileObjectRefClass)
else refType(refClass, ObjectRefClass)
}
diff --git a/test/files/run/t7558.scala b/test/files/run/t7558.scala
new file mode 100644
index 0000000000..bfcaaba5cc
--- /dev/null
+++ b/test/files/run/t7558.scala
@@ -0,0 +1,9 @@
+object Test extends App {
+ val cm = reflect.runtime.currentMirror
+ val u = cm.universe
+ import scala.tools.reflect.ToolBox
+ val tb = cm.mkToolBox()
+ val t = { var x = "ab".toList; u.reify { x = x.reverse; x }.tree }
+ val evaluated = tb.eval(t)
+ assert(evaluated == "ba".toList, evaluated)
+}