[Wasm] Add external inheritance checker.
Prohibit non-external types to extend external types. This type of inheritance is not supported in Wasm backend.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
open class C1
|
||||
|
||||
interface I1
|
||||
|
||||
external open class EC1
|
||||
|
||||
external class <!EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE!>EC2<!> : C1
|
||||
|
||||
external class <!EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE!>EC3<!> : I1, C1
|
||||
|
||||
external interface <!EXTERNAL_TYPE_EXTENDS_NON_EXTERNAL_TYPE!>EI1<!> : I1
|
||||
|
||||
interface <!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>I2<!> : EI1
|
||||
|
||||
class <!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>C3<!> : EI1
|
||||
|
||||
class <!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE, NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>C4<!> : EI1, EC1()
|
||||
|
||||
<!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>object O1<!> : EC1()
|
||||
|
||||
val x1: Any = <!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>object<!> : EI1 {}
|
||||
val x2: Any = <!NON_EXTERNAL_TYPE_EXTENDS_EXTERNAL_TYPE!>object<!> : EC1() {}
|
||||
@@ -0,0 +1,92 @@
|
||||
package
|
||||
|
||||
public val x1: kotlin.Any
|
||||
public val x2: kotlin.Any
|
||||
|
||||
public open class C1 {
|
||||
public constructor C1()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C3 : EI1 {
|
||||
public constructor C3()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class C4 : EI1, EC1 {
|
||||
public constructor C4()
|
||||
invisible_fake final override /*2*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*2*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open external class EC1 {
|
||||
public constructor EC1()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final external class EC2 : C1 {
|
||||
public constructor EC2()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final external class EC3 : I1, C1 {
|
||||
public constructor EC3()
|
||||
invisible_fake final override /*2*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*2*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public external interface EI1 : I1 {
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface I1 {
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface I2 : EI1 {
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public object O1 : EC1 {
|
||||
private constructor O1()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var _hashCode: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var typeInfo: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user