Box inline class return value in lambdas (including suspend lambdas)
This commit is contained in:
@@ -26,10 +26,7 @@ import org.jetbrains.kotlin.config.LanguageFeature
|
|||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
|
||||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||||
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature
|
import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
@@ -42,7 +39,10 @@ import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment
|
|||||||
import org.jetbrains.kotlin.load.kotlin.*
|
import org.jetbrains.kotlin.load.kotlin.*
|
||||||
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider.IncrementalMultifileClassPackageFragment
|
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider.IncrementalMultifileClassPackageFragment
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
|
||||||
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
|
import org.jetbrains.kotlin.psi.KtFunctionLiteral
|
||||||
|
import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getOutermostParenthesizerOrThis
|
import org.jetbrains.kotlin.psi.psiUtil.getOutermostParenthesizerOrThis
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector
|
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
@@ -64,7 +64,6 @@ import org.jetbrains.kotlin.resolve.jvm.annotations.hasJvmDefaultAnnotation
|
|||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodGenericSignature
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodGenericSignature
|
||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodParameterKind
|
||||||
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature
|
||||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
@@ -379,6 +378,12 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
|||||||
return originalSuspendFunction.module.builtIns.nullableAnyType
|
return originalSuspendFunction.module.builtIns.nullableAnyType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lambdas, callable references, and function literals implicitly override corresponding generic method from a base class.
|
||||||
|
// NB we don't have suspend function literals so far, but we support it in back-end, just in case.
|
||||||
|
if (isFunctionLiteral(originalSuspendFunction) || isFunctionExpression(originalSuspendFunction)) {
|
||||||
|
return originalSuspendFunction.module.builtIns.nullableAnyType
|
||||||
|
}
|
||||||
|
|
||||||
// NB JVM view of a Kotlin function overrides JVM views of corresponding overridden functions
|
// NB JVM view of a Kotlin function overrides JVM views of corresponding overridden functions
|
||||||
val originalOverridden = getAllOverriddenDeclarations(functionDescriptor).map {
|
val originalOverridden = getAllOverriddenDeclarations(functionDescriptor).map {
|
||||||
it.unwrapInitialDescriptorForSuspendFunction().original
|
it.unwrapInitialDescriptorForSuspendFunction().original
|
||||||
@@ -957,16 +962,9 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
|||||||
|
|
||||||
val returnType = descriptor.returnType!!
|
val returnType = descriptor.returnType!!
|
||||||
|
|
||||||
// Crude hack to determine whether it is an AnonymousFunctionDescriptor created for callable reference.
|
// 'invoke' methods for lambdas, function literals, and callable references
|
||||||
// Ideally, we should force return type boxing for all anonymous functions returning an inline class value
|
// implicitly override generic 'invoke' from a corresponding base class.
|
||||||
// (so that the result is boxed properly, since technically it is a covariant override of a corresponding generic 'invoke').
|
if ((isFunctionExpression(descriptor) || isFunctionLiteral(descriptor)) && returnType.isInlineClassType()) return true
|
||||||
// But, unfortunately, we can't do so right now, because it'd break binary compatibility for lambdas returning 'Result'.
|
|
||||||
if (descriptor is AnonymousFunctionDescriptor) {
|
|
||||||
val source = descriptor.source
|
|
||||||
if (source is KotlinSourceElement && source.psi is KtCallableReferenceExpression && returnType.isInlineClassType()) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return isJvmPrimitiveOrInlineClass(returnType) &&
|
return isJvmPrimitiveOrInlineClass(returnType) &&
|
||||||
getAllOverriddenDescriptors(descriptor).any { !isJvmPrimitiveOrInlineClass(it.returnType!!) }
|
getAllOverriddenDescriptors(descriptor).any { !isJvmPrimitiveOrInlineClass(it.returnType!!) }
|
||||||
|
|||||||
Generated
+83
@@ -7106,6 +7106,16 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
||||||
@@ -12824,6 +12834,79 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractFirBlackBoxCodegenTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTestWithCustomIgnoreDirective(this::doTest, TargetBackend.JVM_IR, testDataFilePath, "// IGNORE_BACKEND_FIR: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Vendored
+27
@@ -0,0 +1,27 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JS_IR
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// WITH_COROUTINES
|
||||||
|
|
||||||
|
import helpers.*
|
||||||
|
import kotlin.coroutines.*
|
||||||
|
|
||||||
|
inline class R(val x: Any)
|
||||||
|
|
||||||
|
fun builder(c: suspend () -> Unit) {
|
||||||
|
c.startCoroutine(EmptyContinuation)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun <T> call(fn: suspend () -> T) = fn()
|
||||||
|
|
||||||
|
fun useR(r: R) = if (r.x == "OK") "OK" else "fail: $r"
|
||||||
|
|
||||||
|
suspend fun ok() = R("OK")
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var res: String = "fail"
|
||||||
|
builder {
|
||||||
|
res = useR(call(::ok))
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JS_IR
|
||||||
|
// WITH_RUNTIME
|
||||||
|
// WITH_COROUTINES
|
||||||
|
|
||||||
|
import helpers.*
|
||||||
|
import kotlin.coroutines.*
|
||||||
|
|
||||||
|
inline class R(val x: Any)
|
||||||
|
|
||||||
|
fun builder(c: suspend () -> Unit) {
|
||||||
|
c.startCoroutine(EmptyContinuation)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun <T> call(fn: suspend () -> T) = fn()
|
||||||
|
|
||||||
|
fun useR(r: R) = if (r.x == "OK") "OK" else "fail: $r"
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
var res: String = "fail"
|
||||||
|
builder {
|
||||||
|
res = useR(call { R("OK") })
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Any)
|
||||||
|
|
||||||
|
fun useX(x: X): String = x.x as String
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X("OK") })
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Any)
|
||||||
|
|
||||||
|
fun useX(x: X): String = x.x as String
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call(fun(): X { return X("OK") }))
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Int)
|
||||||
|
|
||||||
|
fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X(42) })
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Any?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = x.x as String
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X("OK") })
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Any?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X(null) })
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Int?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X(42) })
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: Int?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X(null) })
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: String?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = x.x ?: "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X("OK") })
|
||||||
Vendored
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: String?)
|
||||||
|
|
||||||
|
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X(null) })
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
inline class X(val x: String)
|
||||||
|
|
||||||
|
fun useX(x: X): String = x.x
|
||||||
|
|
||||||
|
fun <T> call(fn: () -> T) = fn()
|
||||||
|
|
||||||
|
fun box() = useX(call { X("OK") })
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
fun f1(): () -> Result<String> {
|
||||||
|
return {
|
||||||
|
runCatching {
|
||||||
|
"OK"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val r = f1()()
|
||||||
|
return r.getOrNull() ?: "fail: $r"
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
|
fun f1() = lazy {
|
||||||
|
runCatching {
|
||||||
|
"OK"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val r = f1().value
|
||||||
|
return r.getOrNull() ?: "fail: $r"
|
||||||
|
}
|
||||||
+3
-2
@@ -1,4 +1,5 @@
|
|||||||
// !LANGUAGE: +InlineClasses
|
// !LANGUAGE: +InlineClasses
|
||||||
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
|
||||||
// FILE: utils.kt
|
// FILE: utils.kt
|
||||||
|
|
||||||
@@ -21,13 +22,13 @@ fun foo(): Boolean = true
|
|||||||
fun labeled(): ULong? {
|
fun labeled(): ULong? {
|
||||||
val u = ULong(0)
|
val u = ULong(0)
|
||||||
return run {
|
return run {
|
||||||
if (foo()) return@run u
|
if (foo()) return@run u // box
|
||||||
u // box
|
u // box
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// @TestKt.class:
|
// @TestKt.class:
|
||||||
// 2 INVOKESTATIC ULong\.box
|
// 3 INVOKESTATIC ULong\.box
|
||||||
// 0 INVOKEVIRTUAL ULong.unbox
|
// 0 INVOKEVIRTUAL ULong.unbox
|
||||||
|
|
||||||
// 0 valueOf
|
// 0 valueOf
|
||||||
|
|||||||
+83
@@ -7811,6 +7811,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_2() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_2() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines.experimental");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines.experimental");
|
||||||
@@ -14039,6 +14049,79 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractBlackBoxCodegenTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+83
@@ -7811,6 +7811,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_2() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_2() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines.experimental");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines.experimental");
|
||||||
@@ -14039,6 +14049,79 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractLightAnalysisModeTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+83
@@ -7106,6 +7106,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
||||||
@@ -12824,6 +12834,79 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractIrBlackBoxCodegenTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Generated
+83
@@ -6036,6 +6036,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
||||||
@@ -11039,6 +11049,79 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractIrJsCodegenBoxTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS_IR, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
+83
@@ -6036,6 +6036,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/coroutines/inlineClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendFunctionReference.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendFunctionReference() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendFunctionReference.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxReturnValueOfSuspendLambda.kt")
|
||||||
|
public void testBoxReturnValueOfSuspendLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/coroutines/inlineClasses/boxReturnValueOfSuspendLambda.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
@TestMetadata("boxUnboxInsideCoroutine.kt")
|
||||||
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
public void testBoxUnboxInsideCoroutine_1_3() throws Exception {
|
||||||
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
runTestWithPackageReplacement("compiler/testData/codegen/box/coroutines/inlineClasses/boxUnboxInsideCoroutine.kt", "kotlin.coroutines");
|
||||||
@@ -11104,6 +11114,79 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class BoxReturnValueInLambda extends AbstractJsCodegenBoxTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInBoxReturnValueInLambda() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxAny.kt")
|
||||||
|
public void testBoxAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxFunLiteralAny.kt")
|
||||||
|
public void testBoxFunLiteralAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxFunLiteralAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxInt.kt")
|
||||||
|
public void testBoxInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAny.kt")
|
||||||
|
public void testBoxNullableAny() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAny.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableAnyNull.kt")
|
||||||
|
public void testBoxNullableAnyNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableAnyNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableInt.kt")
|
||||||
|
public void testBoxNullableInt() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableInt.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableIntNull.kt")
|
||||||
|
public void testBoxNullableIntNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableIntNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableString.kt")
|
||||||
|
public void testBoxNullableString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxNullableStringNull.kt")
|
||||||
|
public void testBoxNullableStringNull() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxNullableStringNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("boxString.kt")
|
||||||
|
public void testBoxString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/boxString.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_1.kt")
|
||||||
|
public void testKt27586_1() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_1.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt27586_2.kt")
|
||||||
|
public void testKt27586_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueInLambda/kt27586_2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user