[PL] Fix: Constructor of external class may delegate to kotlin.Any regardless of the actual superclass
This commit is contained in:
committed by
Space Team
parent
997b6e6722
commit
b644fc009d
+4
-1
@@ -334,7 +334,10 @@ internal class PartiallyLinkedIrTreePatcher(
|
|||||||
val invalidConstructorDelegationFound =
|
val invalidConstructorDelegationFound =
|
||||||
if (calledConstructor.origin != PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION) {
|
if (calledConstructor.origin != PartiallyLinkedDeclarationOrigin.MISSING_DECLARATION) {
|
||||||
val constructedSuperClassSymbol = calledConstructor.parentAsClass.symbol
|
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 {
|
} else {
|
||||||
// Fallback to signatures.
|
// Fallback to signatures.
|
||||||
(calledConstructorSymbol.signature as? IdSignature.CommonSignature)?.let { constructorSignature ->
|
(calledConstructorSymbol.signature as? IdSignature.CommonSignature)?.let { constructorSignature ->
|
||||||
|
|||||||
Reference in New Issue
Block a user