[FIR2IR] Slightly refactor DataClassMembersGenerator
This commit is contained in:
+7
-12
@@ -32,23 +32,17 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) {
|
|||||||
// TODO: generateInlineClassMembers
|
// TODO: generateInlineClassMembers
|
||||||
|
|
||||||
fun generateDataClassMembers(klass: FirClass<*>, irClass: IrClass): List<Name> =
|
fun generateDataClassMembers(klass: FirClass<*>, irClass: IrClass): List<Name> =
|
||||||
MyDataClassMethodsGenerator(klass, irClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER).generate()
|
MyDataClassMethodsGenerator(irClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER).generate(klass)
|
||||||
|
|
||||||
fun generateDataClassComponentBody(irFunction: IrFunction) =
|
fun generateDataClassComponentBody(irFunction: IrFunction) =
|
||||||
MyDataClassMethodsGenerator(null, irFunction.parentAsClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER)
|
MyDataClassMethodsGenerator(irFunction.parentAsClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER)
|
||||||
.generateComponentBody(irFunction)
|
.generateComponentBody(irFunction)
|
||||||
|
|
||||||
fun generateDataClassCopyBody(irFunction: IrFunction) =
|
fun generateDataClassCopyBody(irFunction: IrFunction) =
|
||||||
MyDataClassMethodsGenerator(null, irFunction.parentAsClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER)
|
MyDataClassMethodsGenerator(irFunction.parentAsClass, IrDeclarationOrigin.GENERATED_DATA_CLASS_MEMBER)
|
||||||
.generateCopyBody(irFunction)
|
.generateCopyBody(irFunction)
|
||||||
|
|
||||||
private inner class MyDataClassMethodsGenerator(
|
private inner class MyDataClassMethodsGenerator(val irClass: IrClass, val origin: IrDeclarationOrigin) {
|
||||||
val klass: FirClass<*>?,
|
|
||||||
val irClass: IrClass,
|
|
||||||
val origin: IrDeclarationOrigin
|
|
||||||
) {
|
|
||||||
val properties = irClass.declarations.filterIsInstance<IrProperty>().map { it.descriptor }
|
|
||||||
|
|
||||||
private val irDataClassMembersGenerator = object : DataClassMembersGenerator(
|
private val irDataClassMembersGenerator = object : DataClassMembersGenerator(
|
||||||
IrGeneratorContextBase(components.irBuiltIns),
|
IrGeneratorContextBase(components.irBuiltIns),
|
||||||
components.symbolTable,
|
components.symbolTable,
|
||||||
@@ -110,8 +104,9 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) {
|
|||||||
(this.name == hashCodeName && matchesHashCodeSignature) ||
|
(this.name == hashCodeName && matchesHashCodeSignature) ||
|
||||||
(this.name == toStringName && matchesToStringSignature)
|
(this.name == toStringName && matchesToStringSignature)
|
||||||
|
|
||||||
fun generate(): List<Name> {
|
fun generate(klass: FirClass<*>): List<Name> {
|
||||||
if (properties.isEmpty() || klass == null) {
|
val properties = irClass.declarations.filterIsInstance<IrProperty>().map { it.descriptor }
|
||||||
|
if (properties.isEmpty()) {
|
||||||
return emptyList()
|
return emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user