diff options
author | Seth Tisue <seth@tisue.net> | 2016-10-05 11:35:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-05 11:35:53 -0500 |
commit | 9d3f0777ff883a7c59da3fa7fee156890f51701e (patch) | |
tree | 571d67a2b815db2c7b32c36160629dabfa7dba48 /test/files/run/SD-235.scala | |
parent | 388053544829c53c95cb6f9bf24ac366e950bac0 (diff) | |
parent | fb53465ca7df23aa996f4bd3c03367f98f37d283 (diff) | |
download | scala-9d3f0777ff883a7c59da3fa7fee156890f51701e.tar.gz scala-9d3f0777ff883a7c59da3fa7fee156890f51701e.tar.bz2 scala-9d3f0777ff883a7c59da3fa7fee156890f51701e.zip |
Merge pull request #5416 from SethTisue/merge-2.12.0-to-2.12.x-sep-24
merge 2.12.0 onto 2.12.x [ci: last-only]
Diffstat (limited to 'test/files/run/SD-235.scala')
-rw-r--r-- | test/files/run/SD-235.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/files/run/SD-235.scala b/test/files/run/SD-235.scala new file mode 100644 index 0000000000..eb79c6fe71 --- /dev/null +++ b/test/files/run/SD-235.scala @@ -0,0 +1,39 @@ +class C { + var ORef: Object = null + def test = { + object O { + assert(!Thread.holdsLock(C.this)) + assert(Thread.holdsLock(ORef)) + } + val captor = new { def oh = O } + val refField = captor.getClass.getDeclaredFields.last + refField.setAccessible(true) + assert(refField.getType.toString.contains("LazyRef"), refField) + ORef = refField.get(captor) + O + } +} + +class D { + var ORef: Object = null + def test = { + lazy val O = { + assert(!Thread.holdsLock(D.this)) + assert(Thread.holdsLock(ORef)) + "O" + } + val captor = new { def oh = O } + val refField = captor.getClass.getDeclaredFields.last + refField.setAccessible(true) + assert(refField.getType.toString.contains("LazyRef"), refField) + ORef = refField.get(captor) + O + } +} + +object Test { + def main(args: Array[String]): Unit = { + new C().test + new D().test + } +} |