Add additional tests for bound receivers in callable references
This commit is contained in:
committed by
max-kammerer
parent
d89d68e3df
commit
62a1ea643a
+14
@@ -0,0 +1,14 @@
|
|||||||
|
var x = 0
|
||||||
|
|
||||||
|
class A {
|
||||||
|
fun f() = if (x == 1) "OK" else "Fail $x"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun callTwice(f: () -> String): String {
|
||||||
|
f()
|
||||||
|
return f()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return callTwice(({ x++; A() }())::f)
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
// WITH_REFLECT
|
||||||
|
import kotlin.reflect.KProperty0
|
||||||
|
|
||||||
|
var x = 0
|
||||||
|
|
||||||
|
class A {
|
||||||
|
val p: String
|
||||||
|
get() = if (x == 1) "OK" else "Fail $x"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun callTwice(p: KProperty0<String>): String {
|
||||||
|
p.get()
|
||||||
|
return p.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
return callTwice(({ x++; A() }())::p)
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// FILE: JavaRunner.java
|
||||||
|
public class JavaRunner {
|
||||||
|
public static void runTwice(Runnable runnable) {
|
||||||
|
runnable.run();
|
||||||
|
runnable.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: test.kt
|
||||||
|
class A() {
|
||||||
|
fun f() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var x = 0
|
||||||
|
JavaRunner.runTwice({ x++; A() }()::f)
|
||||||
|
if (x != 1) return "Fail"
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+15
@@ -1964,6 +1964,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/bound/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleFunction.kt")
|
@TestMetadata("simpleFunction.kt")
|
||||||
public void testSimpleFunction() throws Exception {
|
public void testSimpleFunction() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
||||||
@@ -2511,6 +2516,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/property/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleExtension.kt")
|
@TestMetadata("simpleExtension.kt")
|
||||||
public void testSimpleExtension() throws Exception {
|
public void testSimpleExtension() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
||||||
@@ -23431,6 +23441,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+15
@@ -1964,6 +1964,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/bound/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleFunction.kt")
|
@TestMetadata("simpleFunction.kt")
|
||||||
public void testSimpleFunction() throws Exception {
|
public void testSimpleFunction() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
||||||
@@ -2511,6 +2516,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/property/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleExtension.kt")
|
@TestMetadata("simpleExtension.kt")
|
||||||
public void testSimpleExtension() throws Exception {
|
public void testSimpleExtension() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
||||||
@@ -23431,6 +23441,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+15
@@ -1944,6 +1944,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/bound/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleFunction.kt")
|
@TestMetadata("simpleFunction.kt")
|
||||||
public void testSimpleFunction() throws Exception {
|
public void testSimpleFunction() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
||||||
@@ -2491,6 +2496,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/property/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleExtension.kt")
|
@TestMetadata("simpleExtension.kt")
|
||||||
public void testSimpleExtension() throws Exception {
|
public void testSimpleExtension() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
||||||
@@ -22331,6 +22341,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
runTest("compiler/testData/codegen/box/sam/partialSamKT.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
@TestMetadata("compiler/testData/codegen/box/sam/constructors")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Generated
+10
@@ -1439,6 +1439,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/bound/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleFunction.kt")
|
@TestMetadata("simpleFunction.kt")
|
||||||
public void testSimpleFunction() throws Exception {
|
public void testSimpleFunction() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
||||||
@@ -1976,6 +1981,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/property/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleExtension.kt")
|
@TestMetadata("simpleExtension.kt")
|
||||||
public void testSimpleExtension() throws Exception {
|
public void testSimpleExtension() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
||||||
|
|||||||
+10
@@ -1439,6 +1439,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/primitiveReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/bound/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleFunction.kt")
|
@TestMetadata("simpleFunction.kt")
|
||||||
public void testSimpleFunction() throws Exception {
|
public void testSimpleFunction() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
runTest("compiler/testData/codegen/box/callableReference/bound/simpleFunction.kt");
|
||||||
@@ -1976,6 +1981,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/privateSetterOutsideClass.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("receiverEvaluatedOnce.kt")
|
||||||
|
public void testReceiverEvaluatedOnce() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/callableReference/property/receiverEvaluatedOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("simpleExtension.kt")
|
@TestMetadata("simpleExtension.kt")
|
||||||
public void testSimpleExtension() throws Exception {
|
public void testSimpleExtension() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
runTest("compiler/testData/codegen/box/callableReference/property/simpleExtension.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user