Get rid of descriptors in StaticDefaultFunctionLowering
This commit is contained in:
+6
-5
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.lower.DECLARATION_ORIGIN_FUNCTION_FOR_DEFAULT_PARAMETER
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
@@ -29,24 +30,24 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
class StaticDefaultFunctionLowering(val state: GenerationState) : IrElementTransformerVoid(), ClassLoweringPass {
|
||||
|
||||
override fun lower(irClass: IrClass) {
|
||||
val descriptor = irClass.descriptor
|
||||
if (DescriptorUtils.isInterface(descriptor) || DescriptorUtils.isAnnotationClass(descriptor)) {
|
||||
val kind = irClass.kind
|
||||
if (kind == ClassKind.INTERFACE || kind == ClassKind.ANNOTATION_CLASS) {
|
||||
return
|
||||
}
|
||||
irClass.accept(this, null)
|
||||
}
|
||||
|
||||
override fun visitFunction(declaration: IrFunction): IrStatement {
|
||||
if (declaration.origin == DECLARATION_ORIGIN_FUNCTION_FOR_DEFAULT_PARAMETER && declaration.dispatchReceiverParameter != null) {
|
||||
return if (declaration.origin == DECLARATION_ORIGIN_FUNCTION_FOR_DEFAULT_PARAMETER && declaration.dispatchReceiverParameter != null) {
|
||||
val newFunction = createStaticFunctionWithReceivers(
|
||||
declaration.descriptor.containingDeclaration as ClassDescriptor,
|
||||
declaration.descriptor.name,
|
||||
declaration.descriptor,
|
||||
declaration.descriptor.dispatchReceiverParameter!!.type
|
||||
)
|
||||
return newFunction.createFunctionAndMapVariables(declaration)
|
||||
newFunction.createFunctionAndMapVariables(declaration)
|
||||
} else {
|
||||
return super.visitFunction(declaration)
|
||||
super.visitFunction(declaration)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user