committed by
SvyatoslavScherbina
parent
dfc01847c5
commit
627d28db8a
+5
@@ -93,6 +93,7 @@ fun IrClass.getSuperInterfaces() = this.superClasses.map { it.owner }.filter { i
|
|||||||
|
|
||||||
val IrProperty.konanBackingField: IrField?
|
val IrProperty.konanBackingField: IrField?
|
||||||
get() {
|
get() {
|
||||||
|
assert(this.isReal)
|
||||||
this.backingField?.let { return it }
|
this.backingField?.let { return it }
|
||||||
|
|
||||||
(this.descriptor as? DeserializedPropertyDescriptor)?.backingField?.let { backingFieldDescriptor ->
|
(this.descriptor as? DeserializedPropertyDescriptor)?.backingField?.let { backingFieldDescriptor ->
|
||||||
@@ -116,6 +117,10 @@ val IrField.containingClass get() = this.parent as? IrClass
|
|||||||
|
|
||||||
val IrFunction.isReal get() = this.origin != IrDeclarationOrigin.FAKE_OVERRIDE
|
val IrFunction.isReal get() = this.origin != IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
|
|
||||||
|
// Note: psi2ir doesn't set `origin = FAKE_OVERRIDE` for fields and properties yet.
|
||||||
|
val IrProperty.isReal: Boolean get() = this.descriptor.kind.isReal
|
||||||
|
val IrField.isReal: Boolean get() = this.descriptor.kind.isReal
|
||||||
|
|
||||||
val IrSimpleFunction.isOverridable: Boolean
|
val IrSimpleFunction.isOverridable: Boolean
|
||||||
get() = visibility != Visibilities.PRIVATE
|
get() = visibility != Visibilities.PRIVATE
|
||||||
&& modality != Modality.FINAL
|
&& modality != Modality.FINAL
|
||||||
|
|||||||
+2
-2
@@ -127,8 +127,8 @@ private fun Context.getDeclaredFields(classDescriptor: ClassDescriptor): List<Ir
|
|||||||
val irClass = classDescriptor
|
val irClass = classDescriptor
|
||||||
val fields = irClass.declarations.mapNotNull {
|
val fields = irClass.declarations.mapNotNull {
|
||||||
when (it) {
|
when (it) {
|
||||||
is IrField -> it
|
is IrField -> it.takeIf { it.isReal }
|
||||||
is IrProperty -> it.konanBackingField
|
is IrProperty -> it.takeIf { it.isReal }?.konanBackingField
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user