From 52631b7abd4f74ff8e8d65735f9d1506886c505b Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Wed, 29 Jul 2020 10:33:07 -0700 Subject: [PATCH] FIR2IR: make local storage track scopes, including anonymous init --- .../jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 2 ++ .../org/jetbrains/kotlin/fir/backend/Fir2IrLocalStorage.kt | 4 ++-- .../backend/{Fir2IrCallableCache.kt => Fir2IrScopeCache.kt} | 3 +-- compiler/testData/codegen/box/closures/kt10044.kt | 1 - 4 files changed, 5 insertions(+), 5 deletions(-) rename compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/{Fir2IrCallableCache.kt => Fir2IrScopeCache.kt} (95%) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 89c75370074..fd79b29805f 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -153,6 +153,7 @@ class Fir2IrDeclarationStorage( symbolTable.enterScope(declaration) if (declaration is IrSimpleFunction || declaration is IrConstructor || + declaration is IrAnonymousInitializer || declaration is IrProperty || declaration is IrEnumEntry ) { @@ -163,6 +164,7 @@ class Fir2IrDeclarationStorage( fun leaveScope(declaration: IrDeclaration) { if (declaration is IrSimpleFunction || declaration is IrConstructor || + declaration is IrAnonymousInitializer || declaration is IrProperty || declaration is IrEnumEntry ) { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrLocalStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrLocalStorage.kt index a767c75269d..b8f52059222 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrLocalStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrLocalStorage.kt @@ -16,12 +16,12 @@ import org.jetbrains.kotlin.ir.declarations.IrVariable class Fir2IrLocalStorage { - private val cacheStack = mutableListOf() + private val cacheStack = mutableListOf() private val localClassCache = mutableMapOf, IrClass>() fun enterCallable() { - cacheStack += Fir2IrCallableCache() + cacheStack += Fir2IrScopeCache() } fun leaveCallable() { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrCallableCache.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrScopeCache.kt similarity index 95% rename from compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrCallableCache.kt rename to compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrScopeCache.kt index 1f6cdb53e70..7463c43ebc6 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrCallableCache.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrScopeCache.kt @@ -7,12 +7,11 @@ package org.jetbrains.kotlin.fir.backend import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.declarations.IrVariable -class Fir2IrCallableCache { +class Fir2IrScopeCache { private val parameterCache = mutableMapOf() private val variableCache = mutableMapOf, IrVariable>() diff --git a/compiler/testData/codegen/box/closures/kt10044.kt b/compiler/testData/codegen/box/closures/kt10044.kt index 5aa75eb3823..277f356c76c 100644 --- a/compiler/testData/codegen/box/closures/kt10044.kt +++ b/compiler/testData/codegen/box/closures/kt10044.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR open class JClass() { fun test(): String { return "OK"