More tests for synchronized() {}
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
fun box(): String {
|
||||
var obj0 = "0" as java.lang.Object
|
||||
var obj1 = "1" as java.lang.Object
|
||||
|
||||
var v = obj0
|
||||
synchronized (v) {
|
||||
v = obj1
|
||||
}
|
||||
assertThatThreadDoesNotOwnMonitor(obj0)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
fun assertThatThreadDoesNotOwnMonitor(obj: java.lang.Object) {
|
||||
try {
|
||||
obj.wait(1)
|
||||
throw IllegalStateException("Not owning a monitor!")
|
||||
}
|
||||
catch (e: IllegalMonitorStateException) {
|
||||
// OK
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
fun box(): String {
|
||||
val obj = "" as java.lang.Object
|
||||
val e = IllegalArgumentException()
|
||||
fun m() = throw e
|
||||
try {
|
||||
synchronized (m()) {
|
||||
throw AssertionError("Should not have reached this point")
|
||||
}
|
||||
}
|
||||
catch (caught: Throwable) {
|
||||
if (!(caught identityEquals e)) return "Fail: $caught"
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -1,12 +1,14 @@
|
||||
fun box(): String {
|
||||
val obj = "" as java.lang.Object
|
||||
|
||||
val e = IllegalArgumentException()
|
||||
try {
|
||||
synchronized (obj) {
|
||||
throw Throwable()
|
||||
throw e
|
||||
}
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
catch (caught: Throwable) {
|
||||
if (!(caught identityEquals e)) return "Fail: $caught"
|
||||
// If monitorexit didn't happen (a finally block failed), this assertion would fail
|
||||
assertThatThreadDoesNotOwnMonitor(obj)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
fun box(): String {
|
||||
var obj = "0" as java.lang.Object
|
||||
val result = synchronized (obj) {
|
||||
239L
|
||||
}
|
||||
|
||||
if (result != 239L) return "Fail: $result"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fun box(): String {
|
||||
var obj = "0" as java.lang.Object
|
||||
val result = synchronized (obj) {
|
||||
"239"
|
||||
}
|
||||
|
||||
if (result != "239") return "Fail: $result"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fun box(): String {
|
||||
var obj = "0" as java.lang.Object
|
||||
val result = synchronized (obj) {
|
||||
239
|
||||
}
|
||||
|
||||
if (result != 239) return "Fail: $result"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user