[PL] Fix: Constructor of external class may delegate to kotlin.Any regardless of the actual superclass

This commit is contained in:
Dmitriy Dolovov
2023-04-16 23:40:15 +02:00
committed by Space Team
parent 997b6e6722
commit b644fc009d
@@ -334,7 +334,10 @@ internal class PartiallyLinkedIrTreePatcher(
val invalidConstructorDelegationFound =
if (calledConstructor.origin != PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION) {
val constructedSuperClassSymbol = calledConstructor.parentAsClass.symbol
constructedSuperClassSymbol != constructedClassSymbol && constructedSuperClassSymbol != actualSuperClassSymbol
// Note: Constructor of an external class may delegate to kotlin.Any
constructedSuperClassSymbol != constructedClassSymbol
&& constructedSuperClassSymbol != actualSuperClassSymbol
&& (!constructedClass.isExternal || constructedSuperClassSymbol != builtIns.anyClass)
} else {
// Fallback to signatures.
(calledConstructorSymbol.signature as? IdSignature.CommonSignature)?.let { constructorSignature ->