From 8ab546ba51b503c51fda42e98cda424e5c39dcaa Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Tue, 17 Aug 2021 15:52:18 +0200 Subject: [PATCH] [FIR]: Pass special origins for local functions (named and anonymous) --- .../src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt | 4 ++-- .../codegen/box/fir/noSymbolForIntRangeIterator.fir.txt | 2 +- .../ir/irText/declarations/parameters/lambdas.fir.txt | 2 +- compiler/testData/ir/irText/expressions/kt47245.fir.txt | 2 +- .../expressions/variableAsFunctionCallWithGenerics.fir.txt | 2 +- compiler/testData/ir/irText/lambdas/anonymousFunction.fir.txt | 2 +- compiler/testData/ir/irText/lambdas/localFunction.fir.txt | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index 8c77fff7adc..6bc7ca14f4d 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -217,7 +217,7 @@ class Fir2IrVisitor( override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?): IrElement { val irFunction = if (simpleFunction.visibility == Visibilities.Local) { declarationStorage.createIrFunction( - simpleFunction, irParent = conversionScope.parent(), isLocal = true + simpleFunction, irParent = conversionScope.parent(), origin = IrDeclarationOrigin.LOCAL_FUNCTION, isLocal = true ) } else { declarationStorage.getCachedIrFunction(simpleFunction)!! @@ -236,7 +236,7 @@ class Fir2IrVisitor( override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement { return anonymousFunction.convertWithOffsets { startOffset, endOffset -> val irFunction = declarationStorage.createIrFunction( - anonymousFunction, irParent = conversionScope.parent(), isLocal = true + anonymousFunction, irParent = conversionScope.parent(), origin = IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA, isLocal = true ) conversionScope.withFunction(irFunction) { memberGenerator.convertFunctionContent(irFunction, anonymousFunction, containingClass = null) diff --git a/compiler/testData/codegen/box/fir/noSymbolForIntRangeIterator.fir.txt b/compiler/testData/codegen/box/fir/noSymbolForIntRangeIterator.fir.txt index 284989d4186..04c32ac1984 100644 --- a/compiler/testData/codegen/box/fir/noSymbolForIntRangeIterator.fir.txt +++ b/compiler/testData/codegen/box/fir/noSymbolForIntRangeIterator.fir.txt @@ -49,7 +49,7 @@ FILE fqName: fileName:/noSymbolForIntRangeIterator.kt CONST Int type=kotlin.Int value=10 VAR name:y type:kotlin.Int [val] CONST Int type=kotlin.Int value=10 - FUN name:localFunc visibility:local modality:FINAL <> () returnType:kotlin.Unit + FUN LOCAL_FUNCTION name:localFunc visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY BLOCK type=kotlin.Unit origin=FOR_LOOP VAR FOR_LOOP_ITERATOR name:tmp_1 type:kotlin.collections.IntIterator [val] diff --git a/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt b/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt index f8322c87f07..f197f5d6892 100644 --- a/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt +++ b/compiler/testData/ir/irText/declarations/parameters/lambdas.fir.txt @@ -48,7 +48,7 @@ FILE fqName: fileName:/lambdas.kt FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Function2 visibility:private [final,static] EXPRESSION_BODY FUN_EXPR type=kotlin.Function2 origin=LAMBDA - FUN name: visibility:local modality:FINAL <> (i:kotlin.Int, j:kotlin.Int) returnType:kotlin.Unit + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (i:kotlin.Int, j:kotlin.Int) returnType:kotlin.Unit VALUE_PARAMETER name:i index:0 type:kotlin.Int VALUE_PARAMETER name:j index:1 type:kotlin.Int BLOCK_BODY diff --git a/compiler/testData/ir/irText/expressions/kt47245.fir.txt b/compiler/testData/ir/irText/expressions/kt47245.fir.txt index 5483d05a1b5..089b59933ce 100644 --- a/compiler/testData/ir/irText/expressions/kt47245.fir.txt +++ b/compiler/testData/ir/irText/expressions/kt47245.fir.txt @@ -15,5 +15,5 @@ FILE fqName: fileName:/kt47245.kt CALL 'public final fun next (): kotlin.Int [operator] declared in kotlin.collections.IntIterator' type=kotlin.Int origin=FOR_LOOP_NEXT $this: GET_VAR 'val tmp_0: kotlin.collections.IntIterator [val] declared in .test' type=kotlin.collections.IntIterator origin=null BLOCK type=kotlin.Unit origin=null - FUN name:x visibility:local modality:FINAL <> () returnType:kotlin.Unit + FUN LOCAL_FUNCTION name:x visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY diff --git a/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt b/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt index dd9a7d0a99f..d98d2ca1681 100644 --- a/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt +++ b/compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.fir.txt @@ -27,7 +27,7 @@ FILE fqName: fileName:/variableAsFunctionCallWithGenerics.kt 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:T of . + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:T of . BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (): T of . declared in .' GET_VAR ': T of . declared in .' type=T of . origin=null diff --git a/compiler/testData/ir/irText/lambdas/anonymousFunction.fir.txt b/compiler/testData/ir/irText/lambdas/anonymousFunction.fir.txt index b2c5c1f00e3..8b560429d5c 100644 --- a/compiler/testData/ir/irText/lambdas/anonymousFunction.fir.txt +++ b/compiler/testData/ir/irText/lambdas/anonymousFunction.fir.txt @@ -3,7 +3,7 @@ FILE fqName: fileName:/anonymousFunction.kt FIELD PROPERTY_BACKING_FIELD name:anonymous type:kotlin.Function0 visibility:private [final,static] EXPRESSION_BODY FUN_EXPR type=kotlin.Function0 origin=LAMBDA - FUN name: visibility:local modality:FINAL <> () returnType:kotlin.Unit + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY CALL 'public final fun println (): kotlin.Unit [inline] declared in kotlin.io.ConsoleKt' type=kotlin.Unit origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> () returnType:kotlin.Function0 diff --git a/compiler/testData/ir/irText/lambdas/localFunction.fir.txt b/compiler/testData/ir/irText/lambdas/localFunction.fir.txt index 258ccd332e1..a0c8bcdf725 100644 --- a/compiler/testData/ir/irText/lambdas/localFunction.fir.txt +++ b/compiler/testData/ir/irText/lambdas/localFunction.fir.txt @@ -3,7 +3,7 @@ FILE fqName: fileName:/localFunction.kt BLOCK_BODY VAR name:x type:kotlin.Int [var] CONST Int type=kotlin.Int value=0 - FUN name:local visibility:local modality:FINAL <> () returnType:kotlin.Unit + FUN LOCAL_FUNCTION name:local visibility:local modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Int [val] GET_VAR 'var x: kotlin.Int [var] declared in .outer' type=kotlin.Int origin=null