summaryrefslogtreecommitdiff
path: root/test/files/run/SD-235.scala
diff options
context:
space:
mode:
authorSeth Tisue <seth@tisue.net>2016-10-05 11:35:53 -0500
committerGitHub <noreply@github.com>2016-10-05 11:35:53 -0500
commit9d3f0777ff883a7c59da3fa7fee156890f51701e (patch)
tree571d67a2b815db2c7b32c36160629dabfa7dba48 /test/files/run/SD-235.scala
parent388053544829c53c95cb6f9bf24ac366e950bac0 (diff)
parentfb53465ca7df23aa996f4bd3c03367f98f37d283 (diff)
downloadscala-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.scala39
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
+ }
+}