[FIR] Unwrap captured types in target type of SAM conversion
^KT-66256 Fixed
This commit is contained in:
committed by
Space Team
parent
690f39b91c
commit
b875ae774e
+6
@@ -53936,6 +53936,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -53936,6 +53936,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+1
-1
@@ -549,7 +549,7 @@ internal class AdapterGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun getFunctionTypeForPossibleSamType(parameterType: ConeKotlinType): ConeKotlinType? {
|
internal fun getFunctionTypeForPossibleSamType(parameterType: ConeKotlinType): ConeKotlinType? {
|
||||||
return samResolver.getFunctionTypeForPossibleSamType(parameterType)
|
return samResolver.getSamInfoForPossibleSamType(parameterType)?.functionalType
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+6
@@ -53661,6 +53661,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -53661,6 +53661,12 @@ public class FirLightTreeBlackBoxCodegenWithFir2IrFakeOverrideGeneratorTestGener
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -53661,6 +53661,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.unreachableBranch
|
import org.jetbrains.kotlin.utils.addToStdlib.unreachableBranch
|
||||||
|
|
||||||
private val SAM_PARAMETER_NAME = Name.identifier("function")
|
private val SAM_PARAMETER_NAME = Name.identifier("function")
|
||||||
@@ -71,27 +70,42 @@ class FirSamResolver(
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFunctionTypeForPossibleSamType(type: ConeKotlinType): ConeKotlinType? {
|
/**
|
||||||
|
* fun interface Foo {
|
||||||
|
* fun bar(x: Int): String
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* [functionalType] is `(Int) -> String`
|
||||||
|
* [samType] is `Foo`
|
||||||
|
*/
|
||||||
|
data class SamConversionInfo(val functionalType: ConeKotlinType, val samType: ConeKotlinType)
|
||||||
|
|
||||||
|
fun getSamInfoForPossibleSamType(type: ConeKotlinType): SamConversionInfo? {
|
||||||
return when (type) {
|
return when (type) {
|
||||||
is ConeClassLikeType -> getFunctionTypeForPossibleSamType(type.fullyExpandedType(session))
|
is ConeClassLikeType -> SamConversionInfo(
|
||||||
|
functionalType = getFunctionTypeForPossibleSamType(type.fullyExpandedType(session)) ?: return null,
|
||||||
|
samType = type
|
||||||
|
)
|
||||||
is ConeFlexibleType -> {
|
is ConeFlexibleType -> {
|
||||||
val lowerType = getFunctionTypeForPossibleSamType(type.lowerBound) ?: return null
|
val lowerType = getSamInfoForPossibleSamType(type.lowerBound)?.functionalType ?: return null
|
||||||
val upperType = getFunctionTypeForPossibleSamType(type.upperBound) ?: return null
|
val upperType = getSamInfoForPossibleSamType(type.upperBound)?.functionalType ?: return null
|
||||||
ConeFlexibleType(lowerType.lowerBoundIfFlexible(), upperType.upperBoundIfFlexible())
|
SamConversionInfo(
|
||||||
|
functionalType = ConeFlexibleType(lowerType.lowerBoundIfFlexible(), upperType.upperBoundIfFlexible()),
|
||||||
|
samType = type
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
is ConeStubType, is ConeTypeParameterType, is ConeTypeVariableType,
|
is ConeStubType, is ConeTypeParameterType, is ConeTypeVariableType,
|
||||||
is ConeDefinitelyNotNullType, is ConeIntersectionType, is ConeIntegerLiteralType,
|
is ConeDefinitelyNotNullType, is ConeIntersectionType, is ConeIntegerLiteralType,
|
||||||
-> null
|
-> null
|
||||||
|
|
||||||
is ConeCapturedType -> type.lowerType?.let { getFunctionTypeForPossibleSamType(it) }
|
is ConeCapturedType -> type.lowerType?.let { getSamInfoForPossibleSamType(it) }
|
||||||
|
|
||||||
is ConeLookupTagBasedType -> unreachableBranch(type)
|
is ConeLookupTagBasedType -> unreachableBranch(type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getFunctionTypeForPossibleSamType(type: ConeClassLikeType): ConeLookupTagBasedType? {
|
private fun getFunctionTypeForPossibleSamType(type: ConeClassLikeType): ConeLookupTagBasedType? {
|
||||||
@OptIn(LookupTagInternals::class)
|
|
||||||
val firRegularClass = type.lookupTag.toFirRegularClass(session) ?: return null
|
val firRegularClass = type.lookupTag.toFirRegularClass(session) ?: return null
|
||||||
|
|
||||||
val (_, unsubstitutedFunctionType) = resolveFunctionTypeIfSamInterface(firRegularClass) ?: return null
|
val (_, unsubstitutedFunctionType) = resolveFunctionTypeIfSamInterface(firRegularClass) ?: return null
|
||||||
|
|||||||
+1
-1
@@ -222,7 +222,7 @@ abstract class AbstractConeCallConflictResolver(
|
|||||||
private fun FirValueParameter.toFunctionTypeForSamOrNull(call: Candidate): ConeKotlinType? {
|
private fun FirValueParameter.toFunctionTypeForSamOrNull(call: Candidate): ConeKotlinType? {
|
||||||
val functionTypesOfSamConversions = call.functionTypesOfSamConversions ?: return null
|
val functionTypesOfSamConversions = call.functionTypesOfSamConversions ?: return null
|
||||||
return call.argumentMapping?.entries?.firstNotNullOfOrNull {
|
return call.argumentMapping?.entries?.firstNotNullOfOrNull {
|
||||||
runIf(it.value == this) { functionTypesOfSamConversions[it.key.unwrapArgument()] }
|
runIf(it.value == this) { functionTypesOfSamConversions[it.key.unwrapArgument()]?.functionalType }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -505,8 +505,9 @@ private fun Candidate.getExpectedTypeWithSAMConversion(
|
|||||||
): ConeKotlinType? {
|
): ConeKotlinType? {
|
||||||
if (candidateExpectedType.isSomeFunctionType(session)) return null
|
if (candidateExpectedType.isSomeFunctionType(session)) return null
|
||||||
|
|
||||||
val expectedFunctionType = context.bodyResolveComponents.samResolver.getFunctionTypeForPossibleSamType(candidateExpectedType)
|
val samConversionInfo = context.bodyResolveComponents.samResolver.getSamInfoForPossibleSamType(candidateExpectedType)
|
||||||
?: return null
|
?: return null
|
||||||
|
val expectedFunctionType = samConversionInfo.functionalType
|
||||||
|
|
||||||
if (!argument.shouldUseSamConversion(
|
if (!argument.shouldUseSamConversion(
|
||||||
session,
|
session,
|
||||||
@@ -520,9 +521,9 @@ private fun Candidate.getExpectedTypeWithSAMConversion(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val samConversions = functionTypesOfSamConversions
|
val samConversions = functionTypesOfSamConversions
|
||||||
?: hashMapOf<FirExpression, ConeKotlinType>().also { functionTypesOfSamConversions = it }
|
?: hashMapOf<FirExpression, FirSamResolver.SamConversionInfo>().also { functionTypesOfSamConversions = it }
|
||||||
|
|
||||||
samConversions[argument.unwrapArgument()] = expectedFunctionType
|
samConversions[argument.unwrapArgument()] = samConversionInfo
|
||||||
return expectedFunctionType
|
return expectedFunctionType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildThisReceiverExpressionCopy
|
import org.jetbrains.kotlin.fir.expressions.builder.buildThisReceiverExpressionCopy
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.FirSamResolver
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.FirInferenceSession
|
import org.jetbrains.kotlin.fir.resolve.inference.FirInferenceSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.PostponedResolvedAtom
|
import org.jetbrains.kotlin.fir.resolve.inference.PostponedResolvedAtom
|
||||||
@@ -112,7 +113,7 @@ class Candidate(
|
|||||||
|
|
||||||
var argumentMapping: LinkedHashMap<FirExpression, FirValueParameter>? = null
|
var argumentMapping: LinkedHashMap<FirExpression, FirValueParameter>? = null
|
||||||
var numDefaults: Int = 0
|
var numDefaults: Int = 0
|
||||||
var functionTypesOfSamConversions: HashMap<FirExpression, ConeKotlinType>? = null
|
var functionTypesOfSamConversions: HashMap<FirExpression, FirSamResolver.SamConversionInfo>? = null
|
||||||
lateinit var typeArgumentMapping: TypeArgumentMapping
|
lateinit var typeArgumentMapping: TypeArgumentMapping
|
||||||
val postponedAtoms = mutableListOf<PostponedResolvedAtom>()
|
val postponedAtoms = mutableListOf<PostponedResolvedAtom>()
|
||||||
|
|
||||||
|
|||||||
+12
-12
@@ -414,10 +414,9 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
// Finally, the result can be wrapped in a SAM conversion if necessary.
|
// Finally, the result can be wrapped in a SAM conversion if necessary.
|
||||||
if (transformed is FirExpression) {
|
if (transformed is FirExpression) {
|
||||||
val key = (element as? FirAnonymousFunctionExpression)?.anonymousFunction ?: element
|
val key = (element as? FirAnonymousFunctionExpression)?.anonymousFunction ?: element
|
||||||
if (expectedArgumentsTypeMapping?.samFunctionTypes?.get(key) != null) {
|
expectedArgumentsTypeMapping?.samConversions?.get(key)?.let { samInfo ->
|
||||||
val expectedArgumentType = expectedArgumentsTypeMapping.getExpectedType(key)
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
expectedArgumentType?.let { return transformed.wrapInSamExpression(it) as E }
|
return transformed.wrapInSamExpression(samInfo.samType) as E
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,7 +435,6 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
source = this@wrapInSamExpression.source?.fakeElement(KtFakeSourceElementKind.SamConversion)
|
source = this@wrapInSamExpression.source?.fakeElement(KtFakeSourceElementKind.SamConversion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val FirBasedSymbol<*>.isArrayConstructorWithLambda: Boolean
|
private val FirBasedSymbol<*>.isArrayConstructorWithLambda: Boolean
|
||||||
get() {
|
get() {
|
||||||
val constructor = (this as? FirConstructorSymbol)?.fir ?: return false
|
val constructor = (this as? FirConstructorSymbol)?.fir ?: return false
|
||||||
@@ -639,7 +637,7 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
|
|
||||||
val isIntegerOperator = symbol.isWrappedIntegerOperator()
|
val isIntegerOperator = symbol.isWrappedIntegerOperator()
|
||||||
|
|
||||||
var samConversions: MutableMap<FirElement, ConeKotlinType>? = null
|
var samConversions: MutableMap<FirElement, FirSamResolver.SamConversionInfo>? = null
|
||||||
val arguments = argumentMapping?.flatMap { (argument, valueParameter) ->
|
val arguments = argumentMapping?.flatMap { (argument, valueParameter) ->
|
||||||
val expectedType = when {
|
val expectedType = when {
|
||||||
isIntegerOperator -> ConeIntegerConstantOperatorTypeImpl(
|
isIntegerOperator -> ConeIntegerConstantOperatorTypeImpl(
|
||||||
@@ -652,10 +650,12 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
|
|
||||||
argument.unwrapAndFlattenArgument(flattenArrays = false).map {
|
argument.unwrapAndFlattenArgument(flattenArrays = false).map {
|
||||||
val element: FirElement = (it as? FirAnonymousFunctionExpression)?.anonymousFunction ?: it
|
val element: FirElement = (it as? FirAnonymousFunctionExpression)?.anonymousFunction ?: it
|
||||||
val samFunctionType = functionTypesOfSamConversions?.get(it)
|
functionTypesOfSamConversions?.get(it)?.let { samInfo ->
|
||||||
if (samFunctionType != null) {
|
|
||||||
if (samConversions == null) samConversions = mutableMapOf()
|
if (samConversions == null) samConversions = mutableMapOf()
|
||||||
samConversions!![element] = samFunctionType.substitute(this)
|
samConversions!![element] = FirSamResolver.SamConversionInfo(
|
||||||
|
functionalType = samInfo.functionalType.substituteType(this),
|
||||||
|
samType = samInfo.samType.substituteType(this)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
element to expectedType
|
element to expectedType
|
||||||
}
|
}
|
||||||
@@ -771,9 +771,9 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
expectedArgumentType.isSomeFunctionType(session) -> expectedArgumentType
|
expectedArgumentType.isSomeFunctionType(session) -> expectedArgumentType
|
||||||
// fun interface (a.k.a. SAM), then unwrap it and build a functional type from that interface function
|
// fun interface (a.k.a. SAM), then unwrap it and build a functional type from that interface function
|
||||||
else -> {
|
else -> {
|
||||||
val samFunctionType = (data as? ExpectedArgumentType.ArgumentsMap)?.samFunctionTypes?.get(anonymousFunction)
|
val samInfo = (data as? ExpectedArgumentType.ArgumentsMap)?.samConversions?.get(anonymousFunction)
|
||||||
?: samResolver.getFunctionTypeForPossibleSamType(expectedArgumentType)
|
?: samResolver.getSamInfoForPossibleSamType(expectedArgumentType)
|
||||||
samFunctionType?.lowerBoundIfFlexible()
|
samInfo?.functionalType?.lowerBoundIfFlexible()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1062,7 +1062,7 @@ sealed class ExpectedArgumentType {
|
|||||||
class ArgumentsMap(
|
class ArgumentsMap(
|
||||||
val map: Map<FirElement, ConeKotlinType>,
|
val map: Map<FirElement, ConeKotlinType>,
|
||||||
val lambdasReturnTypes: Map<FirAnonymousFunction, ConeKotlinType>,
|
val lambdasReturnTypes: Map<FirAnonymousFunction, ConeKotlinType>,
|
||||||
val samFunctionTypes: Map<FirElement, ConeKotlinType>,
|
val samConversions: Map<FirElement, FirSamResolver.SamConversionInfo>,
|
||||||
) : ExpectedArgumentType()
|
) : ExpectedArgumentType()
|
||||||
|
|
||||||
class ExpectedType(val type: ConeKotlinType) : ExpectedArgumentType()
|
class ExpectedType(val type: ConeKotlinType) : ExpectedArgumentType()
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
// ISSUE: KT-66256
|
||||||
|
|
||||||
|
fun interface Element {
|
||||||
|
fun invoke()
|
||||||
|
}
|
||||||
|
|
||||||
|
class Container<T> {
|
||||||
|
fun add(arg: T) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test(c: Container<in Element>) {
|
||||||
|
c.add({})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
test(Container())
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+6
@@ -52959,6 +52959,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -49821,6 +49821,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -52959,6 +52959,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -52959,6 +52959,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+6
@@ -52959,6 +52959,12 @@ public class FirBlackBoxCodegenTestWithInlineScopesGenerated extends AbstractFir
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
|
|||||||
+5
@@ -42746,6 +42746,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
runTest("compiler/testData/codegen/box/sam/fieldInJavaSamInterface.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("inlinedSamWrapper.kt")
|
@TestMetadata("inlinedSamWrapper.kt")
|
||||||
public void testInlinedSamWrapper() {
|
public void testInlinedSamWrapper() {
|
||||||
runTest("compiler/testData/codegen/box/sam/inlinedSamWrapper.kt");
|
runTest("compiler/testData/codegen/box/sam/inlinedSamWrapper.kt");
|
||||||
|
|||||||
+6
@@ -38319,6 +38319,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
Generated
+6
@@ -38319,6 +38319,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -37743,6 +37743,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -37743,6 +37743,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -41786,6 +41786,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -42826,6 +42826,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -40158,6 +40158,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
+6
@@ -41187,6 +41187,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
Generated
+6
@@ -38193,6 +38193,12 @@ public class FirWasmJsCodegenBoxTestGenerated extends AbstractFirWasmJsCodegenBo
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
Generated
+6
@@ -37617,6 +37617,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/sam"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inProjectedSam.kt")
|
||||||
|
public void testInProjectedSam() {
|
||||||
|
runTest("compiler/testData/codegen/box/sam/inProjectedSam.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt51821.kt")
|
@TestMetadata("kt51821.kt")
|
||||||
public void testKt51821() {
|
public void testKt51821() {
|
||||||
|
|||||||
Reference in New Issue
Block a user