Simplify ExternalDependenciesGenerator
Remove unused parameters, inline inner class
This commit is contained in:
@@ -64,7 +64,7 @@ class IrLazyProperty(
|
||||
|
||||
override var backingField: IrField? by lazyVar {
|
||||
if (descriptor.hasBackingField(bindingContext)) {
|
||||
stubGenerator.generateFieldStub(descriptor, bindingContext).apply {
|
||||
stubGenerator.generateFieldStub(descriptor).apply {
|
||||
correspondingProperty = this@IrLazyProperty
|
||||
}
|
||||
} else null
|
||||
@@ -94,4 +94,4 @@ class IrLazyProperty(
|
||||
getter = getter?.run { transform(transformer, data) as IrSimpleFunction }
|
||||
setter = setter?.run { transform(transformer, data) as IrSimpleFunction }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ class DeclarationStubGenerator(
|
||||
)
|
||||
}
|
||||
|
||||
fun generateFieldStub(descriptor: PropertyDescriptor, bindingContext: BindingContext? = null): IrField {
|
||||
fun generateFieldStub(descriptor: PropertyDescriptor): IrField {
|
||||
val referenced = symbolTable.referenceField(descriptor)
|
||||
if (referenced.isBound) {
|
||||
return referenced.owner
|
||||
|
||||
+31
-40
@@ -19,58 +19,49 @@ package org.jetbrains.kotlin.ir.util
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
class ExternalDependenciesGenerator(
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
val symbolTable: SymbolTable,
|
||||
val irBuiltIns: IrBuiltIns,
|
||||
externalDeclarationOrigin: ((DeclarationDescriptor) -> IrDeclarationOrigin)? = null,
|
||||
val deserializer: IrDeserializer? = null
|
||||
private val deserializer: IrDeserializer? = null
|
||||
) {
|
||||
private val stubGenerator = DeclarationStubGenerator(
|
||||
moduleDescriptor, symbolTable, irBuiltIns.languageVersionSettings, externalDeclarationOrigin, deserializer
|
||||
)
|
||||
|
||||
fun generateUnboundSymbolsAsDependencies(irModule: IrModuleFragment, bindingContext: BindingContext? = null) {
|
||||
DependencyGenerationTask(irModule, bindingContext).run()
|
||||
}
|
||||
|
||||
private inner class DependencyGenerationTask(val irModule: IrModuleFragment, val bindingContext: BindingContext?) {
|
||||
|
||||
fun run() {
|
||||
stubGenerator.unboundSymbolGeneration = true
|
||||
ArrayList(symbolTable.unboundClasses).forEach {
|
||||
stubGenerator.generateClassStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundConstructors).forEach {
|
||||
stubGenerator.generateConstructorStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundEnumEntries).forEach {
|
||||
stubGenerator.generateEnumEntryStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundFields).forEach {
|
||||
stubGenerator.generateFieldStub(it.descriptor, bindingContext)
|
||||
}
|
||||
ArrayList(symbolTable.unboundSimpleFunctions).forEach {
|
||||
stubGenerator.generateFunctionStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundTypeParameters).forEach {
|
||||
stubGenerator.generateOrGetTypeParameterStub(it.descriptor)
|
||||
}
|
||||
|
||||
deserializer?.declareForwardDeclarations()
|
||||
|
||||
if (deserializer != null) return
|
||||
|
||||
assert(symbolTable.unboundClasses.isEmpty())
|
||||
assert(symbolTable.unboundConstructors.isEmpty())
|
||||
assert(symbolTable.unboundEnumEntries.isEmpty())
|
||||
assert(symbolTable.unboundFields.isEmpty())
|
||||
assert(symbolTable.unboundSimpleFunctions.isEmpty())
|
||||
assert(symbolTable.unboundTypeParameters.isEmpty())
|
||||
fun generateUnboundSymbolsAsDependencies() {
|
||||
stubGenerator.unboundSymbolGeneration = true
|
||||
ArrayList(symbolTable.unboundClasses).forEach {
|
||||
stubGenerator.generateClassStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundConstructors).forEach {
|
||||
stubGenerator.generateConstructorStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundEnumEntries).forEach {
|
||||
stubGenerator.generateEnumEntryStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundFields).forEach {
|
||||
stubGenerator.generateFieldStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundSimpleFunctions).forEach {
|
||||
stubGenerator.generateFunctionStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundTypeParameters).forEach {
|
||||
stubGenerator.generateOrGetTypeParameterStub(it.descriptor)
|
||||
}
|
||||
|
||||
deserializer?.declareForwardDeclarations()
|
||||
|
||||
if (deserializer != null) return
|
||||
|
||||
assert(symbolTable.unboundClasses.isEmpty())
|
||||
assert(symbolTable.unboundConstructors.isEmpty())
|
||||
assert(symbolTable.unboundEnumEntries.isEmpty())
|
||||
assert(symbolTable.unboundFields.isEmpty())
|
||||
assert(symbolTable.unboundSimpleFunctions.isEmpty())
|
||||
assert(symbolTable.unboundTypeParameters.isEmpty())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user