[FIR] Remove FirLambdaArgumentExpression

It's not really necessary if the information about if the lambda was a
trailing lambda can be directly saved in FirAnonymousFunctionExpression.

Removing the FIR node uncovered a couple of bugs
(UNINITIALIZED_ENUM_ENTRY, ERROR_IN_CONTRACT_DESCRIPTION) that were
caused by assuming that a lambda is always a trailing lambda.

#KT-66124
This commit is contained in:
Kirill Rakhman
2024-03-04 11:59:13 +01:00
committed by Space Team
parent 1a5fa8d3f6
commit 03fc0fd381
66 changed files with 302 additions and 351 deletions
@@ -658,6 +658,18 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt"); runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt");
} }
@Test
@TestMetadata("labeledLambda.kt")
public void testLabeledLambda() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambda.kt");
}
@Test
@TestMetadata("labeledLambdaInsideParentheses.kt")
public void testLabeledLambdaInsideParentheses() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambdaInsideParentheses.kt");
}
@Test @Test
@TestMetadata("memberFunctionCallWithTypeArgument.kt") @TestMetadata("memberFunctionCallWithTypeArgument.kt")
public void testMemberFunctionCallWithTypeArgument() { public void testMemberFunctionCallWithTypeArgument() {
@@ -1350,8 +1350,10 @@ internal class KtFirCallResolver(
expression.realPsi as? KtExpression expression.realPsi as? KtExpression
is FirSmartCastExpression -> is FirSmartCastExpression ->
originalExpression.realPsi as? KtExpression originalExpression.realPsi as? KtExpression
is FirNamedArgumentExpression, is FirSpreadArgumentExpression, is FirLambdaArgumentExpression -> is FirNamedArgumentExpression, is FirSpreadArgumentExpression ->
realPsi.safeAs<KtValueArgument>()?.getArgumentExpression() realPsi.safeAs<KtValueArgument>()?.getArgumentExpression()
is FirAnonymousFunctionExpression ->
realPsi?.parent as? KtLabeledExpression ?: realPsi as? KtExpression
else -> realPsi as? KtExpression else -> realPsi as? KtExpression
} }
} }
@@ -235,7 +235,7 @@ internal class KtFirExpressionTypeProvider(
argumentsToParameters.entries.firstOrNull { (arg, _) -> argumentsToParameters.entries.firstOrNull { (arg, _) ->
when (arg) { when (arg) {
// TODO: better to utilize. See `createArgumentMapping` in [KtFirCallResolver] // TODO: better to utilize. See `createArgumentMapping` in [KtFirCallResolver]
is FirLambdaArgumentExpression, is FirNamedArgumentExpression, is FirSpreadArgumentExpression -> is FirNamedArgumentExpression, is FirSpreadArgumentExpression ->
arg.psi == argumentExpression.parent arg.psi == argumentExpression.parent
else -> else ->
arg.psi == argumentExpression arg.psi == argumentExpression
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtImportDirective import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -59,6 +59,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtImportDirective import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -1417,7 +1418,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
val actualType: KtType val actualType: KtType
} }
interface ManyLambdaExpressionArguments : KtFirDiagnostic<KtValueArgument> { interface ManyLambdaExpressionArguments : KtFirDiagnostic<KtLambdaExpression> {
override val diagnosticClass get() = ManyLambdaExpressionArguments::class override val diagnosticClass get() = ManyLambdaExpressionArguments::class
} }
@@ -60,6 +60,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtImportDirective import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -1702,7 +1703,7 @@ internal class ResultTypeMismatchImpl(
internal class ManyLambdaExpressionArgumentsImpl( internal class ManyLambdaExpressionArgumentsImpl(
firDiagnostic: KtPsiDiagnostic, firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken, token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtValueArgument>(firDiagnostic, token), KtFirDiagnostic.ManyLambdaExpressionArguments ) : KtAbstractFirDiagnostic<KtLambdaExpression>(firDiagnostic, token), KtFirDiagnostic.ManyLambdaExpressionArguments
internal class NewInferenceNoInformationForParameterImpl( internal class NewInferenceNoInformationForParameterImpl(
override val name: String, override val name: String,
@@ -658,6 +658,18 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt"); runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt");
} }
@Test
@TestMetadata("labeledLambda.kt")
public void testLabeledLambda() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambda.kt");
}
@Test
@TestMetadata("labeledLambdaInsideParentheses.kt")
public void testLabeledLambdaInsideParentheses() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambdaInsideParentheses.kt");
}
@Test @Test
@TestMetadata("memberFunctionCallWithTypeArgument.kt") @TestMetadata("memberFunctionCallWithTypeArgument.kt")
public void testMemberFunctionCallWithTypeArgument() { public void testMemberFunctionCallWithTypeArgument() {
@@ -658,6 +658,18 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt"); runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/kotlinPropertySetter_unqualified.kt");
} }
@Test
@TestMetadata("labeledLambda.kt")
public void testLabeledLambda() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambda.kt");
}
@Test
@TestMetadata("labeledLambdaInsideParentheses.kt")
public void testLabeledLambdaInsideParentheses() {
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambdaInsideParentheses.kt");
}
@Test @Test
@TestMetadata("memberFunctionCallWithTypeArgument.kt") @TestMetadata("memberFunctionCallWithTypeArgument.kt")
public void testMemberFunctionCallWithTypeArgument() { public void testMemberFunctionCallWithTypeArgument() {
@@ -0,0 +1,6 @@
fun foo(l1: (Int) -> Unit) {
}
fun test() {
<expr>foo label@ {}</expr>
}
@@ -0,0 +1,28 @@
KtSuccessCallInfo:
call = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = null
signature = KtFunctionLikeSignature:
receiverType = null
returnType = kotlin.Unit
symbol = /foo(l1: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = l1
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = l1: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = /foo
typeArgumentsMapping = {}
argumentMapping = {
label@ {} -> (KtVariableLikeSignature:
name = l1
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Unit>
symbol = l1: kotlin.Function1<kotlin.Int, kotlin.Unit>
callableIdIfNonLocal = null)
}
@@ -0,0 +1,7 @@
fun foo() {
<expr>bar(2, l@{ it })</expr>
}
fun bar(a: Int, b: (Int) -> Int) {
b(a)
}
@@ -0,0 +1,40 @@
KtSuccessCallInfo:
call = KtSimpleFunctionCall:
isImplicitInvoke = false
partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
dispatchReceiver = null
extensionReceiver = null
signature = KtFunctionLikeSignature:
receiverType = null
returnType = kotlin.Unit
symbol = /bar(a: kotlin.Int, b: kotlin.Function1<kotlin.Int, kotlin.Int>): kotlin.Unit
valueParameters = [
KtVariableLikeSignature:
name = a
receiverType = null
returnType = kotlin.Int
symbol = a: kotlin.Int
callableIdIfNonLocal = null,
KtVariableLikeSignature:
name = b
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Int>
symbol = b: kotlin.Function1<kotlin.Int, kotlin.Int>
callableIdIfNonLocal = null
]
callableIdIfNonLocal = /bar
typeArgumentsMapping = {}
argumentMapping = {
2 -> (KtVariableLikeSignature:
name = a
receiverType = null
returnType = kotlin.Int
symbol = a: kotlin.Int
callableIdIfNonLocal = null),
l@{ it } -> (KtVariableLikeSignature:
name = b
receiverType = null
returnType = kotlin.Function1<kotlin.Int, kotlin.Int>
symbol = b: kotlin.Function1<kotlin.Int, kotlin.Int>
callableIdIfNonLocal = null)
}
@@ -73,5 +73,5 @@ FILE: [ResolvedTo(IMPORTS)] statement.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, <L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -75,5 +75,5 @@ FILE: [ResolvedTo(IMPORTS)] statement.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, <L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -19,7 +19,7 @@ FILE: [ResolvedTo(IMPORTS)] callInsideLambdaInsideSuperCallFromSecondaryConstruc
} }
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor([ResolvedTo(BODY_RESOLVE)] l: R|kotlin/Long|): R|B| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor([ResolvedTo(BODY_RESOLVE)] l: R|kotlin/Long|): R|B| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
R|/foo|(R|<local>/l|) R|/foo|(R|<local>/l|)
} }
) )
@@ -15,7 +15,7 @@ FILE: [ResolvedTo(IMPORTS)] callInsideLambdaInsideSuperCallFromSingleSecondaryCo
} }
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class B : R|A| { public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class B : R|A| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|B| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=B] constructor([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int|): R|B| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
R|/foo|(R|<local>/i|) R|/foo|(R|<local>/i|)
} }
) )
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| { public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| { private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall2.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| { public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| { private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall3.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| { public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] error_constructor(): R|C| { private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] error_constructor(): R|C| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall4.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class G : R|A| { public final [ResolvedTo(BODY_RESOLVE)] class G : R|A| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] error_constructor(): R|G| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] error_constructor(): R|G| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -40,7 +40,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall4.kt
} }
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] constructor(): R|G| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] constructor(): R|G| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -34,7 +34,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall5.kt
} }
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] constructor(): R|G| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=G] constructor(): R|G| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCallScript.kts
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| { public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| { private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|C| {
super<R|A|>([ResolvedTo(RAW_FIR)] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|A|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=@ExtensionFunctionType kotlin/Function1<A, kotlin/Unit>] fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| { local final [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/String| {
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|() ^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
} }
@@ -3,7 +3,7 @@ FIR element: FirAnonymousFunctionExpressionImpl
FIR source kind: KtRealSourceElementKind FIR source kind: KtRealSourceElementKind
FIR element rendered: FIR element rendered:
[ResolvedTo(BODY_RESOLVE)] run@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> { <L> = [ResolvedTo(BODY_RESOLVE)] run@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> {
^ Int(1) ^ Int(1)
} }
@@ -3,7 +3,7 @@ FIR element: FirAnonymousFunctionExpressionImpl
FIR source kind: KtRealSourceElementKind FIR source kind: KtRealSourceElementKind
FIR element rendered: FIR element rendered:
[ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> { <L> = [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=kotlin/Function0<R>] run@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ Int(1) ^ Int(1)
} }
@@ -8,7 +8,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -28,7 +28,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -48,7 +48,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -68,7 +68,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -88,7 +88,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -108,7 +108,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -128,7 +128,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -148,7 +148,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -168,7 +168,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -188,7 +188,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -208,7 +208,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -228,7 +228,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -248,7 +248,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -268,7 +268,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteral.kt
} }
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -13,7 +13,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -39,7 +39,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -65,7 +65,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -91,7 +91,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -117,7 +117,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -143,7 +143,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -169,7 +169,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -195,7 +195,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -221,7 +221,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -247,7 +247,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -273,7 +273,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -299,7 +299,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -325,7 +325,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -351,7 +351,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteralScript.kts
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| { public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=TopLevelClass] constructor(): R|one/TopLevelClass| {
super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> { super<R|one/ClassWithParameter|>([ResolvedTo(RAW_FIR)] [MatchingParameterFunctionTypeKey=kotlin/Function0<kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| { local final [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] param: R|kotlin/String|): R|kotlin/Unit| {
} }
@@ -360,3 +360,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteralScript.kts
} }
} }
@@ -6,7 +6,7 @@ FILE: [ResolvedTo(RAW_FIR)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -18,7 +18,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit> public [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit>
@@ -42,7 +42,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(COMPANION_GENERATION)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(COMPANION_GENERATION)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(COMPANION_GENERATION)] get(): <implicit> public [ResolvedTo(COMPANION_GENERATION)] get(): <implicit>
@@ -54,7 +54,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(SUPER_TYPES)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(SUPER_TYPES)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(SUPER_TYPES)] get(): <implicit> public [ResolvedTo(SUPER_TYPES)] get(): <implicit>
@@ -66,7 +66,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(TYPES)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(TYPES)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(TYPES)] get(): <implicit> public [ResolvedTo(TYPES)] get(): <implicit>
@@ -78,7 +78,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(STATUS)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(STATUS)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(STATUS)] get(): <implicit> public [ResolvedTo(STATUS)] get(): <implicit>
@@ -90,7 +90,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit> public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit>
@@ -102,7 +102,7 @@ FILE: [ResolvedTo(IMPORTS)] syntheticResultDeclarationWithBigBody.kts
public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T> foo([ResolvedTo(RAW_FIR)] action: ( () -> T )): T { LAZY_BLOCK }
public final [ResolvedTo(CONTRACTS)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(CONTRACTS)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
public [ResolvedTo(CONTRACTS)] get(): <implicit> public [ResolvedTo(CONTRACTS)] get(): <implicit>
@@ -19,7 +19,7 @@ FILE: [ResolvedTo(RAW_FIR)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -44,7 +44,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(RAW_FIR)] get(): <implicit> public [ResolvedTo(RAW_FIR)] get(): <implicit>
@@ -69,7 +69,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit> public [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): <implicit>
@@ -94,7 +94,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(COMPANION_GENERATION)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(COMPANION_GENERATION)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(COMPANION_GENERATION)] get(): <implicit> public [ResolvedTo(COMPANION_GENERATION)] get(): <implicit>
@@ -119,7 +119,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(SUPER_TYPES)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(SUPER_TYPES)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(SUPER_TYPES)] get(): <implicit> public [ResolvedTo(SUPER_TYPES)] get(): <implicit>
@@ -144,7 +144,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(TYPES)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(TYPES)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(TYPES)] get(): <implicit> public [ResolvedTo(TYPES)] get(): <implicit>
@@ -169,7 +169,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(STATUS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(STATUS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(STATUS)] get(): <implicit> public [ResolvedTo(STATUS)] get(): <implicit>
@@ -194,7 +194,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit> public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): <implicit>
@@ -219,7 +219,7 @@ FILE: [ResolvedTo(IMPORTS)] resultBodyAnnotation.kts
public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] action: ( () -> Unit )): R|kotlin/Unit| { LAZY_BLOCK }
public final [ResolvedTo(CONTRACTS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(<L> = LAZY_EXPRESSION) public final [ResolvedTo(CONTRACTS)] val $$result: <implicit> = @Anno[Unresolved](LAZY_EXPRESSION) foo#(LAZY_EXPRESSION)
public [ResolvedTo(CONTRACTS)] get(): <implicit> public [ResolvedTo(CONTRACTS)] get(): <implicit>
@@ -366,3 +366,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] resultBodyAnnotation.kts
} }
) )
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Unit| public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Unit|
@@ -1,3 +1,3 @@
val foo = { <!UNRESOLVED_REFERENCE!>bar<!> }( val foo = { <!UNRESOLVED_REFERENCE!>bar<!> }(
<!SYNTAX!><!SYNTAX!><!>val<!> bar <!SYNTAX!><!SYNTAX!>=<!> <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>{ <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo<!> }<!><!> <!SYNTAX!><!SYNTAX!><!>val<!> bar <!SYNTAX!><!SYNTAX!>=<!> { <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo<!> }<!>
@@ -630,7 +630,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
parameter<ConeKotlinType>("actualType") parameter<ConeKotlinType>("actualType")
} }
val MANY_LAMBDA_EXPRESSION_ARGUMENTS by error<KtValueArgument>() val MANY_LAMBDA_EXPRESSION_ARGUMENTS by error<KtLambdaExpression>()
val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER by error<KtElement> { val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER by error<KtElement> {
parameter<String>("name") parameter<String>("name")
@@ -96,6 +96,7 @@ import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtIfExpression import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.kotlin.psi.KtImportDirective import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtModifierListOwner import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.KtNameReferenceExpression
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -406,7 +407,7 @@ object FirErrors {
val NAME_FOR_AMBIGUOUS_PARAMETER: KtDiagnosticFactory0 by error0<KtValueArgument>(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT) val NAME_FOR_AMBIGUOUS_PARAMETER: KtDiagnosticFactory0 by error0<KtValueArgument>(SourceElementPositioningStrategies.NAME_OF_NAMED_ARGUMENT)
val ASSIGNMENT_TYPE_MISMATCH: KtDiagnosticFactory3<ConeKotlinType, ConeKotlinType, Boolean> by error3<KtExpression, ConeKotlinType, ConeKotlinType, Boolean>() val ASSIGNMENT_TYPE_MISMATCH: KtDiagnosticFactory3<ConeKotlinType, ConeKotlinType, Boolean> by error3<KtExpression, ConeKotlinType, ConeKotlinType, Boolean>()
val RESULT_TYPE_MISMATCH: KtDiagnosticFactory2<ConeKotlinType, ConeKotlinType> by error2<KtExpression, ConeKotlinType, ConeKotlinType>() val RESULT_TYPE_MISMATCH: KtDiagnosticFactory2<ConeKotlinType, ConeKotlinType> by error2<KtExpression, ConeKotlinType, ConeKotlinType>()
val MANY_LAMBDA_EXPRESSION_ARGUMENTS: KtDiagnosticFactory0 by error0<KtValueArgument>() val MANY_LAMBDA_EXPRESSION_ARGUMENTS: KtDiagnosticFactory0 by error0<KtLambdaExpression>()
val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER: KtDiagnosticFactory1<String> by error1<KtElement, String>() val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER: KtDiagnosticFactory1<String> by error1<KtElement, String>()
val SPREAD_OF_NULLABLE: KtDiagnosticFactory0 by error0<PsiElement>(SourceElementPositioningStrategies.SPREAD_OPERATOR) val SPREAD_OF_NULLABLE: KtDiagnosticFactory0 by error0<PsiElement>(SourceElementPositioningStrategies.SPREAD_OPERATOR)
val ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION: KtDiagnosticFactoryForDeprecation1<ConeKotlinType> by deprecationError1<KtExpression, ConeKotlinType>(ProhibitAssigningSingleElementsToVarargsInNamedForm) val ASSIGNING_SINGLE_ELEMENT_TO_VARARG_IN_NAMED_FORM_FUNCTION: KtDiagnosticFactoryForDeprecation1<ConeKotlinType> by deprecationError1<KtExpression, ConeKotlinType>(ProhibitAssigningSingleElementsToVarargsInNamedForm)
@@ -488,7 +488,6 @@ object FirInlineDeclarationChecker : FirFunctionChecker(MppCheckerKind.Common) {
private fun isInlinableDefaultValue(expression: FirExpression): Boolean = private fun isInlinableDefaultValue(expression: FirExpression): Boolean =
expression is FirCallableReferenceAccess || expression is FirCallableReferenceAccess ||
expression is FirFunctionCall || expression is FirFunctionCall ||
expression is FirLambdaArgumentExpression ||
expression is FirAnonymousFunctionExpression || expression is FirAnonymousFunctionExpression ||
(expression is FirLiteralExpression<*> && expression.value == null) //this will be reported separately (expression is FirLiteralExpression<*> && expression.value == null) //this will be reported separately
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.analysis.checkers.hasDiagnosticKind
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirLambdaArgumentExpression
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
@@ -32,7 +31,7 @@ object FirRecursiveProblemChecker : FirBasicExpressionChecker(MppCheckerKind.Com
fun checkConeType(coneType: ConeKotlinType?) { fun checkConeType(coneType: ConeKotlinType?) {
if (coneType?.hasDiagnosticKind(DiagnosticKind.RecursionInImplicitTypes) == true) { if (coneType?.hasDiagnosticKind(DiagnosticKind.RecursionInImplicitTypes) == true) {
val source = ((expression as? FirLambdaArgumentExpression)?.expression ?: expression).source val source = expression.source
reporter.reportOn(source, FirErrors.TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, context) reporter.reportOn(source, FirErrors.TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM, context)
} else if (coneType is ConeClassLikeType) { } else if (coneType is ConeClassLikeType) {
for (typeArgument in coneType.typeArguments) { for (typeArgument in coneType.typeArguments) {
@@ -44,8 +44,7 @@ object FirReturnSyntaxAndLabelChecker : FirReturnExpressionChecker(MppCheckerKin
} }
if (functionCall is FirFunctionCall && if (functionCall is FirFunctionCall &&
functionCall.arguments.any { functionCall.arguments.any {
it is FirLambdaArgumentExpression && it is FirAnonymousFunctionExpression && it.anonymousFunction.symbol == targetSymbol
(it.expression as? FirAnonymousFunctionExpression)?.anonymousFunction?.symbol == targetSymbol
} }
) { ) {
reporter.reportOn(source, FirErrors.RETURN_FOR_BUILT_IN_SUSPEND, context) reporter.reportOn(source, FirErrors.RETURN_FOR_BUILT_IN_SUSPEND, context)
@@ -116,7 +116,7 @@ object FirSuspendCallChecker : FirQualifiedAccessExpressionChecker(MppCheckerKin
val reference = this.calleeReference val reference = this.calleeReference
if (reference is FirResolvedCallableReference) return null if (reference is FirResolvedCallableReference) return null
if (typeArguments.any { it.source != null }) return null if (typeArguments.any { it.source != null }) return null
if (arguments.singleOrNull() is FirLambdaArgumentExpression) { if (arguments.singleOrNull().let { it is FirAnonymousFunctionExpression && it.isTrailingLambda }) {
// No brackets should be in a selector call // No brackets should be in a selector call
val callExpressionSource = val callExpressionSource =
if (explicitReceiver == null) source if (explicitReceiver == null) source
@@ -236,8 +236,8 @@ object FirUninitializedEnumChecker : FirQualifiedAccessExpressionChecker(MppChec
val delegateCall = property.delegate as FirFunctionCall val delegateCall = property.delegate as FirFunctionCall
val calleeSymbol = delegateCall.calleeReference.toResolvedNamedFunctionSymbol() ?: return null val calleeSymbol = delegateCall.calleeReference.toResolvedNamedFunctionSymbol() ?: return null
if (calleeSymbol.callableId.asSingleFqName().asString() != "kotlin.lazy") return null if (calleeSymbol.callableId.asSingleFqName().asString() != "kotlin.lazy") return null
val lazyCallArgument = delegateCall.argumentList.arguments.singleOrNull() as? FirLambdaArgumentExpression ?: return null val lazyCallArgument = delegateCall.argumentList.arguments.singleOrNull() as? FirAnonymousFunctionExpression ?: return null
return (lazyCallArgument.expression as? FirAnonymousFunctionExpression)?.anonymousFunction return lazyCallArgument.anonymousFunction
} }
private fun FirDeclaration.isEnumEntryInitializer(): Boolean { private fun FirDeclaration.isEnumEntryInitializer(): Boolean {
@@ -217,10 +217,6 @@ class ExpressionCheckersDiagnosticComponent(
checkers.allBasicExpressionCheckers.check(namedArgumentExpression, data) checkers.allBasicExpressionCheckers.check(namedArgumentExpression, data)
} }
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: CheckerContext) {
checkers.allBasicExpressionCheckers.check(lambdaArgumentExpression, data)
}
override fun visitSmartCastExpression(smartCastExpression: FirSmartCastExpression, data: CheckerContext) { override fun visitSmartCastExpression(smartCastExpression: FirSmartCastExpression, data: CheckerContext) {
checkers.allBasicExpressionCheckers.check(smartCastExpression, data) checkers.allBasicExpressionCheckers.check(smartCastExpression, data)
} }
@@ -1573,11 +1573,6 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
generate(expression.expression) generate(expression.expression)
} }
is FirLambdaArgumentExpression -> {
keyword("lambda")
+" = "
generate(expression.expression)
}
is FirTypeOperatorCall -> generate(expression) is FirTypeOperatorCall -> generate(expression)
is FirEqualityOperatorCall -> generate(expression) is FirEqualityOperatorCall -> generate(expression)
is FirBinaryLogicExpression -> generate(expression) is FirBinaryLogicExpression -> generate(expression)
@@ -88,9 +88,6 @@ class Fir2IrImplicitCastInserter(
// TODO: element-wise cast? // TODO: element-wise cast?
override fun visitArrayLiteral(arrayLiteral: FirArrayLiteral, data: IrElement): IrElement = data override fun visitArrayLiteral(arrayLiteral: FirArrayLiteral, data: IrElement): IrElement = data
// TODO: something to do w.r.t. SAM?
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: IrElement): IrElement = data
// TODO: element-wise cast? // TODO: element-wise cast?
override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: IrElement): IrElement = data override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: IrElement): IrElement = data
@@ -1513,9 +1513,9 @@ class LightTreeRawFirExpressionBuilder(
VALUE_ARGUMENT -> container += convertValueArgument(node) VALUE_ARGUMENT -> container += convertValueArgument(node)
LAMBDA_EXPRESSION, LAMBDA_EXPRESSION,
LABELED_EXPRESSION, LABELED_EXPRESSION,
ANNOTATED_EXPRESSION -> container += buildLambdaArgumentExpression { ANNOTATED_EXPRESSION,
source = valueArguments.toFirSourceElement() -> container += getAsFirExpression<FirAnonymousFunctionExpression>(node).apply {
expression = getAsFirExpression(node) replaceIsTrailingLambda(newIsTrailingLambda = true)
} }
} }
} }
@@ -904,9 +904,8 @@ open class PsiRawFirBuilder(
val argumentExpression = val argumentExpression =
buildOrLazyExpression((argument as? PsiElement)?.toFirSourceElement()) { argument.toFirExpression() } buildOrLazyExpression((argument as? PsiElement)?.toFirSourceElement()) { argument.toFirExpression() }
arguments += when (argument) { arguments += when (argument) {
is KtLambdaArgument -> buildLambdaArgumentExpression { is KtLambdaArgument -> argumentExpression.apply {
source = argument.toFirSourceElement() (this as? FirAnonymousFunctionExpression)?.replaceIsTrailingLambda(true)
expression = argumentExpression
} }
else -> argumentExpression else -> argumentExpression
} }
@@ -7,7 +7,7 @@ FILE: scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@DestrAnno(LAZY_EXPRESSION) lval <destruct>: <implicit> = IntegerLiteral(0).to#(IntegerLiteral(1)) @DestrAnno(LAZY_EXPRESSION) lval <destruct>: <implicit> = IntegerLiteral(0).to#(IntegerLiteral(1))
@LeftAnno(LAZY_EXPRESSION) lval a: <implicit> = LAZY_EXPRESSION @LeftAnno(LAZY_EXPRESSION) lval a: <implicit> = LAZY_EXPRESSION
@RightAnno(LAZY_EXPRESSION) lval b: <implicit> = LAZY_EXPRESSION @RightAnno(LAZY_EXPRESSION) lval b: <implicit> = LAZY_EXPRESSION
run#(<L> = LAZY_EXPRESSION) run#(LAZY_EXPRESSION)
@Destr2Anno(LAZY_EXPRESSION) lval <destruct>: <implicit> = IntegerLiteral(2).to#(IntegerLiteral(3)) @Destr2Anno(LAZY_EXPRESSION) lval <destruct>: <implicit> = IntegerLiteral(2).to#(IntegerLiteral(3))
@SecondLeftAnno(LAZY_EXPRESSION) lval c: <implicit> = LAZY_EXPRESSION @SecondLeftAnno(LAZY_EXPRESSION) lval c: <implicit> = LAZY_EXPRESSION
@SecondRightAnno(LAZY_EXPRESSION) lval d: <implicit> = LAZY_EXPRESSION @SecondRightAnno(LAZY_EXPRESSION) lval d: <implicit> = LAZY_EXPRESSION
@@ -75,7 +75,7 @@ fun BodyResolveComponents.mapArguments(
val excessLambdaArguments: MutableList<FirExpression> = mutableListOf() val excessLambdaArguments: MutableList<FirExpression> = mutableListOf()
var externalArgument: FirExpression? = null var externalArgument: FirExpression? = null
for (argument in arguments) { for (argument in arguments) {
if (argument is FirLambdaArgumentExpression) { if (argument is FirAnonymousFunctionExpression && argument.isTrailingLambda) {
if (externalArgument == null) { if (externalArgument == null) {
externalArgument = argument externalArgument = argument
} else { } else {
@@ -298,7 +298,7 @@ class FirCallCompleter(
val matchedParameter = candidate.argumentMapping?.firstNotNullOfOrNull { (currentArgument, currentValueParameter) -> val matchedParameter = candidate.argumentMapping?.firstNotNullOfOrNull { (currentArgument, currentValueParameter) ->
val currentLambdaArgument = val currentLambdaArgument =
((currentArgument as? FirLambdaArgumentExpression)?.expression as? FirAnonymousFunctionExpression)?.anonymousFunction (currentArgument as? FirAnonymousFunctionExpression)?.anonymousFunction
if (currentLambdaArgument === lambdaArgument) { if (currentLambdaArgument === lambdaArgument) {
currentValueParameter currentValueParameter
} else { } else {
@@ -170,10 +170,10 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
owner.body.replaceFirstStatement<FirContractCallBlock> { FirContractCallBlock(resolvedContractCall) } owner.body.replaceFirstStatement<FirContractCallBlock> { FirContractCallBlock(resolvedContractCall) }
} }
val argument = resolvedContractCall.arguments.singleOrNull() as? FirLambdaArgumentExpression val argument = resolvedContractCall.arguments.singleOrNull() as? FirAnonymousFunctionExpression
?: return transformOwnerOfErrorContract(owner) ?: return transformOwnerOfErrorContract(owner)
val lambdaBody = (argument.expression as FirAnonymousFunctionExpression).anonymousFunction.body val lambdaBody = argument.anonymousFunction.body
?: return transformOwnerOfErrorContract(owner) ?: return transformOwnerOfErrorContract(owner)
val resolvedContractDescription = buildResolvedContractDescription { val resolvedContractDescription = buildResolvedContractDescription {
@@ -227,10 +227,9 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
} }
} }
val lambdaArgument = buildLambdaArgumentExpression { val lambdaArgument = buildAnonymousFunctionExpression {
expression = buildAnonymousFunctionExpression { anonymousFunction = effectsBlock
anonymousFunction = effectsBlock isTrailingLambda = true
}
} }
val contractCall = buildFunctionCall { val contractCall = buildFunctionCall {
@@ -24,6 +24,7 @@ abstract class FirAnonymousFunctionExpression : FirExpression() {
abstract override val coneTypeOrNull: ConeKotlinType? abstract override val coneTypeOrNull: ConeKotlinType?
abstract override val annotations: List<FirAnnotation> abstract override val annotations: List<FirAnnotation>
abstract val anonymousFunction: FirAnonymousFunction abstract val anonymousFunction: FirAnonymousFunction
abstract val isTrailingLambda: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitAnonymousFunctionExpression(this, data) visitor.visitAnonymousFunctionExpression(this, data)
@@ -36,6 +37,8 @@ abstract class FirAnonymousFunctionExpression : FirExpression() {
abstract override fun replaceAnnotations(newAnnotations: List<FirAnnotation>) abstract override fun replaceAnnotations(newAnnotations: List<FirAnnotation>)
abstract fun replaceIsTrailingLambda(newIsTrailingLambda: Boolean)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression
abstract fun <D> transformAnonymousFunction(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression abstract fun <D> transformAnonymousFunction(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression
@@ -1,40 +0,0 @@
/*
* Copyright 2010-2024 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.
*/
// This file was generated automatically. See compiler/fir/tree/tree-generator/Readme.md.
// DO NOT MODIFY IT MANUALLY.
package org.jetbrains.kotlin.fir.expressions
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.visitors.FirVisitor
/**
* Generated from: [org.jetbrains.kotlin.fir.tree.generator.FirTreeBuilder.lambdaArgumentExpression]
*/
abstract class FirLambdaArgumentExpression : FirWrappedArgumentExpression() {
abstract override val source: KtSourceElement?
@UnresolvedExpressionTypeAccess
abstract override val coneTypeOrNull: ConeKotlinType?
abstract override val annotations: List<FirAnnotation>
abstract override val expression: FirExpression
abstract override val isSpread: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitLambdaArgumentExpression(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E : FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
transformer.transformLambdaArgumentExpression(this, data) as E
abstract override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?)
abstract override fun replaceAnnotations(newAnnotations: List<FirAnnotation>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirLambdaArgumentExpression
}
@@ -1,53 +0,0 @@
/*
* Copyright 2010-2024 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.
*/
// This file was generated automatically. See compiler/fir/tree/tree-generator/Readme.md.
// DO NOT MODIFY IT MANUALLY.
@file:Suppress("DuplicatedCode", "unused")
package org.jetbrains.kotlin.fir.expressions.builder
import kotlin.contracts.*
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirLambdaArgumentExpression
import org.jetbrains.kotlin.fir.expressions.impl.FirLambdaArgumentExpressionImpl
import org.jetbrains.kotlin.fir.types.ConeKotlinType
@FirBuilderDsl
class FirLambdaArgumentExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
override var source: KtSourceElement? = null
override val annotations: MutableList<FirAnnotation> = mutableListOf()
lateinit var expression: FirExpression
override fun build(): FirLambdaArgumentExpression {
return FirLambdaArgumentExpressionImpl(
source,
annotations.toMutableOrEmpty(),
expression,
)
}
@Deprecated("Modification of 'coneTypeOrNull' has no impact for FirLambdaArgumentExpressionBuilder", level = DeprecationLevel.HIDDEN)
override var coneTypeOrNull: ConeKotlinType?
get() = throw IllegalStateException()
set(_) {
throw IllegalStateException()
}
}
@OptIn(ExperimentalContracts::class)
inline fun buildLambdaArgumentExpression(init: FirLambdaArgumentExpressionBuilder.() -> Unit): FirLambdaArgumentExpression {
contract {
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
}
return FirLambdaArgumentExpressionBuilder().apply(init).build()
}
@@ -1,57 +0,0 @@
/*
* Copyright 2010-2024 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.
*/
// This file was generated automatically. See compiler/fir/tree/tree-generator/Readme.md.
// DO NOT MODIFY IT MANUALLY.
@file:Suppress("DuplicatedCode")
package org.jetbrains.kotlin.fir.expressions.impl
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.MutableOrEmptyList
import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirLambdaArgumentExpression
import org.jetbrains.kotlin.fir.expressions.UnresolvedExpressionTypeAccess
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.fir.visitors.transformInplace
internal class FirLambdaArgumentExpressionImpl(
override val source: KtSourceElement?,
override var annotations: MutableOrEmptyList<FirAnnotation>,
override var expression: FirExpression,
) : FirLambdaArgumentExpression() {
@OptIn(UnresolvedExpressionTypeAccess::class)
override val coneTypeOrNull: ConeKotlinType?
get() = expression.coneTypeOrNull
override val isSpread: Boolean
get() = false
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) }
expression.accept(visitor, data)
}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirLambdaArgumentExpressionImpl {
transformAnnotations(transformer, data)
expression = expression.transform(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirLambdaArgumentExpressionImpl {
annotations.transformInplace(transformer, data)
return this
}
override fun replaceConeTypeOrNull(newConeTypeOrNull: ConeKotlinType?) {}
override fun replaceAnnotations(newAnnotations: List<FirAnnotation>) {
annotations = newAnnotations.toMutableOrEmpty()
}
}
@@ -170,9 +170,6 @@ abstract class FirDefaultVisitor<out R, in D> : FirVisitor<R, D>() {
override fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R = override fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R =
visitWrappedExpression(wrappedArgumentExpression, data) visitWrappedExpression(wrappedArgumentExpression, data)
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): R =
visitWrappedArgumentExpression(lambdaArgumentExpression, data)
override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R = override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R =
visitWrappedArgumentExpression(spreadArgumentExpression, data) visitWrappedArgumentExpression(spreadArgumentExpression, data)
@@ -120,8 +120,6 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
override fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression) = visitWrappedExpression(wrappedArgumentExpression) override fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression) = visitWrappedExpression(wrappedArgumentExpression)
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) = visitWrappedArgumentExpression(lambdaArgumentExpression)
override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression) = visitWrappedArgumentExpression(spreadArgumentExpression) override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression) = visitWrappedArgumentExpression(spreadArgumentExpression)
override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression) = visitWrappedArgumentExpression(namedArgumentExpression) override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression) = visitWrappedArgumentExpression(namedArgumentExpression)
@@ -923,14 +923,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
return transformWrappedArgumentExpression(wrappedArgumentExpression, data) return transformWrappedArgumentExpression(wrappedArgumentExpression, data)
} }
open fun transformLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): FirStatement {
return transformElement(lambdaArgumentExpression, data)
}
final override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): FirStatement {
return transformLambdaArgumentExpression(lambdaArgumentExpression, data)
}
open fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): FirStatement { open fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): FirStatement {
return transformElement(spreadArgumentExpression, data) return transformElement(spreadArgumentExpression, data)
} }
@@ -359,9 +359,6 @@ abstract class FirVisitor<out R, in D> {
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R = open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R =
visitElement(wrappedArgumentExpression, data) visitElement(wrappedArgumentExpression, data)
open fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): R =
visitElement(lambdaArgumentExpression, data)
open fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R = open fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R =
visitElement(spreadArgumentExpression, data) visitElement(spreadArgumentExpression, data)
@@ -923,14 +923,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(wrappedArgumentExpression) visitElement(wrappedArgumentExpression)
} }
final override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: Nothing?) {
visitLambdaArgumentExpression(lambdaArgumentExpression)
}
open fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) {
visitElement(lambdaArgumentExpression)
}
final override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: Nothing?) { final override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: Nothing?) {
visitSpreadArgumentExpression(spreadArgumentExpression) visitSpreadArgumentExpression(spreadArgumentExpression)
} }
@@ -21,11 +21,13 @@ import kotlin.contracts.contract
class FirAnonymousFunctionExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder { class FirAnonymousFunctionExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
override var source: KtSourceElement? = null override var source: KtSourceElement? = null
lateinit var anonymousFunction: FirAnonymousFunction lateinit var anonymousFunction: FirAnonymousFunction
var isTrailingLambda: Boolean = false
override fun build(): FirAnonymousFunctionExpression { override fun build(): FirAnonymousFunctionExpression {
return FirAnonymousFunctionExpressionImpl( return FirAnonymousFunctionExpressionImpl(
source, source,
anonymousFunction anonymousFunction,
isTrailingLambda,
) )
} }
@@ -19,8 +19,10 @@ import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
@OptIn(UnresolvedExpressionTypeAccess::class) @OptIn(UnresolvedExpressionTypeAccess::class)
internal class FirAnonymousFunctionExpressionImpl( internal class FirAnonymousFunctionExpressionImpl(
override val source: KtSourceElement?, override val source: KtSourceElement?,
override var anonymousFunction: FirAnonymousFunction override var anonymousFunction: FirAnonymousFunction,
override var isTrailingLambda: Boolean,
) : FirAnonymousFunctionExpression() { ) : FirAnonymousFunctionExpression() {
@UnresolvedExpressionTypeAccess @UnresolvedExpressionTypeAccess
override val coneTypeOrNull: ConeKotlinType? override val coneTypeOrNull: ConeKotlinType?
get() = anonymousFunction.typeRef.coneTypeOrNull get() = anonymousFunction.typeRef.coneTypeOrNull
@@ -40,6 +42,10 @@ internal class FirAnonymousFunctionExpressionImpl(
anonymousFunction.replaceAnnotations(newAnnotations) anonymousFunction.replaceAnnotations(newAnnotations)
} }
override fun replaceIsTrailingLambda(newIsTrailingLambda: Boolean) {
isTrailingLambda = newIsTrailingLambda
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpressionImpl { override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpressionImpl {
return this return this
} }
@@ -435,6 +435,7 @@ class FirRenderer(
} }
override fun visitAnonymousFunctionExpression(anonymousFunctionExpression: FirAnonymousFunctionExpression) { override fun visitAnonymousFunctionExpression(anonymousFunctionExpression: FirAnonymousFunctionExpression) {
if (anonymousFunctionExpression.isTrailingLambda) print("<L> = ")
visitAnonymousFunction(anonymousFunctionExpression.anonymousFunction) visitAnonymousFunction(anonymousFunctionExpression.anonymousFunction)
} }
@@ -732,11 +733,6 @@ class FirRenderer(
spreadArgumentExpression.expression.accept(this) spreadArgumentExpression.expression.accept(this)
} }
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) {
print("<L> = ")
lambdaArgumentExpression.expression.accept(this)
}
override fun visitVarargArgumentsExpression(varargArgumentsExpression: FirVarargArgumentsExpression) { override fun visitVarargArgumentsExpression(varargArgumentsExpression: FirVarargArgumentsExpression) {
print("vararg(") print("vararg(")
renderSeparated(varargArgumentsExpression.arguments, visitor) renderSeparated(varargArgumentsExpression.arguments, visitor)
@@ -744,8 +740,17 @@ class FirRenderer(
} }
override fun visitSamConversionExpression(samConversionExpression: FirSamConversionExpression) { override fun visitSamConversionExpression(samConversionExpression: FirSamConversionExpression) {
val expression = samConversionExpression.expression
if (expression is FirAnonymousFunctionExpression && expression.isTrailingLambda) {
print("<L> = SAM(")
expression.anonymousFunction.accept(this)
print(")")
return
}
print("SAM(") print("SAM(")
samConversionExpression.expression.accept(this) expression.accept(this)
print(")") print(")")
} }
@@ -70,11 +70,6 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
return transformJump(breakExpression, data) return transformJump(breakExpression, data)
} }
override fun transformLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): FirStatement {
return transformWrappedArgumentExpression(lambdaArgumentExpression, data)
}
override fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): FirStatement { override fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): FirStatement {
return transformWrappedArgumentExpression(spreadArgumentExpression, data) return transformWrappedArgumentExpression(spreadArgumentExpression, data)
} }
@@ -143,7 +143,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val getClassCall by element(Expression, expression, call) val getClassCall by element(Expression, expression, call)
val wrappedExpression by element(Expression, expression) val wrappedExpression by element(Expression, expression)
val wrappedArgumentExpression by element(Expression, wrappedExpression) val wrappedArgumentExpression by element(Expression, wrappedExpression)
val lambdaArgumentExpression by element(Expression, wrappedArgumentExpression)
val spreadArgumentExpression by element(Expression, wrappedArgumentExpression) val spreadArgumentExpression by element(Expression, wrappedArgumentExpression)
val namedArgumentExpression by element(Expression, wrappedArgumentExpression) val namedArgumentExpression by element(Expression, wrappedArgumentExpression)
val varargArgumentsExpression by element(Expression, expression) val varargArgumentsExpression by element(Expression, expression)
@@ -316,16 +316,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
} }
} }
impl(lambdaArgumentExpression) {
default("isSpread") {
value = "false"
withGetter = true
}
default("coneTypeOrNull") {
delegate = "expression"
}
}
impl(spreadArgumentExpression) { impl(spreadArgumentExpression) {
default("isSpread") { default("isSpread") {
value = "true" value = "true"
@@ -331,6 +331,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
anonymousFunctionExpression.configure { anonymousFunctionExpression.configure {
+field(anonymousFunction).withTransform() +field(anonymousFunction).withTransform()
+booleanField("isTrailingLambda", withReplace = true)
} }
typeParameter.configure { typeParameter.configure {
@@ -25,4 +25,19 @@ enum class JvmTarget(val description: String) {
JVM_15 -> "Opcodes.V12 + 3" JVM_15 -> "Opcodes.V12 + 3"
} }
} }
// Should not report UNINITIALIZED_ENUM_ENTRY
val bytecodeVersion2: String by lazy({
when (this) {
JVM_1_6 -> "Opcodes.V1_6"
JVM_1_8 -> "Opcodes.V1_8"
JVM_9 -> "Opcodes.V9"
JVM_10 -> "Opcodes.V10"
JVM_11 -> "Opcodes.V11"
JVM_12 -> "Opcodes.V12"
JVM_13 -> "Opcodes.V12 + 1"
JVM_14 -> "Opcodes.V12 + 2"
JVM_15 -> "Opcodes.V12 + 3"
}
})
} }
@@ -21,6 +21,7 @@ public final enum class JvmTarget : kotlin.Enum<JvmTarget> {
private constructor JvmTarget(/*0*/ description: kotlin.String) private constructor JvmTarget(/*0*/ description: kotlin.String)
public final val bytecodeVersion: kotlin.String public final val bytecodeVersion: kotlin.String
public final val bytecodeVersion2: kotlin.String
public final val description: kotlin.String public final val description: kotlin.String
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String @kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
@@ -29,7 +29,7 @@ import kotlin.contracts.*
// TESTCASE NUMBER: 1 // TESTCASE NUMBER: 1
inline fun case_1(block: () -> Unit) { inline fun case_1(block: () -> Unit) {
contract(builder = { callsInPlaceEffectBuilder(block) }) contract(builder = { <!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlaceEffectBuilder(block)<!> })
return block() return block()
} }
@@ -41,6 +41,6 @@ inline fun case_2(block: () -> Unit) {
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
inline fun case_3(value_1: Int?, block: () -> Unit) { inline fun case_3(value_1: Int?, block: () -> Unit) {
contract({ returnsEffectBuilder(value_1); callsInPlaceEffectBuilder(block) }) contract({ <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsEffectBuilder(value_1)<!>; <!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlaceEffectBuilder(block)<!> })
return block() return block()
} }
@@ -19,12 +19,12 @@ inline fun case_1(block: () -> Unit) {
// TESTCASE NUMBER: 2 // TESTCASE NUMBER: 2
inline fun case_2(block: () -> Unit) { inline fun case_2(block: () -> Unit) {
contract({ }) <!ERROR_IN_CONTRACT_DESCRIPTION!>contract({ })<!>
return block() return block()
} }
// TESTCASE NUMBER: 3 // TESTCASE NUMBER: 3
inline fun case_3(block: () -> Unit) { inline fun case_3(block: () -> Unit) {
contract(builder = { }) <!ERROR_IN_CONTRACT_DESCRIPTION!>contract(builder = { })<!>
return block() return block()
} }
@@ -15,14 +15,15 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.caches.firCachesFactory import org.jetbrains.kotlin.fir.caches.firCachesFactory
import org.jetbrains.kotlin.fir.caches.getValue import org.jetbrains.kotlin.fir.caches.getValue
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.builder.buildAnonymousFunction
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
import org.jetbrains.kotlin.fir.expressions.builder.buildAnonymousFunctionExpression import org.jetbrains.kotlin.fir.expressions.builder.buildAnonymousFunctionExpression
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall import org.jetbrains.kotlin.fir.expressions.builder.buildFunctionCall
import org.jetbrains.kotlin.fir.expressions.builder.buildLambdaArgumentExpression
import org.jetbrains.kotlin.fir.extensions.FirExtensionApiInternals import org.jetbrains.kotlin.fir.extensions.FirExtensionApiInternals
import org.jetbrains.kotlin.fir.extensions.FirExtensionSessionComponent import org.jetbrains.kotlin.fir.extensions.FirExtensionSessionComponent
import org.jetbrains.kotlin.fir.extensions.FirFunctionCallRefinementExtension import org.jetbrains.kotlin.fir.extensions.FirFunctionCallRefinementExtension
@@ -152,59 +153,58 @@ class DataFrameLikeCallsRefinementExtension(session: FirSession) : FirFunctionCa
refinedType.callShapeData = CallShapeData.RefinedType(listOf(scopeSymbol)) refinedType.callShapeData = CallShapeData.RefinedType(listOf(scopeSymbol))
val argument = buildLambdaArgumentExpression { val argument = buildAnonymousFunctionExpression {
expression = buildAnonymousFunctionExpression { val fSymbol = FirAnonymousFunctionSymbol()
val fSymbol = FirAnonymousFunctionSymbol() isTrailingLambda = true
anonymousFunction = buildAnonymousFunction { anonymousFunction = buildAnonymousFunction {
resolvePhase = FirResolvePhase.BODY_RESOLVE resolvePhase = FirResolvePhase.BODY_RESOLVE
moduleData = session.moduleData
origin = FirDeclarationOrigin.Plugin(KEY)
status = FirResolvedDeclarationStatusImpl(Visibilities.Local, Modality.FINAL, EffectiveVisibility.Local)
deprecationsProvider = EmptyDeprecationsProvider
returnTypeRef = buildResolvedTypeRef {
type = returnType
}
val itName = Name.identifier("it")
val parameterSymbol = FirValueParameterSymbol(itName)
valueParameters += buildValueParameter {
moduleData = session.moduleData moduleData = session.moduleData
origin = FirDeclarationOrigin.Plugin(KEY) origin = FirDeclarationOrigin.Plugin(KEY)
status = FirResolvedDeclarationStatusImpl(Visibilities.Local, Modality.FINAL, EffectiveVisibility.Local)
deprecationsProvider = EmptyDeprecationsProvider
returnTypeRef = buildResolvedTypeRef { returnTypeRef = buildResolvedTypeRef {
type = returnType type = receiverType
} }
val itName = Name.identifier("it") name = itName
val parameterSymbol = FirValueParameterSymbol(itName) this.symbol = parameterSymbol
valueParameters += buildValueParameter { containingFunctionSymbol = fSymbol
moduleData = session.moduleData isCrossinline = false
origin = FirDeclarationOrigin.Plugin(KEY) isNoinline = false
returnTypeRef = buildResolvedTypeRef { isVararg = false
type = receiverType }.also { parameterSymbol.bind(it) }
} body = buildBlock {
name = itName this.coneTypeOrNull = returnType
this.symbol = parameterSymbol
containingFunctionSymbol = fSymbol
isCrossinline = false
isNoinline = false
isVararg = false
}.also { parameterSymbol.bind(it) }
body = buildBlock {
this.coneTypeOrNull = returnType
// Schema is required for static extensions resolve and holds information for subsequent call modifications // Schema is required for static extensions resolve and holds information for subsequent call modifications
statements += schemaClass statements += schemaClass
// Scope (provides extensions API) // Scope (provides extensions API)
statements += scopeClass statements += scopeClass
// Return type - dataframe schema // Return type - dataframe schema
statements += refinedType statements += refinedType
} }
this.symbol = fSymbol this.symbol = fSymbol
isLambda = true isLambda = true
hasExplicitParameterList = false hasExplicitParameterList = false
typeRef = buildResolvedTypeRef { typeRef = buildResolvedTypeRef {
type = ConeClassLikeTypeImpl( type = ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(ClassId(FqName("kotlin"), Name.identifier("Function1"))), ConeClassLikeLookupTagImpl(ClassId(FqName("kotlin"), Name.identifier("Function1"))),
typeArguments = arrayOf(receiverType, returnType), typeArguments = arrayOf(receiverType, returnType),
isNullable = false isNullable = false
) )
} }
invocationKind = EventOccurrencesRange.EXACTLY_ONCE invocationKind = EventOccurrencesRange.EXACTLY_ONCE
inlineStatus = InlineStatus.Inline inlineStatus = InlineStatus.Inline
}.also { fSymbol.bind(it) } }.also { fSymbol.bind(it) }
}
} }
val newCall = buildFunctionCall { val newCall = buildFunctionCall {