Remove descriptors from LocalDeclarationslowering

This commit is contained in:
Georgy Bronnikov
2018-11-13 18:15:26 +03:00
parent b525146009
commit da0a823992
18 changed files with 74 additions and 34 deletions
@@ -40,8 +40,8 @@ import org.jetbrains.kotlin.name.NameUtils
import java.util.*
interface LocalNameProvider {
fun localName(descriptor: DeclarationDescriptor): String =
descriptor.name.asString()
fun localName(declaration: IrDeclarationWithName): String =
declaration.name.asString()
companion object {
val DEFAULT = object : LocalNameProvider {}
@@ -465,13 +465,13 @@ class LocalDeclarationsLowering(
}
}
private fun suggestLocalName(declaration: IrDeclaration): String {
private fun suggestLocalName(declaration: IrDeclarationWithName): String {
localFunctions[declaration]?.let {
if (it.index >= 0)
return "lambda-${it.index}"
}
return localNameProvider.localName(declaration.descriptor)
return localNameProvider.localName(declaration)
}
private fun generateNameForLiftedDeclaration(
@@ -481,7 +481,7 @@ class LocalDeclarationsLowering(
Name.identifier(
declaration.parentsWithSelf
.takeWhile { it != newOwner }
.toList().reversed().joinToString(separator = "$") { suggestLocalName(it as IrDeclaration) }
.toList().reversed().joinToString(separator = "$") { suggestLocalName(it as IrDeclarationWithName) }
)
private fun createLiftedDeclaration(localFunctionContext: LocalFunctionContext) {
@@ -773,4 +773,4 @@ class LocalDeclarationsLowering(
}
}
}
}
@@ -89,7 +89,7 @@ class SharedVariablesLowering(val context: BackendContext) : FunctionLoweringPas
}
private fun rewriteSharedVariables() {
val transformedDescriptors = HashMap<IrValueSymbol, IrVariableSymbol>()
val transformedSymbols = HashMap<IrValueSymbol, IrVariableSymbol>()
irFunction.transformChildrenVoid(object : IrElementTransformerVoid() {
override fun visitVariable(declaration: IrVariable): IrStatement {
@@ -99,7 +99,7 @@ class SharedVariablesLowering(val context: BackendContext) : FunctionLoweringPas
val newDeclaration = context.sharedVariablesManager.declareSharedVariable(declaration)
newDeclaration.parent = irFunction
transformedDescriptors[declaration.symbol] = newDeclaration.symbol
transformedSymbols[declaration.symbol] = newDeclaration.symbol
return context.sharedVariablesManager.defineSharedValue(declaration, newDeclaration)
}
@@ -123,7 +123,7 @@ class SharedVariablesLowering(val context: BackendContext) : FunctionLoweringPas
}
private fun getTransformedSymbol(oldSymbol: IrValueSymbol): IrVariableSymbol? =
transformedDescriptors.getOrElse(oldSymbol) {
transformedSymbols.getOrElse(oldSymbol) {
assert(oldSymbol.owner !in sharedVariables) {
"Shared variable is not transformed: ${oldSymbol.owner.dump()}"
}