[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:
committed by
Space Team
parent
1a5fa8d3f6
commit
03fc0fd381
+12
@@ -658,6 +658,18 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
|
||||
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
|
||||
@TestMetadata("memberFunctionCallWithTypeArgument.kt")
|
||||
public void testMemberFunctionCallWithTypeArgument() {
|
||||
|
||||
+3
-1
@@ -1350,8 +1350,10 @@ internal class KtFirCallResolver(
|
||||
expression.realPsi as? KtExpression
|
||||
is FirSmartCastExpression ->
|
||||
originalExpression.realPsi as? KtExpression
|
||||
is FirNamedArgumentExpression, is FirSpreadArgumentExpression, is FirLambdaArgumentExpression ->
|
||||
is FirNamedArgumentExpression, is FirSpreadArgumentExpression ->
|
||||
realPsi.safeAs<KtValueArgument>()?.getArgumentExpression()
|
||||
is FirAnonymousFunctionExpression ->
|
||||
realPsi?.parent as? KtLabeledExpression ?: realPsi as? KtExpression
|
||||
else -> realPsi as? KtExpression
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -235,7 +235,7 @@ internal class KtFirExpressionTypeProvider(
|
||||
argumentsToParameters.entries.firstOrNull { (arg, _) ->
|
||||
when (arg) {
|
||||
// TODO: better to utilize. See `createArgumentMapping` in [KtFirCallResolver]
|
||||
is FirLambdaArgumentExpression, is FirNamedArgumentExpression, is FirSpreadArgumentExpression ->
|
||||
is FirNamedArgumentExpression, is FirSpreadArgumentExpression ->
|
||||
arg.psi == argumentExpression.parent
|
||||
else ->
|
||||
arg.psi == argumentExpression
|
||||
|
||||
+1
@@ -41,6 +41,7 @@ import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
|
||||
+2
-1
@@ -59,6 +59,7 @@ import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -1417,7 +1418,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
val actualType: KtType
|
||||
}
|
||||
|
||||
interface ManyLambdaExpressionArguments : KtFirDiagnostic<KtValueArgument> {
|
||||
interface ManyLambdaExpressionArguments : KtFirDiagnostic<KtLambdaExpression> {
|
||||
override val diagnosticClass get() = ManyLambdaExpressionArguments::class
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -60,6 +60,7 @@ import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -1702,7 +1703,7 @@ internal class ResultTypeMismatchImpl(
|
||||
internal class ManyLambdaExpressionArgumentsImpl(
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtValueArgument>(firDiagnostic, token), KtFirDiagnostic.ManyLambdaExpressionArguments
|
||||
) : KtAbstractFirDiagnostic<KtLambdaExpression>(firDiagnostic, token), KtFirDiagnostic.ManyLambdaExpressionArguments
|
||||
|
||||
internal class NewInferenceNoInformationForParameterImpl(
|
||||
override val name: String,
|
||||
|
||||
+12
@@ -658,6 +658,18 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab
|
||||
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
|
||||
@TestMetadata("memberFunctionCallWithTypeArgument.kt")
|
||||
public void testMemberFunctionCallWithTypeArgument() {
|
||||
|
||||
+12
@@ -658,6 +658,18 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext
|
||||
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
|
||||
@TestMetadata("memberFunctionCallWithTypeArgument.kt")
|
||||
public void testMemberFunctionCallWithTypeArgument() {
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
fun foo(l1: (Int) -> Unit) {
|
||||
}
|
||||
|
||||
fun test() {
|
||||
<expr>foo label@ {}</expr>
|
||||
}
|
||||
+28
@@ -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)
|
||||
}
|
||||
analysis/analysis-api/testData/components/callResolver/resolveCall/labeledLambdaInsideParentheses.kt
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
fun foo() {
|
||||
<expr>bar(2, l@{ it })</expr>
|
||||
}
|
||||
|
||||
fun bar(a: Int, b: (Int) -> Int) {
|
||||
b(a)
|
||||
}
|
||||
+40
@@ -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)
|
||||
}
|
||||
+1
-1
@@ -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)] 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>
|
||||
@@ -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)] 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>
|
||||
+1
-1
@@ -19,7 +19,7 @@ FILE: [ResolvedTo(IMPORTS)] callInsideLambdaInsideSuperCallFromSecondaryConstruc
|
||||
}
|
||||
|
||||
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|)
|
||||
}
|
||||
)
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ FILE: [ResolvedTo(IMPORTS)] callInsideLambdaInsideSuperCallFromSingleSecondaryCo
|
||||
}
|
||||
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| {
|
||||
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|)
|
||||
}
|
||||
)
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
|
||||
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| {
|
||||
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall2.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
|
||||
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| {
|
||||
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall3.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
|
||||
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| {
|
||||
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall4.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class G : R|A| {
|
||||
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| {
|
||||
^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| {
|
||||
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| {
|
||||
^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCall5.kt
|
||||
}
|
||||
|
||||
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| {
|
||||
^foo Q|C|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] qualifiedCallInsideSuperCallScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] object C : R|A| {
|
||||
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| {
|
||||
^foo Q|B|.R|/A.prop|.R|kotlin/String.toString|()
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -3,7 +3,7 @@ FIR element: FirAnonymousFunctionExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ FIR element: FirAnonymousFunctionExpressionImpl
|
||||
FIR source kind: KtRealSourceElementKind
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
+14
-14
@@ -8,7 +8,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -268,7 +268,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteral.kt
|
||||
}
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
|
||||
Vendored
+15
-14
@@ -13,7 +13,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -247,7 +247,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -299,7 +299,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -325,7 +325,7 @@ FILE: [ResolvedTo(IMPORTS)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -351,7 +351,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteralScript.kts
|
||||
|
||||
public final [ResolvedTo(BODY_RESOLVE)] class TopLevelClass : R|one/ClassWithParameter| {
|
||||
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| {
|
||||
}
|
||||
|
||||
@@ -360,3 +360,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] localFunctionInsideFunctionLiteralScript.kts
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+9
-9
@@ -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)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION)
|
||||
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
|
||||
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)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION)
|
||||
public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
|
||||
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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(TYPES)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION)
|
||||
public final [ResolvedTo(TYPES)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
|
||||
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(STATUS)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION)
|
||||
public final [ResolvedTo(STATUS)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
|
||||
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(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>
|
||||
|
||||
|
||||
@@ -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(CONTRACTS)] val $$result: <implicit> = foo#(<L> = LAZY_EXPRESSION)
|
||||
public final [ResolvedTo(CONTRACTS)] val $$result: <implicit> = foo#(LAZY_EXPRESSION)
|
||||
public [ResolvedTo(CONTRACTS)] get(): <implicit>
|
||||
|
||||
|
||||
|
||||
+10
-9
@@ -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)] 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>
|
||||
|
||||
|
||||
@@ -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)] 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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -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(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>
|
||||
|
||||
|
||||
@@ -366,3 +366,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] resultBodyAnnotation.kts
|
||||
}
|
||||
)
|
||||
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Unit|
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1,3 +1,3 @@
|
||||
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<!> }<!>
|
||||
|
||||
+1
-1
@@ -630,7 +630,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
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> {
|
||||
parameter<String>("name")
|
||||
|
||||
+2
-1
@@ -96,6 +96,7 @@ import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtLabelReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtLambdaExpression
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
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 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 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 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)
|
||||
|
||||
-1
@@ -488,7 +488,6 @@ object FirInlineDeclarationChecker : FirFunctionChecker(MppCheckerKind.Common) {
|
||||
private fun isInlinableDefaultValue(expression: FirExpression): Boolean =
|
||||
expression is FirCallableReferenceAccess ||
|
||||
expression is FirFunctionCall ||
|
||||
expression is FirLambdaArgumentExpression ||
|
||||
expression is FirAnonymousFunctionExpression ||
|
||||
(expression is FirLiteralExpression<*> && expression.value == null) //this will be reported separately
|
||||
|
||||
|
||||
+1
-2
@@ -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.diagnostics.DiagnosticKind
|
||||
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.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
@@ -32,7 +31,7 @@ object FirRecursiveProblemChecker : FirBasicExpressionChecker(MppCheckerKind.Com
|
||||
|
||||
fun checkConeType(coneType: ConeKotlinType?) {
|
||||
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)
|
||||
} else if (coneType is ConeClassLikeType) {
|
||||
for (typeArgument in coneType.typeArguments) {
|
||||
|
||||
+1
-2
@@ -44,8 +44,7 @@ object FirReturnSyntaxAndLabelChecker : FirReturnExpressionChecker(MppCheckerKin
|
||||
}
|
||||
if (functionCall is FirFunctionCall &&
|
||||
functionCall.arguments.any {
|
||||
it is FirLambdaArgumentExpression &&
|
||||
(it.expression as? FirAnonymousFunctionExpression)?.anonymousFunction?.symbol == targetSymbol
|
||||
it is FirAnonymousFunctionExpression && it.anonymousFunction.symbol == targetSymbol
|
||||
}
|
||||
) {
|
||||
reporter.reportOn(source, FirErrors.RETURN_FOR_BUILT_IN_SUSPEND, context)
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ object FirSuspendCallChecker : FirQualifiedAccessExpressionChecker(MppCheckerKin
|
||||
val reference = this.calleeReference
|
||||
if (reference is FirResolvedCallableReference) 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
|
||||
val callExpressionSource =
|
||||
if (explicitReceiver == null) source
|
||||
|
||||
+2
-2
@@ -236,8 +236,8 @@ object FirUninitializedEnumChecker : FirQualifiedAccessExpressionChecker(MppChec
|
||||
val delegateCall = property.delegate as FirFunctionCall
|
||||
val calleeSymbol = delegateCall.calleeReference.toResolvedNamedFunctionSymbol() ?: return null
|
||||
if (calleeSymbol.callableId.asSingleFqName().asString() != "kotlin.lazy") return null
|
||||
val lazyCallArgument = delegateCall.argumentList.arguments.singleOrNull() as? FirLambdaArgumentExpression ?: return null
|
||||
return (lazyCallArgument.expression as? FirAnonymousFunctionExpression)?.anonymousFunction
|
||||
val lazyCallArgument = delegateCall.argumentList.arguments.singleOrNull() as? FirAnonymousFunctionExpression ?: return null
|
||||
return lazyCallArgument.anonymousFunction
|
||||
}
|
||||
|
||||
private fun FirDeclaration.isEnumEntryInitializer(): Boolean {
|
||||
|
||||
-4
@@ -217,10 +217,6 @@ class ExpressionCheckersDiagnosticComponent(
|
||||
checkers.allBasicExpressionCheckers.check(namedArgumentExpression, data)
|
||||
}
|
||||
|
||||
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: CheckerContext) {
|
||||
checkers.allBasicExpressionCheckers.check(lambdaArgumentExpression, data)
|
||||
}
|
||||
|
||||
override fun visitSmartCastExpression(smartCastExpression: FirSmartCastExpression, data: CheckerContext) {
|
||||
checkers.allBasicExpressionCheckers.check(smartCastExpression, data)
|
||||
}
|
||||
|
||||
@@ -1573,11 +1573,6 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
generate(expression.expression)
|
||||
|
||||
}
|
||||
is FirLambdaArgumentExpression -> {
|
||||
keyword("lambda")
|
||||
+" = "
|
||||
generate(expression.expression)
|
||||
}
|
||||
is FirTypeOperatorCall -> generate(expression)
|
||||
is FirEqualityOperatorCall -> generate(expression)
|
||||
is FirBinaryLogicExpression -> generate(expression)
|
||||
|
||||
@@ -88,9 +88,6 @@ class Fir2IrImplicitCastInserter(
|
||||
// TODO: element-wise cast?
|
||||
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?
|
||||
override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression, data: IrElement): IrElement = data
|
||||
|
||||
|
||||
+3
-3
@@ -1513,9 +1513,9 @@ class LightTreeRawFirExpressionBuilder(
|
||||
VALUE_ARGUMENT -> container += convertValueArgument(node)
|
||||
LAMBDA_EXPRESSION,
|
||||
LABELED_EXPRESSION,
|
||||
ANNOTATED_EXPRESSION -> container += buildLambdaArgumentExpression {
|
||||
source = valueArguments.toFirSourceElement()
|
||||
expression = getAsFirExpression(node)
|
||||
ANNOTATED_EXPRESSION,
|
||||
-> container += getAsFirExpression<FirAnonymousFunctionExpression>(node).apply {
|
||||
replaceIsTrailingLambda(newIsTrailingLambda = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -904,9 +904,8 @@ open class PsiRawFirBuilder(
|
||||
val argumentExpression =
|
||||
buildOrLazyExpression((argument as? PsiElement)?.toFirSourceElement()) { argument.toFirExpression() }
|
||||
arguments += when (argument) {
|
||||
is KtLambdaArgument -> buildLambdaArgumentExpression {
|
||||
source = argument.toFirSourceElement()
|
||||
expression = argumentExpression
|
||||
is KtLambdaArgument -> argumentExpression.apply {
|
||||
(this as? FirAnonymousFunctionExpression)?.replaceIsTrailingLambda(true)
|
||||
}
|
||||
else -> argumentExpression
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ FILE: scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
|
||||
@DestrAnno(LAZY_EXPRESSION) lval <destruct>: <implicit> = IntegerLiteral(0).to#(IntegerLiteral(1))
|
||||
@LeftAnno(LAZY_EXPRESSION) lval a: <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))
|
||||
@SecondLeftAnno(LAZY_EXPRESSION) lval c: <implicit> = LAZY_EXPRESSION
|
||||
@SecondRightAnno(LAZY_EXPRESSION) lval d: <implicit> = LAZY_EXPRESSION
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ fun BodyResolveComponents.mapArguments(
|
||||
val excessLambdaArguments: MutableList<FirExpression> = mutableListOf()
|
||||
var externalArgument: FirExpression? = null
|
||||
for (argument in arguments) {
|
||||
if (argument is FirLambdaArgumentExpression) {
|
||||
if (argument is FirAnonymousFunctionExpression && argument.isTrailingLambda) {
|
||||
if (externalArgument == null) {
|
||||
externalArgument = argument
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -298,7 +298,7 @@ class FirCallCompleter(
|
||||
|
||||
val matchedParameter = candidate.argumentMapping?.firstNotNullOfOrNull { (currentArgument, currentValueParameter) ->
|
||||
val currentLambdaArgument =
|
||||
((currentArgument as? FirLambdaArgumentExpression)?.expression as? FirAnonymousFunctionExpression)?.anonymousFunction
|
||||
(currentArgument as? FirAnonymousFunctionExpression)?.anonymousFunction
|
||||
if (currentLambdaArgument === lambdaArgument) {
|
||||
currentValueParameter
|
||||
} else {
|
||||
|
||||
+5
-6
@@ -170,10 +170,10 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
|
||||
owner.body.replaceFirstStatement<FirContractCallBlock> { FirContractCallBlock(resolvedContractCall) }
|
||||
}
|
||||
|
||||
val argument = resolvedContractCall.arguments.singleOrNull() as? FirLambdaArgumentExpression
|
||||
val argument = resolvedContractCall.arguments.singleOrNull() as? FirAnonymousFunctionExpression
|
||||
?: return transformOwnerOfErrorContract(owner)
|
||||
|
||||
val lambdaBody = (argument.expression as FirAnonymousFunctionExpression).anonymousFunction.body
|
||||
val lambdaBody = argument.anonymousFunction.body
|
||||
?: return transformOwnerOfErrorContract(owner)
|
||||
|
||||
val resolvedContractDescription = buildResolvedContractDescription {
|
||||
@@ -227,10 +227,9 @@ abstract class FirAbstractContractResolveTransformerDispatcher(
|
||||
}
|
||||
}
|
||||
|
||||
val lambdaArgument = buildLambdaArgumentExpression {
|
||||
expression = buildAnonymousFunctionExpression {
|
||||
anonymousFunction = effectsBlock
|
||||
}
|
||||
val lambdaArgument = buildAnonymousFunctionExpression {
|
||||
anonymousFunction = effectsBlock
|
||||
isTrailingLambda = true
|
||||
}
|
||||
|
||||
val contractCall = buildFunctionCall {
|
||||
|
||||
+3
@@ -24,6 +24,7 @@ abstract class FirAnonymousFunctionExpression : FirExpression() {
|
||||
abstract override val coneTypeOrNull: ConeKotlinType?
|
||||
abstract override val annotations: List<FirAnnotation>
|
||||
abstract val anonymousFunction: FirAnonymousFunction
|
||||
abstract val isTrailingLambda: Boolean
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitAnonymousFunctionExpression(this, data)
|
||||
@@ -36,6 +37,8 @@ abstract class FirAnonymousFunctionExpression : FirExpression() {
|
||||
|
||||
abstract override fun replaceAnnotations(newAnnotations: List<FirAnnotation>)
|
||||
|
||||
abstract fun replaceIsTrailingLambda(newIsTrailingLambda: Boolean)
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression
|
||||
|
||||
abstract fun <D> transformAnonymousFunction(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpression
|
||||
|
||||
-40
@@ -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
|
||||
}
|
||||
-53
@@ -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()
|
||||
}
|
||||
-57
@@ -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 =
|
||||
visitWrappedExpression(wrappedArgumentExpression, data)
|
||||
|
||||
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): R =
|
||||
visitWrappedArgumentExpression(lambdaArgumentExpression, data)
|
||||
|
||||
override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R =
|
||||
visitWrappedArgumentExpression(spreadArgumentExpression, data)
|
||||
|
||||
|
||||
@@ -120,8 +120,6 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
||||
|
||||
override fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression) = visitWrappedExpression(wrappedArgumentExpression)
|
||||
|
||||
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) = visitWrappedArgumentExpression(lambdaArgumentExpression)
|
||||
|
||||
override fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression) = visitWrappedArgumentExpression(spreadArgumentExpression)
|
||||
|
||||
override fun visitNamedArgumentExpression(namedArgumentExpression: FirNamedArgumentExpression) = visitWrappedArgumentExpression(namedArgumentExpression)
|
||||
|
||||
@@ -923,14 +923,6 @@ abstract class FirTransformer<in D> : FirVisitor<FirElement, D>() {
|
||||
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 {
|
||||
return transformElement(spreadArgumentExpression, data)
|
||||
}
|
||||
|
||||
@@ -359,9 +359,6 @@ abstract class FirVisitor<out R, in D> {
|
||||
open fun visitWrappedArgumentExpression(wrappedArgumentExpression: FirWrappedArgumentExpression, data: D): R =
|
||||
visitElement(wrappedArgumentExpression, data)
|
||||
|
||||
open fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): R =
|
||||
visitElement(lambdaArgumentExpression, data)
|
||||
|
||||
open fun visitSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): R =
|
||||
visitElement(spreadArgumentExpression, data)
|
||||
|
||||
|
||||
@@ -923,14 +923,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
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?) {
|
||||
visitSpreadArgumentExpression(spreadArgumentExpression)
|
||||
}
|
||||
|
||||
+3
-1
@@ -21,11 +21,13 @@ import kotlin.contracts.contract
|
||||
class FirAnonymousFunctionExpressionBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
|
||||
override var source: KtSourceElement? = null
|
||||
lateinit var anonymousFunction: FirAnonymousFunction
|
||||
var isTrailingLambda: Boolean = false
|
||||
|
||||
override fun build(): FirAnonymousFunctionExpression {
|
||||
return FirAnonymousFunctionExpressionImpl(
|
||||
source,
|
||||
anonymousFunction
|
||||
anonymousFunction,
|
||||
isTrailingLambda,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+7
-1
@@ -19,8 +19,10 @@ import org.jetbrains.kotlin.utils.addToStdlib.shouldNotBeCalled
|
||||
@OptIn(UnresolvedExpressionTypeAccess::class)
|
||||
internal class FirAnonymousFunctionExpressionImpl(
|
||||
override val source: KtSourceElement?,
|
||||
override var anonymousFunction: FirAnonymousFunction
|
||||
override var anonymousFunction: FirAnonymousFunction,
|
||||
override var isTrailingLambda: Boolean,
|
||||
) : FirAnonymousFunctionExpression() {
|
||||
|
||||
@UnresolvedExpressionTypeAccess
|
||||
override val coneTypeOrNull: ConeKotlinType?
|
||||
get() = anonymousFunction.typeRef.coneTypeOrNull
|
||||
@@ -40,6 +42,10 @@ internal class FirAnonymousFunctionExpressionImpl(
|
||||
anonymousFunction.replaceAnnotations(newAnnotations)
|
||||
}
|
||||
|
||||
override fun replaceIsTrailingLambda(newIsTrailingLambda: Boolean) {
|
||||
isTrailingLambda = newIsTrailingLambda
|
||||
}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousFunctionExpressionImpl {
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -435,6 +435,7 @@ class FirRenderer(
|
||||
}
|
||||
|
||||
override fun visitAnonymousFunctionExpression(anonymousFunctionExpression: FirAnonymousFunctionExpression) {
|
||||
if (anonymousFunctionExpression.isTrailingLambda) print("<L> = ")
|
||||
visitAnonymousFunction(anonymousFunctionExpression.anonymousFunction)
|
||||
}
|
||||
|
||||
@@ -732,11 +733,6 @@ class FirRenderer(
|
||||
spreadArgumentExpression.expression.accept(this)
|
||||
}
|
||||
|
||||
override fun visitLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression) {
|
||||
print("<L> = ")
|
||||
lambdaArgumentExpression.expression.accept(this)
|
||||
}
|
||||
|
||||
override fun visitVarargArgumentsExpression(varargArgumentsExpression: FirVarargArgumentsExpression) {
|
||||
print("vararg(")
|
||||
renderSeparated(varargArgumentsExpression.arguments, visitor)
|
||||
@@ -744,8 +740,17 @@ class FirRenderer(
|
||||
}
|
||||
|
||||
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(")
|
||||
samConversionExpression.expression.accept(this)
|
||||
expression.accept(this)
|
||||
print(")")
|
||||
}
|
||||
|
||||
|
||||
@@ -70,11 +70,6 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
|
||||
return transformJump(breakExpression, data)
|
||||
}
|
||||
|
||||
|
||||
override fun transformLambdaArgumentExpression(lambdaArgumentExpression: FirLambdaArgumentExpression, data: D): FirStatement {
|
||||
return transformWrappedArgumentExpression(lambdaArgumentExpression, data)
|
||||
}
|
||||
|
||||
override fun transformSpreadArgumentExpression(spreadArgumentExpression: FirSpreadArgumentExpression, data: D): FirStatement {
|
||||
return transformWrappedArgumentExpression(spreadArgumentExpression, data)
|
||||
}
|
||||
|
||||
-1
@@ -143,7 +143,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val getClassCall by element(Expression, expression, call)
|
||||
val wrappedExpression by element(Expression, expression)
|
||||
val wrappedArgumentExpression by element(Expression, wrappedExpression)
|
||||
val lambdaArgumentExpression by element(Expression, wrappedArgumentExpression)
|
||||
val spreadArgumentExpression by element(Expression, wrappedArgumentExpression)
|
||||
val namedArgumentExpression by element(Expression, wrappedArgumentExpression)
|
||||
val varargArgumentsExpression by element(Expression, expression)
|
||||
|
||||
-10
@@ -316,16 +316,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
|
||||
}
|
||||
}
|
||||
|
||||
impl(lambdaArgumentExpression) {
|
||||
default("isSpread") {
|
||||
value = "false"
|
||||
withGetter = true
|
||||
}
|
||||
default("coneTypeOrNull") {
|
||||
delegate = "expression"
|
||||
}
|
||||
}
|
||||
|
||||
impl(spreadArgumentExpression) {
|
||||
default("isSpread") {
|
||||
value = "true"
|
||||
|
||||
+1
@@ -331,6 +331,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
anonymousFunctionExpression.configure {
|
||||
+field(anonymousFunction).withTransform()
|
||||
+booleanField("isTrailingLambda", withReplace = true)
|
||||
}
|
||||
|
||||
typeParameter.configure {
|
||||
|
||||
@@ -25,4 +25,19 @@ enum class JvmTarget(val description: String) {
|
||||
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)
|
||||
public final val bytecodeVersion: kotlin.String
|
||||
public final val bytecodeVersion2: kotlin.String
|
||||
public final val description: 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
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import kotlin.contracts.*
|
||||
|
||||
// TESTCASE NUMBER: 1
|
||||
inline fun case_1(block: () -> Unit) {
|
||||
contract(builder = { callsInPlaceEffectBuilder(block) })
|
||||
contract(builder = { <!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlaceEffectBuilder(block)<!> })
|
||||
return block()
|
||||
}
|
||||
|
||||
@@ -41,6 +41,6 @@ inline fun case_2(block: () -> Unit) {
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
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()
|
||||
}
|
||||
|
||||
+2
-2
@@ -19,12 +19,12 @@ inline fun case_1(block: () -> Unit) {
|
||||
|
||||
// TESTCASE NUMBER: 2
|
||||
inline fun case_2(block: () -> Unit) {
|
||||
contract({ })
|
||||
<!ERROR_IN_CONTRACT_DESCRIPTION!>contract({ })<!>
|
||||
return block()
|
||||
}
|
||||
|
||||
// TESTCASE NUMBER: 3
|
||||
inline fun case_3(block: () -> Unit) {
|
||||
contract(builder = { })
|
||||
<!ERROR_IN_CONTRACT_DESCRIPTION!>contract(builder = { })<!>
|
||||
return block()
|
||||
}
|
||||
|
||||
+48
-48
@@ -15,14 +15,15 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||
import org.jetbrains.kotlin.fir.caches.getValue
|
||||
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.expressions.FirFunctionCall
|
||||
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnonymousFunctionExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
|
||||
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.FirExtensionSessionComponent
|
||||
import org.jetbrains.kotlin.fir.extensions.FirFunctionCallRefinementExtension
|
||||
@@ -152,59 +153,58 @@ class DataFrameLikeCallsRefinementExtension(session: FirSession) : FirFunctionCa
|
||||
|
||||
refinedType.callShapeData = CallShapeData.RefinedType(listOf(scopeSymbol))
|
||||
|
||||
val argument = buildLambdaArgumentExpression {
|
||||
expression = buildAnonymousFunctionExpression {
|
||||
val fSymbol = FirAnonymousFunctionSymbol()
|
||||
anonymousFunction = buildAnonymousFunction {
|
||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||
val argument = buildAnonymousFunctionExpression {
|
||||
val fSymbol = FirAnonymousFunctionSymbol()
|
||||
isTrailingLambda = true
|
||||
anonymousFunction = buildAnonymousFunction {
|
||||
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
|
||||
origin = FirDeclarationOrigin.Plugin(KEY)
|
||||
status = FirResolvedDeclarationStatusImpl(Visibilities.Local, Modality.FINAL, EffectiveVisibility.Local)
|
||||
deprecationsProvider = EmptyDeprecationsProvider
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
type = returnType
|
||||
type = receiverType
|
||||
}
|
||||
val itName = Name.identifier("it")
|
||||
val parameterSymbol = FirValueParameterSymbol(itName)
|
||||
valueParameters += buildValueParameter {
|
||||
moduleData = session.moduleData
|
||||
origin = FirDeclarationOrigin.Plugin(KEY)
|
||||
returnTypeRef = buildResolvedTypeRef {
|
||||
type = receiverType
|
||||
}
|
||||
name = itName
|
||||
this.symbol = parameterSymbol
|
||||
containingFunctionSymbol = fSymbol
|
||||
isCrossinline = false
|
||||
isNoinline = false
|
||||
isVararg = false
|
||||
}.also { parameterSymbol.bind(it) }
|
||||
body = buildBlock {
|
||||
this.coneTypeOrNull = returnType
|
||||
name = itName
|
||||
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
|
||||
statements += schemaClass
|
||||
// Schema is required for static extensions resolve and holds information for subsequent call modifications
|
||||
statements += schemaClass
|
||||
|
||||
// Scope (provides extensions API)
|
||||
statements += scopeClass
|
||||
// Scope (provides extensions API)
|
||||
statements += scopeClass
|
||||
|
||||
// Return type - dataframe schema
|
||||
statements += refinedType
|
||||
}
|
||||
this.symbol = fSymbol
|
||||
isLambda = true
|
||||
hasExplicitParameterList = false
|
||||
typeRef = buildResolvedTypeRef {
|
||||
type = ConeClassLikeTypeImpl(
|
||||
ConeClassLikeLookupTagImpl(ClassId(FqName("kotlin"), Name.identifier("Function1"))),
|
||||
typeArguments = arrayOf(receiverType, returnType),
|
||||
isNullable = false
|
||||
)
|
||||
}
|
||||
invocationKind = EventOccurrencesRange.EXACTLY_ONCE
|
||||
inlineStatus = InlineStatus.Inline
|
||||
}.also { fSymbol.bind(it) }
|
||||
}
|
||||
// Return type - dataframe schema
|
||||
statements += refinedType
|
||||
}
|
||||
this.symbol = fSymbol
|
||||
isLambda = true
|
||||
hasExplicitParameterList = false
|
||||
typeRef = buildResolvedTypeRef {
|
||||
type = ConeClassLikeTypeImpl(
|
||||
ConeClassLikeLookupTagImpl(ClassId(FqName("kotlin"), Name.identifier("Function1"))),
|
||||
typeArguments = arrayOf(receiverType, returnType),
|
||||
isNullable = false
|
||||
)
|
||||
}
|
||||
invocationKind = EventOccurrencesRange.EXACTLY_ONCE
|
||||
inlineStatus = InlineStatus.Inline
|
||||
}.also { fSymbol.bind(it) }
|
||||
}
|
||||
|
||||
val newCall = buildFunctionCall {
|
||||
|
||||
Reference in New Issue
Block a user