diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt index 98a7a0e3ceb..dca017d3c51 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirConstructor +import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember @@ -17,7 +18,9 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirConstructorImpl.Companion.N import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol +import org.jetbrains.kotlin.fir.transformInplace import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.visitors.FirTransformer class FirJavaConstructor( session: FirSession, @@ -51,4 +54,9 @@ class FirJavaConstructor( get() = null override val valueParameters = mutableListOf() + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction { + valueParameters.transformInplace(transformer, data) + return this + } } \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index c3618e4854e..2e8753b710e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -276,7 +276,7 @@ open class FirBodyResolveTransformer( it.type, it, anonymousFunction ) } - var af = super.transformAnonymousFunction(anonymousFunction, data).single as FirAnonymousFunction + var af = anonymousFunction val valueParameters = if (resolvedLambdaAtom == null) af.valueParameters else { @@ -314,14 +314,20 @@ open class FirBodyResolveTransformer( } } + val returnTypeRefFromResolvedAtom = resolvedLambdaAtom?.returnType?.let { af.returnTypeRef.resolvedTypeFromPrototype(it) } af = af.copy( receiverTypeRef = af.receiverTypeRef?.takeIf { it !is FirImplicitTypeRef } ?: resolvedLambdaAtom?.receiver?.let { af.receiverTypeRef?.resolvedTypeFromPrototype(it) }, valueParameters = valueParameters, returnTypeRef = (af.returnTypeRef as? FirResolvedTypeRef) - ?: resolvedLambdaAtom?.returnType?.let { af.returnTypeRef.resolvedTypeFromPrototype(it) } - ?: af.body?.resultType?.takeIf { af.returnTypeRef is FirImplicitTypeRef } - ?: FirErrorTypeRefImpl(af.psi, "No result type for lambda") + ?: returnTypeRefFromResolvedAtom + ?: af.returnTypeRef + ) + af = af.transformValueParameters(ImplicitToErrorTypeTransformer, null) as FirAnonymousFunction + val bodyExpectedType = returnTypeRefFromResolvedAtom ?: data + af = super.transformAnonymousFunction(af, bodyExpectedType).single as FirAnonymousFunction + af = af.copy( + returnTypeRef = af.body?.resultType ?: FirErrorTypeRefImpl(af.psi, "No result type for lambda") ) af.replaceTypeRef(af.constructFunctionalTypeRef(session)) af.compose() @@ -332,6 +338,22 @@ open class FirBodyResolveTransformer( } } + private object ImplicitToErrorTypeTransformer : FirTransformer() { + override fun transformElement(element: E, data: Nothing?): CompositeTransformResult { + return element.compose() + } + + override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult { + if (valueParameter.returnTypeRef is FirImplicitTypeRef) { + valueParameter.transformReturnTypeRef( + StoreType, + valueParameter.returnTypeRef.resolvedTypeFromPrototype(ConeKotlinErrorType("No type for parameter")) + ) + } + return valueParameter.compose() + } + } + private fun transformAnonymousFunctionWithLambdaResolution( anonymousFunction: FirAnonymousFunction, lambdaResolution: LambdaResolution ): FirAnonymousFunction { diff --git a/compiler/fir/resolve/testData/resolve/cast.txt b/compiler/fir/resolve/testData/resolve/cast.txt index 887d1e62d3d..91ead3cc831 100644 --- a/compiler/fir/resolve/testData/resolve/cast.txt +++ b/compiler/fir/resolve/testData/resolve/cast.txt @@ -13,12 +13,12 @@ FILE: cast.kt } public get(): R|kotlin/Function0| - public final val h: R|kotlin/Function1| = fun R|kotlin/Function1|.(_: R|kotlin/String|): R|kotlin/Function1| { + public final val h: R|kotlin/Function1| = fun (_: R|kotlin/String|): R|kotlin/Boolean| { Boolean(false) } public get(): R|kotlin/Function1| - public final val hError: R|kotlin/Function1| = fun (_: ): R|kotlin/Boolean| { + public final val hError: R|kotlin/Function1| = fun (_: R|class error: No type for parameter|): R|kotlin/Boolean| { Boolean(true) } diff --git a/compiler/fir/resolve/testData/resolve/stdlib/functionX.txt b/compiler/fir/resolve/testData/resolve/stdlib/functionX.txt index 9cc28c32760..46f5700a8d5 100644 --- a/compiler/fir/resolve/testData/resolve/stdlib/functionX.txt +++ b/compiler/fir/resolve/testData/resolve/stdlib/functionX.txt @@ -1,11 +1,11 @@ FILE: functionX.kt - public final val x: R|kotlin/jvm/functions/Function0| = fun R|kotlin/jvm/functions/Function0|.(): R|kotlin/jvm/functions/Function0| { + public final val x: R|kotlin/jvm/functions/Function0| = fun (): R|kotlin/jvm/functions/Function0| { Int(42) } public get(): R|kotlin/jvm/functions/Function0| - public final val y: R|kotlin/Function1| = fun R|kotlin/Function1|.(it: R|kotlin/String|): R|kotlin/Function1| { - # + public final val y: R|kotlin/Function1| = fun (it: R|kotlin/String|): R|kotlin/String| { + R|/it| } public get(): R|kotlin/Function1| diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt index 9d472c277a6..56fe3671a56 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt @@ -33,4 +33,6 @@ abstract class FirAnonymousFunction( typeRef.accept(visitor, data) // Don't call super.acceptChildren (annotations & typeRef are already processed) } + + abstract fun replaceReceiverTypeRef(receiverTypeRef: FirTypeRef) } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFunction.kt index e80b75e3579..2a2b18cdd41 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirFunction.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirTargetElement import org.jetbrains.kotlin.fir.VisitedSupertype import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor // May be should inherit FirTypeParameterContainer @@ -25,4 +26,6 @@ interface FirFunction : @VisitedSupertype FirDeclarationWithBody, FirAnnotationC } super.acceptChildren(visitor, data) } + + fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt index 97d2ce86a44..3549604df8c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt @@ -41,4 +41,13 @@ class FirAnonymousFunctionImpl( override fun transformReturnTypeRef(transformer: FirTransformer, data: D) { returnTypeRef = returnTypeRef.transformSingle(transformer, data) } + + override fun replaceReceiverTypeRef(receiverTypeRef: FirTypeRef) { + this.receiverTypeRef = receiverTypeRef + } + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirAnonymousFunction { + valueParameters.transformInplace(transformer, data) + return this + } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt index 1abb2ec170c..c9a551013f0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.transformInplace import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer +import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.name.Name open class FirConstructorImpl : FirAbstractCallableMember, FirConstructor { @@ -71,6 +72,20 @@ open class FirConstructorImpl : FirAbstractCallableMember, FirCo return this } + override fun acceptChildren(visitor: FirVisitor, data: D) { + annotations.forEach { it.accept(visitor, data) } + valueParameters.forEach { it.accept(visitor, data) } + returnTypeRef.accept(visitor, data) + status.accept(visitor, data) + delegatedConstructor?.accept(visitor, data) + body?.accept(visitor, data) + } + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirConstructorImpl { + valueParameters.transformInplace(transformer, data) + return this + } + companion object { val NAME = Name.special("") } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index 06d7b2c9f33..92691f3e356 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -45,6 +45,10 @@ abstract class FirDefaultPropertyAccessor( override fun transformReturnTypeRef(transformer: FirTransformer, data: D) { returnTypeRef = returnTypeRef.transformSingle(transformer, data) } + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirDefaultPropertyAccessor { + return this + } } class FirDefaultPropertyGetter( diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunction.kt index dbda22d16f8..a9ea0baca54 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunction.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock +import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor class FirErrorFunction( @@ -34,4 +35,8 @@ class FirErrorFunction( override fun accept(visitor: FirVisitor, data: D): R = super.accept(visitor, data) + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction { + return this + } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt index ea209bbf3fd..62fdb76fdd2 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol @@ -79,4 +80,9 @@ open class FirMemberFunctionImpl : FirAbstractCallableMember, return super.transformChildren(transformer, data) } + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction { + valueParameters.transformInplace(transformer, data) + return this + } } \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt index c6d66de2b11..35dbf7e5f6a 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.transformSingle import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -34,4 +35,8 @@ class FirPropertyAccessorImpl( override fun transformReturnTypeRef(transformer: FirTransformer, data: D) { returnTypeRef = returnTypeRef.transformSingle(transformer, data) } + + override fun transformValueParameters(transformer: FirTransformer, data: D): FirFunction { + return this + } } \ No newline at end of file diff --git a/compiler/testData/ir/irText/classes/lambdaInDataClassDefaultParameter.fir.txt b/compiler/testData/ir/irText/classes/lambdaInDataClassDefaultParameter.fir.txt index 07e723766fd..640354b859c 100644 --- a/compiler/testData/ir/irText/classes/lambdaInDataClassDefaultParameter.fir.txt +++ b/compiler/testData/ir/irText/classes/lambdaInDataClassDefaultParameter.fir.txt @@ -4,8 +4,8 @@ FILE fqName: fileName:/lambdaInDataClassDefaultParameter.kt CONSTRUCTOR visibility:public <> (runA:kotlin.Function2<.A, kotlin.String, kotlin.Unit>) returnType:.A [primary] VALUE_PARAMETER name:runA index:0 type:kotlin.Function2<.A, kotlin.String, kotlin.Unit> EXPRESSION_BODY - FUN_EXPR type=kotlin.Function1.A, kotlin.String, kotlin.Unit>, kotlin.Function2<.A, kotlin.String, kotlin.Unit>> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Function2<.A, kotlin.String, kotlin.Unit> + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit BLOCK_BODY diff --git a/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt b/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt index 4c337f28a82..4afe887efde 100644 --- a/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt +++ b/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt @@ -2,11 +2,11 @@ FILE fqName: fileName:/lambdas.kt PROPERTY name:test1 visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Function1 visibility:public [final,static] EXPRESSION_BODY - FUN_EXPR type=kotlin.Function2, kotlin.String, kotlin.Function1> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.String) returnType:kotlin.Function1 + FUN_EXPR type=kotlin.Function1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.String) returnType:kotlin.String VALUE_PARAMETER name:it index:0 type:kotlin.String BLOCK_BODY - ERROR_CALL 'Unresolved reference: #' type=IrErrorType + GET_VAR 'it: kotlin.String declared in .test1.' type=kotlin.String origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.Function1 correspondingProperty: PROPERTY name:test1 visibility:public modality:FINAL [val] BLOCK_BODY @@ -15,8 +15,8 @@ FILE fqName: fileName:/lambdas.kt PROPERTY name:test2 visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:test2 type:kotlin.Function2 visibility:public [final,static] EXPRESSION_BODY - FUN_EXPR type=kotlin.Function1, kotlin.Function2> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Function2 + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:IrErrorType BLOCK_BODY ERROR_CALL 'Unresolved reference: #' type=IrErrorType FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.Function2 diff --git a/compiler/testData/ir/irText/expressions/coercionToUnit.fir.txt b/compiler/testData/ir/irText/expressions/coercionToUnit.fir.txt index e5487f53325..4554a665f4c 100644 --- a/compiler/testData/ir/irText/expressions/coercionToUnit.fir.txt +++ b/compiler/testData/ir/irText/expressions/coercionToUnit.fir.txt @@ -2,10 +2,10 @@ FILE fqName: fileName:/coercionToUnit.kt PROPERTY name:test1 visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Function0 visibility:public [final,static] EXPRESSION_BODY - FUN_EXPR type=kotlin.Function1, kotlin.Function0> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Function0 + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY - CONST Int type=kotlin.Function0 value=42 + CONST Int type=kotlin.Unit value=42 FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.Function0 correspondingProperty: PROPERTY name:test1 visibility:public modality:FINAL [val] BLOCK_BODY diff --git a/compiler/testData/ir/irText/expressions/variableAsFunctionCall.fir.txt b/compiler/testData/ir/irText/expressions/variableAsFunctionCall.fir.txt index de8536b62cb..a00aef9ba84 100644 --- a/compiler/testData/ir/irText/expressions/variableAsFunctionCall.fir.txt +++ b/compiler/testData/ir/irText/expressions/variableAsFunctionCall.fir.txt @@ -3,8 +3,8 @@ FILE fqName: fileName:/variableAsFunctionCall.kt $receiver: VALUE_PARAMETER name: type:kotlin.String BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun k (): kotlin.Function0 declared in ' - FUN_EXPR type=kotlin.Function1, kotlin.Function0> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Function0 + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.String BLOCK_BODY ERROR_CALL 'Unresolved reference: this#' type=kotlin.String FUN name:test1 visibility:public modality:FINAL <> (f:kotlin.Function0) returnType:kotlin.Unit diff --git a/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt b/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt index 1e69d3f9650..5ca90b2c7d0 100644 --- a/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt +++ b/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt @@ -4,8 +4,8 @@ FILE fqName: fileName:/variableAsFunctionCallWithGenerics.kt correspondingProperty: PROPERTY name:gk visibility:public modality:FINAL [val] BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.Function0> declared in ' - FUN_EXPR type=kotlin.Function1>, kotlin.Function0>> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Function0> + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:IrErrorType BLOCK_BODY ERROR_CALL 'Unresolved reference: this#' type=IrErrorType FUN name:testGeneric1 visibility:public modality:FINAL <> (x:kotlin.String) returnType:T of @@ -19,10 +19,10 @@ FILE fqName: fileName:/variableAsFunctionCallWithGenerics.kt correspondingProperty: PROPERTY name:kt26531Val visibility:public modality:FINAL [val] BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun (): kotlin.Function0> declared in ' - FUN_EXPR type=kotlin.Function0>> origin=LAMBDA - FUN name: visibility:local modality:FINAL <> () returnType:kotlin.Function0> + FUN_EXPR type=kotlin.Function0 origin=LAMBDA + FUN name: visibility:local modality:FINAL <> () returnType:IrErrorType BLOCK_BODY - RETURN type=kotlin.Nothing from='local final fun (): kotlin.Function0> declared in .' + RETURN type=kotlin.Nothing from='local final fun (): IrErrorType declared in .' ERROR_CALL 'Unresolved reference: this#' type=IrErrorType FUN name:kt26531 visibility:public modality:FINAL <> () returnType:T of BLOCK_BODY diff --git a/compiler/testData/ir/irText/lambdas/destructuringInLambda.fir.txt b/compiler/testData/ir/irText/lambdas/destructuringInLambda.fir.txt index 536526c1d1c..a34b8e3c857 100644 --- a/compiler/testData/ir/irText/lambdas/destructuringInLambda.fir.txt +++ b/compiler/testData/ir/irText/lambdas/destructuringInLambda.fir.txt @@ -64,16 +64,19 @@ FILE fqName: fileName:/destructuringInLambda.kt PROPERTY name:fn visibility:public modality:FINAL [var] FIELD PROPERTY_BACKING_FIELD name:fn type:kotlin.Function1<.A, kotlin.Int> visibility:public [static] EXPRESSION_BODY - FUN_EXPR type=kotlin.Function2.A, kotlin.Int>, IrErrorType, kotlin.Function1<.A, kotlin.Int>> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (:IrErrorType) returnType:kotlin.Function1<.A, kotlin.Int> - VALUE_PARAMETER name: index:0 type:IrErrorType + FUN_EXPR type=kotlin.Function1<.A, kotlin.Int> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (:.A) returnType:kotlin.Int + VALUE_PARAMETER name: index:0 type:.A BLOCK_BODY - VAR name:_ type:IrErrorType [val] - ERROR_CALL 'Unresolved reference: #' type=IrErrorType - VAR name:y type:IrErrorType [val] - ERROR_CALL 'Unresolved reference: #' type=IrErrorType - ERROR_CALL 'Unresolved reference: #' type=IrErrorType - GET_VAR 'val y: IrErrorType [val] declared in .fn.' type=IrErrorType origin=null + VAR name:_ type:kotlin.Int [val] + CALL 'public final fun component1 (): kotlin.Int declared in .A' type=kotlin.Int origin=null + $this: GET_VAR ': .A declared in .fn.' type=.A origin=null + VAR name:y type:kotlin.Int [val] + CALL 'public final fun component2 (): kotlin.Int declared in .A' type=kotlin.Int origin=null + $this: GET_VAR ': .A declared in .fn.' type=.A origin=null + CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null + $this: CONST Int type=kotlin.Int value=42 + other: GET_VAR 'val y: kotlin.Int [val] declared in .fn.' type=kotlin.Int origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.Function1<.A, kotlin.Int> correspondingProperty: PROPERTY name:fn visibility:public modality:FINAL [var] BLOCK_BODY