125 lines
4.1 KiB
Kotlin
Vendored
125 lines
4.1 KiB
Kotlin
Vendored
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
|
// DONT_TARGET_EXACT_BACKEND: JS
|
|
|
|
var demoCallCounter = 0
|
|
|
|
fun flushDemoCallCounter() = demoCallCounter.also { demoCallCounter = 0 }
|
|
|
|
fun demo(): Unit { ++demoCallCounter }
|
|
|
|
inline fun inlineDemo(): Unit {
|
|
demo()
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testUsualCall function=Unit_getInstance
|
|
fun testUsualCall() {
|
|
val x = demo()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallNoVar function=Unit_getInstance
|
|
fun testUsualCallNoVar() {
|
|
demo()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testUsualCallInReturn function=Unit_getInstance
|
|
fun testUsualCallInReturn() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInReturn$test function=Unit_getInstance
|
|
fun test() { return demo() }
|
|
val x = test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInReturnNoVar function=Unit_getInstance
|
|
fun testUsualCallInReturnNoVar() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInReturnNoVar$test function=Unit_getInstance
|
|
fun test() { return demo() }
|
|
test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testUsualCallInExpressionBody function=Unit_getInstance
|
|
fun testUsualCallInExpressionBody() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInExpressionBody$test function=Unit_getInstance
|
|
fun test() = demo()
|
|
val x = test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInExpressionBodyNoVar function=Unit_getInstance
|
|
fun testUsualCallInExpressionBodyNoVar() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallInExpressionBodyNoVar$test function=Unit_getInstance
|
|
fun test() = demo()
|
|
test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testInlineCall function=Unit_getInstance
|
|
fun testInlineCall() {
|
|
val x = inlineDemo()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testUsualCallNoVar function=Unit_getInstance
|
|
fun testInlineCallNoVar() {
|
|
inlineDemo()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testInlineCallInReturn function=Unit_getInstance
|
|
fun testInlineCallInReturn() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInReturn$test function=Unit_getInstance
|
|
fun test() { return inlineDemo() }
|
|
val x = test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInReturnNoVar function=Unit_getInstance
|
|
fun testInlineCallInReturnNoVar() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInReturnNoVar$test function=Unit_getInstance
|
|
fun test() { return inlineDemo() }
|
|
test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
// CHECK_CALLED_IN_SCOPE: scope=testInlineCallInExpressionBody function=Unit_getInstance
|
|
fun testInlineCallInExpressionBody() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInExpressionBody$test function=Unit_getInstance
|
|
fun test() = inlineDemo()
|
|
val x = test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
assertEquals(x.toString(), "kotlin.Unit")
|
|
}
|
|
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInExpressionBodyNoVar function=Unit_getInstance
|
|
fun testInlineCallInExpressionBodyNoVar() {
|
|
// CHECK_NOT_CALLED_IN_SCOPE: scope=testInlineCallInExpressionBodyNoVar$test function=Unit_getInstance
|
|
fun test() = inlineDemo()
|
|
test()
|
|
assertEquals(flushDemoCallCounter(), 1)
|
|
}
|
|
|
|
fun box(): String {
|
|
testUsualCall()
|
|
testUsualCallNoVar()
|
|
testUsualCallInReturn()
|
|
testUsualCallInReturnNoVar()
|
|
testUsualCallInExpressionBody()
|
|
testUsualCallInExpressionBodyNoVar()
|
|
|
|
testInlineCall()
|
|
testInlineCallNoVar()
|
|
testInlineCallInReturn()
|
|
testInlineCallInReturnNoVar()
|
|
testInlineCallInExpressionBody()
|
|
testInlineCallInExpressionBodyNoVar()
|
|
|
|
return "OK"
|
|
}
|