[FIR] Replace PersistentList with MutableList in BodyResolveContext, LocalClassesNavigation

This commit is contained in:
Ivan Kochurkin
2021-06-03 19:08:03 +03:00
parent d360932ebc
commit 366017d267
2 changed files with 8 additions and 11 deletions
@@ -73,7 +73,7 @@ class BodyResolveContext(
get() = towerDataContextsForClassParts.towerDataContextForCallableReferences get() = towerDataContextsForClassParts.towerDataContextForCallableReferences
@set:PrivateForInline @set:PrivateForInline
var containers: PersistentList<FirDeclaration> = persistentListOf() var containers: MutableList<FirDeclaration> = mutableListOf()
@set:PrivateForInline @set:PrivateForInline
var containingClass: FirRegularClass? = null var containingClass: FirRegularClass? = null
@@ -108,25 +108,23 @@ class BodyResolveContext(
@PrivateForInline @PrivateForInline
inline fun <T> withContainer(declaration: FirDeclaration, f: () -> T): T { inline fun <T> withContainer(declaration: FirDeclaration, f: () -> T): T {
val oldContainers = containers containers.add(declaration)
containers = containers.add(declaration)
return try { return try {
f() f()
} finally { } finally {
containers = oldContainers containers.removeAt(containers.size - 1)
} }
} }
@PrivateForInline @PrivateForInline
private inline fun <T> withContainerClass(declaration: FirRegularClass, f: () -> T): T { private inline fun <T> withContainerClass(declaration: FirRegularClass, f: () -> T): T {
val oldContainers = containers
val oldContainingClass = containingClass val oldContainingClass = containingClass
containers = containers.add(declaration) containers.add(declaration)
containingClass = declaration containingClass = declaration
return try { return try {
f() f()
} finally { } finally {
containers = oldContainers containers.removeAt(containers.size - 1)
containingClass = oldContainingClass containingClass = oldContainingClass
} }
} }
@@ -49,7 +49,7 @@ private class NavigationInfoVisitor : FirDefaultVisitor<Unit, Any?>() {
val resultingMap: MutableMap<FirCallableMemberDeclaration<*>, FirClassLikeDeclaration<*>> = mutableMapOf() val resultingMap: MutableMap<FirCallableMemberDeclaration<*>, FirClassLikeDeclaration<*>> = mutableMapOf()
val parentForClass: MutableMap<FirClassLikeDeclaration<*>, FirClassLikeDeclaration<*>?> = mutableMapOf() val parentForClass: MutableMap<FirClassLikeDeclaration<*>, FirClassLikeDeclaration<*>?> = mutableMapOf()
val allMembers: MutableList<FirSymbolOwner<*>> = mutableListOf() val allMembers: MutableList<FirSymbolOwner<*>> = mutableListOf()
private var currentPath: PersistentList<FirClassLikeDeclaration<*>> = persistentListOf() private val currentPath: MutableList<FirClassLikeDeclaration<*>> = mutableListOf()
override fun visitElement(element: FirElement, data: Any?) {} override fun visitElement(element: FirElement, data: Any?) {}
@@ -63,12 +63,11 @@ private class NavigationInfoVisitor : FirDefaultVisitor<Unit, Any?>() {
override fun <F : FirClass<F>> visitClass(klass: FirClass<F>, data: Any?) { override fun <F : FirClass<F>> visitClass(klass: FirClass<F>, data: Any?) {
parentForClass[klass] = currentPath.lastOrNull() parentForClass[klass] = currentPath.lastOrNull()
val prev = currentPath currentPath.add(klass)
currentPath = currentPath.add(klass)
klass.acceptChildren(this, null) klass.acceptChildren(this, null)
currentPath = prev currentPath.removeAt(currentPath.size - 1)
} }
override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?) { override fun visitSimpleFunction(simpleFunction: FirSimpleFunction, data: Any?) {