FIR2IR: make local storage track scopes, including anonymous init

This commit is contained in:
Jinseong Jeon
2020-07-29 10:33:07 -07:00
committed by Mikhail Glukhikh
parent 26e3a111d6
commit 52631b7abd
4 changed files with 5 additions and 5 deletions
@@ -153,6 +153,7 @@ class Fir2IrDeclarationStorage(
symbolTable.enterScope(declaration) symbolTable.enterScope(declaration)
if (declaration is IrSimpleFunction || if (declaration is IrSimpleFunction ||
declaration is IrConstructor || declaration is IrConstructor ||
declaration is IrAnonymousInitializer ||
declaration is IrProperty || declaration is IrProperty ||
declaration is IrEnumEntry declaration is IrEnumEntry
) { ) {
@@ -163,6 +164,7 @@ class Fir2IrDeclarationStorage(
fun leaveScope(declaration: IrDeclaration) { fun leaveScope(declaration: IrDeclaration) {
if (declaration is IrSimpleFunction || if (declaration is IrSimpleFunction ||
declaration is IrConstructor || declaration is IrConstructor ||
declaration is IrAnonymousInitializer ||
declaration is IrProperty || declaration is IrProperty ||
declaration is IrEnumEntry declaration is IrEnumEntry
) { ) {
@@ -16,12 +16,12 @@ import org.jetbrains.kotlin.ir.declarations.IrVariable
class Fir2IrLocalStorage { class Fir2IrLocalStorage {
private val cacheStack = mutableListOf<Fir2IrCallableCache>() private val cacheStack = mutableListOf<Fir2IrScopeCache>()
private val localClassCache = mutableMapOf<FirClass<*>, IrClass>() private val localClassCache = mutableMapOf<FirClass<*>, IrClass>()
fun enterCallable() { fun enterCallable() {
cacheStack += Fir2IrCallableCache() cacheStack += Fir2IrScopeCache()
} }
fun leaveCallable() { fun leaveCallable() {
@@ -7,12 +7,11 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.declarations.* 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.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.declarations.IrVariable import org.jetbrains.kotlin.ir.declarations.IrVariable
class Fir2IrCallableCache { class Fir2IrScopeCache {
private val parameterCache = mutableMapOf<FirValueParameter, IrValueParameter>() private val parameterCache = mutableMapOf<FirValueParameter, IrValueParameter>()
private val variableCache = mutableMapOf<FirVariable<*>, IrVariable>() private val variableCache = mutableMapOf<FirVariable<*>, IrVariable>()
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
open class JClass() { open class JClass() {
fun test(): String { fun test(): String {
return "OK" return "OK"