diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/LocalFunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/LocalFunctionGenerator.kt index d60e21f035a..3f3c4302427 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/LocalFunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/LocalFunctionGenerator.kt @@ -40,8 +40,12 @@ class LocalFunctionGenerator(statementGenerator: StatementGenerator) : Statement irFun.body = BodyGenerator(lambdaDescriptor, statementGenerator.context).generateLambdaBody(ktFun) irBlock.statements.add(irFun) - irBlock.statements.add(IrCallableReferenceImpl(ktLambda.startOffset, ktLambda.endOffset, lambdaExpressionType, - lambdaDescriptor, null, IrStatementOrigin.LAMBDA)) + irBlock.statements.add( + IrCallableReferenceImpl( + ktLambda.startOffset, ktLambda.endOffset, lambdaExpressionType, + lambdaDescriptor, null, IrStatementOrigin.LAMBDA + ) + ) return irBlock } @@ -58,17 +62,17 @@ class LocalFunctionGenerator(statementGenerator: StatementGenerator) : Statement val irFun = generateFunctionDeclaration(ktFun) irBlock.statements.add(irFun) - irBlock.statements.add(IrCallableReferenceImpl(ktFun.startOffset, ktFun.endOffset, funExpressionType, - irFun.descriptor, null, IrStatementOrigin.ANONYMOUS_FUNCTION)) + irBlock.statements.add( + IrCallableReferenceImpl( + ktFun.startOffset, ktFun.endOffset, funExpressionType, + irFun.descriptor, null, IrStatementOrigin.ANONYMOUS_FUNCTION + ) + ) irBlock } - private fun generateFunctionDeclaration(ktFun: KtNamedFunction): IrFunction { - val funDescriptor = getOrFail(BindingContext.FUNCTION, ktFun) - val irFun = IrFunctionImpl(ktFun.startOffset, ktFun.endOffset, IrDeclarationOrigin.DEFINED, funDescriptor) - irFun.body = BodyGenerator(funDescriptor, statementGenerator.context).generateFunctionBody(ktFun.bodyExpression!!) - return irFun - } + private fun generateFunctionDeclaration(ktFun: KtNamedFunction): IrFunction = + DeclarationGenerator(context).generateFunctionDeclaration(ktFun) } \ No newline at end of file diff --git a/compiler/testData/ir/irText/declarations/defaultArguments.kt b/compiler/testData/ir/irText/declarations/defaultArguments.kt index 052c38a6276..947d4f3620d 100644 --- a/compiler/testData/ir/irText/declarations/defaultArguments.kt +++ b/compiler/testData/ir/irText/declarations/defaultArguments.kt @@ -1 +1,3 @@ -fun test1(x: Int, y: Int = 0, z: String = "abc") {} +fun test1(x: Int, y: Int = 0, z: String = "abc") { + fun local(xx: Int = x, yy: Int = y, zz: String = z) {} +} diff --git a/compiler/testData/ir/irText/declarations/defaultArguments.txt b/compiler/testData/ir/irText/declarations/defaultArguments.txt index 47272280e3a..1263a446ecd 100644 --- a/compiler/testData/ir/irText/declarations/defaultArguments.txt +++ b/compiler/testData/ir/irText/declarations/defaultArguments.txt @@ -5,3 +5,11 @@ FILE /defaultArguments.kt z: EXPRESSION_BODY CONST String type=kotlin.String value='abc' BLOCK_BODY + FUN local final fun local(xx: kotlin.Int = ..., yy: kotlin.Int = ..., zz: kotlin.String = ...): kotlin.Unit + xx: EXPRESSION_BODY + GET_VAR 'value-parameter x: Int' type=kotlin.Int origin=null + yy: EXPRESSION_BODY + GET_VAR 'value-parameter y: Int = ...' type=kotlin.Int origin=null + zz: EXPRESSION_BODY + GET_VAR 'value-parameter z: String = ...' type=kotlin.String origin=null + BLOCK_BODY