Generate singleton references as GET_OBJECT in nested classes

This commit is contained in:
Dmitry Petrov
2018-07-19 16:51:42 +03:00
parent 779cae7db5
commit ae0704af9c
7 changed files with 496 additions and 4 deletions
@@ -121,9 +121,10 @@ fun StatementGenerator.generateSingletonReference(
}
private fun StatementGenerator.shouldGenerateReceiverAsSingletonReference(receiverClassDescriptor: ClassDescriptor): Boolean {
val scopeOwner = this.scopeOwner
return receiverClassDescriptor.kind.isSingleton &&
this.scopeOwner != receiverClassDescriptor && //For anonymous initializers
this.scopeOwner.containingDeclaration != receiverClassDescriptor
scopeOwner != receiverClassDescriptor && // For anonymous initializers
!(scopeOwner is FunctionDescriptor && scopeOwner.containingDeclaration == receiverClassDescriptor) // Methods of object
}
private fun StatementGenerator.generateThisOrSuperReceiver(receiver: ReceiverValue, classDescriptor: ClassDescriptor): IrExpression {