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)
|
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() {
|
||||||
|
|||||||
+1
-2
@@ -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,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
open class JClass() {
|
open class JClass() {
|
||||||
fun test(): String {
|
fun test(): String {
|
||||||
return "OK"
|
return "OK"
|
||||||
|
|||||||
Reference in New Issue
Block a user