FIR2IR: make local storage track scopes, including anonymous init
This commit is contained in:
committed by
Mikhail Glukhikh
parent
26e3a111d6
commit
52631b7abd
@@ -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
|
||||
) {
|
||||
|
||||
@@ -16,12 +16,12 @@ import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
|
||||
class Fir2IrLocalStorage {
|
||||
|
||||
private val cacheStack = mutableListOf<Fir2IrCallableCache>()
|
||||
private val cacheStack = mutableListOf<Fir2IrScopeCache>()
|
||||
|
||||
private val localClassCache = mutableMapOf<FirClass<*>, IrClass>()
|
||||
|
||||
fun enterCallable() {
|
||||
cacheStack += Fir2IrCallableCache()
|
||||
cacheStack += Fir2IrScopeCache()
|
||||
}
|
||||
|
||||
fun leaveCallable() {
|
||||
|
||||
+1
-2
@@ -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<FirValueParameter, IrValueParameter>()
|
||||
|
||||
private val variableCache = mutableMapOf<FirVariable<*>, IrVariable>()
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
open class JClass() {
|
||||
fun test(): String {
|
||||
return "OK"
|
||||
|
||||
Reference in New Issue
Block a user