diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt index e9ccd6be8d7..e9212f516f1 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.NoMutableState import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.calls.ConeCompositeConflictResolver import org.jetbrains.kotlin.fir.resolve.calls.ConeOverloadConflictResolver +import org.jetbrains.kotlin.fir.resolve.calls.ConeOverloadResolutionByLambdaConflictResolve import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator import org.jetbrains.kotlin.resolve.jvm.JvmTypeSpecificityComparator @@ -22,7 +23,8 @@ object JvmCallConflictResolverFactory : ConeCallConflictResolverFactory() { val specificityComparator = JvmTypeSpecificityComparator(components.ctx) return ConeCompositeConflictResolver( ConeOverloadConflictResolver(specificityComparator, components), - ConeEquivalentCallConflictResolver(specificityComparator, components) + ConeEquivalentCallConflictResolver(specificityComparator, components), + ConeOverloadResolutionByLambdaConflictResolve(components.session), ) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeCompositeConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeCompositeConflictResolver.kt index f86a3140aa8..129a3cdd6ae 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeCompositeConflictResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeCompositeConflictResolver.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.fir.resolve.calls class ConeCompositeConflictResolver( - private vararg val conflictResolvers: AbstractConeCallConflictResolver + private vararg val conflictResolvers: ConeCallConflictResolver ) : ConeCallConflictResolver() { override fun chooseMaximallySpecificCandidates( candidates: Set, @@ -22,4 +22,4 @@ class ConeCompositeConflictResolver( } return currentCandidates } -} \ No newline at end of file +} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt new file mode 100644 index 00000000000..1380af0c508 --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.resolve.calls + +import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration +import org.jetbrains.kotlin.fir.resolve.fqName +import org.jetbrains.kotlin.resolve.descriptorUtil.OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION + +class ConeOverloadResolutionByLambdaConflictResolve(private val session: FirSession) : ConeCallConflictResolver() { + override fun chooseMaximallySpecificCandidates( + candidates: Set, + discriminateGenerics: Boolean, + discriminateAbstracts: Boolean + ): Set { + if (candidates.size == 1) return candidates + + candidates.singleOrNull { candidate -> + (candidate.symbol.fir as? FirCallableDeclaration<*>)?.annotations?.any { + it.fqName(session) == OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION + } == true + }?.let { + return setOf(it) + } + + return candidates + } +} diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.fir.kt b/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.fir.kt deleted file mode 100644 index 8fffcbe4ad4..00000000000 --- a/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.fir.kt +++ /dev/null @@ -1,10 +0,0 @@ -// !LANGUAGE: +NewInference -// !DIAGNOSTICS: -UNUSED_PARAMETER -// WITH_RUNTIME - - -fun List>.flatten(): List = flatMap { it.fold(::emptyList, ::listOf) } - -class Option { - fun fold(ifEmpty: () -> R, ifSome: (T) -> R): R = TODO() -} diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.kt b/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.kt index 3dcd7353331..da4dbd9b553 100644 --- a/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.kt +++ b/compiler/testData/diagnostics/tests/callableReference/resolve/resolveTwoReferencesAgainstGenerics.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER // WITH_RUNTIME diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt index b69ad21f0c9..a0cf6c2b5e9 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt @@ -3,18 +3,18 @@ class A fun test_1(list: List>) { - list.flatMapTo(mutableSetOf()) { it } + list.flatMapTo(mutableSetOf()) { it } } fun test_2(list: List>) { sequence { - list.flatMapTo(mutableSetOf()) { it } + ")!>list.flatMapTo(mutableSetOf()) { it } } } fun test_3(list: List>) { sequence { - list.flatMapTo(mutableSetOf()) { it } + list.flatMapTo(mutableSetOf()) { it } yield(A()) } } @@ -22,6 +22,6 @@ fun test_3(list: List>) { fun test_4(list: List>) { sequence { yield(A()) - list.flatMapTo(mutableSetOf()) { it } + list.flatMapTo(mutableSetOf()) { it } } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.fir.kt deleted file mode 100644 index de14e25943c..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.fir.kt +++ /dev/null @@ -1,41 +0,0 @@ -// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -// ISSUE: KT-11265 - -// FILE: OverloadResolutionByLambdaReturnType.kt - -package kotlin - -annotation class OverloadResolutionByLambdaReturnType - -// FILE: main.kt - -import kotlin.OverloadResolutionByLambdaReturnType - -@kotlin.jvm.JvmName("myFlatMapIterable") -@OverloadResolutionByLambdaReturnType -fun Sequence.myFlatMap(transform: (T) -> Iterable): Sequence { - TODO() -} - -fun Sequence.myFlatMap(transform: (T) -> Sequence): Sequence { - TODO() -} - -interface A { - val supertypes: Collection -} - -interface B { - val descriptors: Sequence? -} - -interface C - -fun elvis(x: K?, y: K): K = y - -fun test(a: A) { - a.supertypes.asSequence().myFlatMap { - elvis(it.descriptors, sequenceOf()) - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.kt index f7fc1603694..95e2ff88ad0 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/independentResolutionInLambda.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION // ISSUE: KT-11265 diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.fir.kt deleted file mode 100644 index d017efdc4ba..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.fir.kt +++ /dev/null @@ -1,35 +0,0 @@ -// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS -// ISSUE: KT-11265 - -// FILE: OverloadResolutionByLambdaReturnType.kt - -package kotlin - -annotation class OverloadResolutionByLambdaReturnType - -// FILE: main.kt - -import kotlin.OverloadResolutionByLambdaReturnType - -@OverloadResolutionByLambdaReturnType -fun UByteArray.fooMap(t: (UByte) -> Iterable): List { - TODO("ub.fm") -} - -@OverloadResolutionByLambdaReturnType -fun Iterable.fooMap(t: (T) -> Iterable): List { - TODO("i.fm(i)") -} - -@JvmName("fooMapSeq") -fun Iterable.fooMap(t: (T) -> Sequence): List { - TODO("i.fm(s)") -} - -fun test() { - val list = ubyteArrayOf(0u).fooMap { listOf(it) } - takeUByteList(list) -} - -fun takeUByteList(list: List) {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.kt index 989ad9a96e5..485b9617821 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_1.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS // ISSUE: KT-11265 diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.fir.kt deleted file mode 100644 index c5a6b7f8778..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.fir.kt +++ /dev/null @@ -1,54 +0,0 @@ -// !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS -// ISSUE: KT-11265 - -// FILE: OverloadResolutionByLambdaReturnType.kt - -package kotlin - -annotation class OverloadResolutionByLambdaReturnType - -// FILE: main.kt - -import kotlin.OverloadResolutionByLambdaReturnType - -public inline fun Iterable.myFlatMap(transform: (T) -> Iterable): List { - TODO() -} - -@OverloadResolutionByLambdaReturnType -@kotlin.jvm.JvmName("myFlatMapSequence") -public inline fun Iterable.myFlatMap(transform: (T) -> Sequence): List { - TODO() -} - -interface Name -interface DeclarationDescriptor { - val nextCandidates: List? - val nextCandidatesSeq: Sequence? - val name: Name -} - -fun test_1(name: Name, toplevelDescriptors: List): List { - val candidates = toplevelDescriptors.myFlatMap { container -> - val nextCandidates = container.nextCandidates ?: return@myFlatMap emptyList() - nextCandidates - } - return candidates -} - -fun test_2(name: Name, toplevelDescriptors: List): List { - val candidates = toplevelDescriptors.myFlatMap { container -> - val nextCandidates = container.nextCandidatesSeq ?: return@myFlatMap sequenceOf() - nextCandidates - } - return candidates -} - -fun test_3(name: Name, toplevelDescriptors: List): List { - val candidates = toplevelDescriptors.myFlatMap { container -> - val nextCandidates = container.nextCandidatesSeq!! - nextCandidates - } - return candidates -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.kt index 71f5bdf68e8..7e25ef482b2 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/multipleOverloads_3.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +NewInference +OverloadResolutionByLambdaReturnType // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -EXPERIMENTAL_API_USAGE -EXPERIMENTAL_UNSIGNED_LITERALS // ISSUE: KT-11265 diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_disabled.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_disabled.fir.kt index edea75cb513..dd6b72a04d6 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_disabled.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_disabled.fir.kt @@ -20,17 +20,17 @@ fun takeString(s: String) {} fun takeInt(s: Int) {} fun test_1() { - val x = create { "" } + val x = create { "" } takeString(x) } fun test_2() { - val x = create { 1 } - takeInt(x) + val x = create { 1 } + takeInt(x) } fun test_3() { - val x = create { 1.0 } + val x = create { 1.0 } } @OverloadResolutionByLambdaReturnType @@ -38,11 +38,11 @@ fun create(x: K, f: (K) -> Int): Int = 1 fun create(x: T, f: (T) -> String): String = "" fun test_4() { - val x = create("") { "" } + val x = create("") { "" } takeString(x) } fun test_5() { - val x = create("") { 1 } - takeInt(x) -} \ No newline at end of file + val x = create("") { 1 } + takeInt(x) +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_enabled.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_enabled.fir.kt index 2d2fbb7ce42..1fdc0004ddd 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_enabled.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/overloadByLambdaReturnType_enabled.fir.kt @@ -20,17 +20,17 @@ fun takeString(s: String) {} fun takeInt(s: Int) {} fun test_1() { - val x = create { "" } + val x = create { "" } takeString(x) } fun test_2() { - val x = create { 1 } - takeInt(x) + val x = create { 1 } + takeInt(x) } fun test_3() { - val x = create { 1.0 } + val x = create { 1.0 } } @OverloadResolutionByLambdaReturnType @@ -38,13 +38,13 @@ fun create(x: K, f: (K) -> Int): Int = 1 fun create(x: T, f: (T) -> String): String = "" fun test_4() { - val x = create("") { "" } + val x = create("") { "" } takeString(x) } fun test_5() { - val x = create("") { 1 } - takeInt(x) + val x = create("") { 1 } + takeInt(x) } interface A @@ -56,6 +56,6 @@ fun foo(f: () -> A): Int = 1 fun foo(f: () -> B): String = "" fun test_6(c: C) { - val x = foo { c } + val x = foo { c } takeString(x) } diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.fir.kt deleted file mode 100644 index ea9e10330bc..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.fir.kt +++ /dev/null @@ -1,24 +0,0 @@ -// !LANGUAGE: -NewInference -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION -// ISSUE: KT-11265 - -// FILE: OverloadResolutionByLambdaReturnType.kt - -package kotlin - -annotation class OverloadResolutionByLambdaReturnType - -// FILE: main.kt - -import kotlin.OverloadResolutionByLambdaReturnType - -@OverloadResolutionByLambdaReturnType -fun create(f: (Int) -> Int): Int = 1 -fun create(f: (Int) -> String): String = "" - -fun takeString(s: String) {} - -fun test_1() { - val x = create { "" } - takeString("") -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.kt index 1da656d5b7c..8870c5ea0dd 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/resolutionInOldInference.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: -NewInference // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE -UNUSED_EXPRESSION // ISSUE: KT-11265 diff --git a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/returnFromInlineLambda.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/returnFromInlineLambda.fir.kt index ed92d7cd852..af86c7df384 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/returnFromInlineLambda.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/factoryPattern/returnFromInlineLambda.fir.kt @@ -25,10 +25,10 @@ inline fun Array.myFlatMap(transform: (T) -> Sequence): List fun String.toList(): List = null!! fun test_1(a: Array, b: Boolean) { - a.myFlatMap { it.toList().ifEmpty { return } } - a.myFlatMap { + a.myFlatMap { it.toList().ifEmpty { return } } + a.myFlatMap { if (b) return - it.toList() + it.toList() } } @@ -43,9 +43,9 @@ fun Array.noInlineFlatMap(transform: (T) -> Sequence): List } fun test_2(a: Array, b: Boolean) { - a.noInlineFlatMap { it.toList().ifEmpty { return } } - a.noInlineFlatMap { + a.noInlineFlatMap { it.toList().ifEmpty { return } } + a.noInlineFlatMap { if (b) return - it.toList() + it.toList() } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/when/noTypeArgumentsInConstructor.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/when/noTypeArgumentsInConstructor.fir.kt index d6bb676ce71..d3314901a7c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/when/noTypeArgumentsInConstructor.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/when/noTypeArgumentsInConstructor.fir.kt @@ -23,21 +23,21 @@ val test3: MutableList = } val test4: Collection = - listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { - listOf(it) + listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { + listOf(it) } val test5: Collection = - listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { // TODO - if (true) listOf(it) else listOf(it) + listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { // TODO + if (true) listOf(it) else listOf(it) } val test6: Collection = - listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { - if (true) listOf(it) else listOf(it) + listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { + if (true) listOf(it) else listOf(it) } val test7: Collection = - listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { - select(listOf(it), listOf(it)) + listOf(1, 2, 3).flatMapTo(LinkedHashSet()) { + select(listOf(it), listOf(it)) } diff --git a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.fir.txt b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.fir.txt index 70025eb96c8..5dd0ad9a6f8 100644 --- a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.fir.txt +++ b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.fir.txt @@ -4,12 +4,16 @@ FILE fqName: fileName:/typeParametersInImplicitCast.kt VALUE_PARAMETER name:lss index:0 type:kotlin.collections.List.problematic>> BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun problematic (lss: kotlin.collections.List.problematic>>): kotlin.collections.List.problematic> declared in ' - ERROR_CALL 'Unresolved reference: #' type=IrErrorType - FUN_EXPR type=kotlin.Function0> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.collections.List + CALL 'public final fun flatMap (transform: kotlin.Function1>): kotlin.collections.List [inline] declared in kotlin.collections' type=kotlin.collections.List.problematic> origin=null + : kotlin.collections.List.problematic> + : T of .problematic + $receiver: GET_VAR 'lss: kotlin.collections.List.problematic>> declared in .problematic' type=kotlin.collections.List.problematic>> origin=null + transform: FUN_EXPR type=kotlin.Function1.problematic>, kotlin.collections.Iterable.problematic>> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.collections.List.problematic>) returnType:kotlin.collections.Iterable.problematic> + VALUE_PARAMETER name:it index:0 type:kotlin.collections.List.problematic> BLOCK_BODY - RETURN type=kotlin.Nothing from='local final fun (): kotlin.collections.List declared in .problematic' - TYPE_OP type=kotlin.collections.List origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List - CALL 'public/*package*/ open fun id (v: kotlin.collections.List.ListId.id?>?): kotlin.collections.List.ListId.id?> declared in .ListId' type=kotlin.collections.List origin=null - : kotlin.Any? - v: ERROR_CALL 'Unresolved reference: #' type=IrErrorType + RETURN type=kotlin.Nothing from='local final fun (it: kotlin.collections.List.problematic>): kotlin.collections.Iterable.problematic> declared in .problematic' + TYPE_OP type=kotlin.collections.List.problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List.problematic?> + CALL 'public/*package*/ open fun id (v: kotlin.collections.List.ListId.id?>?): kotlin.collections.List.ListId.id?> declared in .ListId' type=kotlin.collections.List.problematic?> origin=null + : T of .problematic? + v: GET_VAR 'it: kotlin.collections.List.problematic> declared in .problematic.' type=kotlin.collections.List.problematic> origin=null