diff options
author | Paul Phillips <paulp@improving.org> | 2012-09-24 20:09:03 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-09-24 20:09:03 -0700 |
commit | db8dea0055739ec39c8765565c5f479ab360acf9 (patch) | |
tree | a4d70326a55b7062536a34e1ec89b7216ec21138 /test/files | |
parent | ffaa3cb89edc1407c99c89f36248358c16887fe7 (diff) | |
parent | 759de8623923d17eaca373dcec14899681a52df4 (diff) | |
download | scala-db8dea0055739ec39c8765565c5f479ab360acf9.tar.gz scala-db8dea0055739ec39c8765565c5f479ab360acf9.tar.bz2 scala-db8dea0055739ec39c8765565c5f479ab360acf9.zip |
Merge pull request #1385 from scalamacros/ticket/6412
SI-6412 some fixes for reflection leaks
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/run/reflection-mem-glbs.scala | 13 | ||||
-rw-r--r-- | test/files/run/reflection-mem-tags.scala | 17 | ||||
-rw-r--r-- | test/files/run/reflection-mem-typecheck.scala | 26 |
3 files changed, 56 insertions, 0 deletions
diff --git a/test/files/run/reflection-mem-glbs.scala b/test/files/run/reflection-mem-glbs.scala new file mode 100644 index 0000000000..3f29a914bc --- /dev/null +++ b/test/files/run/reflection-mem-glbs.scala @@ -0,0 +1,13 @@ +import scala.tools.partest.MemoryTest + +trait A { type T <: A } +trait B { type T <: B } + +object Test extends MemoryTest { + override def maxDelta = 10 + override def calcsPerIter = 50000 + override def calc() { + import scala.reflect.runtime.universe._ + glb(List(typeOf[A], typeOf[B])) + } +}
\ No newline at end of file diff --git a/test/files/run/reflection-mem-tags.scala b/test/files/run/reflection-mem-tags.scala new file mode 100644 index 0000000000..8815e7dcd8 --- /dev/null +++ b/test/files/run/reflection-mem-tags.scala @@ -0,0 +1,17 @@ +import scala.tools.partest.MemoryTest + +trait A { type T <: A } +trait B { type T <: B } + +object Test extends MemoryTest { + override def maxDelta = 10 + override def calcsPerIter = 100000 + override def calc() { + import scala.reflect.runtime.universe._ + def foo = { + class A { def x = 2; def y: A = new A } + weakTypeOf[A { def z: Int }] + } + foo + } +}
\ No newline at end of file diff --git a/test/files/run/reflection-mem-typecheck.scala b/test/files/run/reflection-mem-typecheck.scala new file mode 100644 index 0000000000..a312c2c893 --- /dev/null +++ b/test/files/run/reflection-mem-typecheck.scala @@ -0,0 +1,26 @@ +import scala.tools.partest.MemoryTest + +trait A { type T <: A } +trait B { type T <: B } + +object Test extends MemoryTest { + lazy val tb = { + import scala.reflect.runtime.universe._ + import scala.reflect.runtime.{currentMirror => cm} + import scala.tools.reflect.ToolBox + cm.mkToolBox() + } + + override def maxDelta = 10 + override def calcsPerIter = 8 + override def calc() { + var snippet = """ + trait A { type T <: A } + trait B { type T <: B } + def foo[T](x: List[T]) = x + foo(List(new A {}, new B {})) + """.trim + snippet = snippet + "\n" + (List.fill(50)(snippet.split("\n").last) mkString "\n") + tb.typeCheck(tb.parse(snippet)) + } +}
\ No newline at end of file |