[FE] Stop ignoring ABSTRACT_MEMBER_NOT_IMPLEMENTED for expect classes
^KT-59739 Fixed Review: https://jetbrains.team/p/kt/reviews/11038/timeline
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
// WITH_STDLIB
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
interface B {
|
||||
override fun toString(): String
|
||||
}
|
||||
|
||||
expect value <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C<!>(val s: String) : B
|
||||
|
||||
expect value <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class D<!>(val s: String) : B
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
@JvmInline
|
||||
actual value class C(actual val s: String) : B {
|
||||
override fun toString(): String = s
|
||||
}
|
||||
|
||||
@JvmInline
|
||||
actual value class D(actual val s: String) : B
|
||||
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// WITH_STDLIB
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
interface Base {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object Implementation<!> : Base
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
abstract class RealImplementation : Base {
|
||||
override fun foo() {}
|
||||
}
|
||||
|
||||
actual object Implementation : RealImplementation(), Base
|
||||
+1
-2
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
@@ -6,7 +5,7 @@ interface Base {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect object Implementation : Base
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED, ABSTRACT_MEMBER_NOT_IMPLEMENTED{JVM}!>object Implementation<!> : Base
|
||||
|
||||
// MODULE: m1-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
interface Foo {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class ImplicitFoo<!> : Foo
|
||||
|
||||
expect class ExplicitFoo : Foo {
|
||||
override fun foo()
|
||||
}
|
||||
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class ImplicitFooCheck<!> : Foo
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
actual class ImplicitFoo : Foo {
|
||||
override fun foo() {}
|
||||
}
|
||||
|
||||
actual class ExplicitFoo : Foo {
|
||||
actual override fun foo() {}
|
||||
}
|
||||
|
||||
actual <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class ImplicitFooCheck<!> : Foo
|
||||
+2
-3
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
// MODULE: m1-common
|
||||
// FILE: common.kt
|
||||
|
||||
@@ -6,13 +5,13 @@ interface Foo {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
expect class ImplicitFoo : Foo
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED, ABSTRACT_MEMBER_NOT_IMPLEMENTED{JVM}!>class ImplicitFoo<!> : Foo
|
||||
|
||||
expect class ExplicitFoo : Foo {
|
||||
override fun foo()
|
||||
}
|
||||
|
||||
expect class ImplicitFooCheck : Foo
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED, ABSTRACT_MEMBER_NOT_IMPLEMENTED{JVM}!>class ImplicitFooCheck<!> : Foo
|
||||
|
||||
// MODULE: m2-jvm()()(m1-common)
|
||||
// FILE: jvm.kt
|
||||
|
||||
+16
-6
@@ -4,9 +4,9 @@
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect abstract class BaseA() {
|
||||
abstract fun foo()
|
||||
}<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect open class BaseAImpl() : BaseA<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect open <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class BaseAImpl<!>() : BaseA<!>
|
||||
|
||||
class DerivedA1 : BaseAImpl()
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class DerivedA1<!> : BaseAImpl()
|
||||
class DerivedA2 : BaseAImpl() {
|
||||
override fun foo() = super.<!ABSTRACT_SUPER_CALL!>foo<!>()
|
||||
}
|
||||
@@ -16,9 +16,9 @@ class DerivedA2 : BaseAImpl() {
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect interface BaseB {
|
||||
fun foo()
|
||||
}<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect open class BaseBImpl() : BaseB<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class BaseBImpl<!>() : BaseB<!>
|
||||
|
||||
class DerivedB1 : BaseBImpl()
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class DerivedB1<!> : BaseBImpl()
|
||||
class DerivedB2 : BaseBImpl() {
|
||||
override fun foo() = super.<!ABSTRACT_SUPER_CALL!>foo<!>()
|
||||
}
|
||||
@@ -30,7 +30,7 @@ class DerivedB2 : BaseBImpl() {
|
||||
}<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect abstract class BaseCImpl() : BaseC<!>
|
||||
|
||||
class DerivedC1 : BaseCImpl()
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class DerivedC1<!> : BaseCImpl()
|
||||
class DerivedC2 : BaseCImpl() {
|
||||
override fun foo() = super.<!ABSTRACT_SUPER_CALL!>foo<!>()
|
||||
}
|
||||
@@ -58,4 +58,14 @@ sealed class BaseEImpl() : BaseE {
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect interface BaseF {
|
||||
fun foo()
|
||||
}<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect class BaseFImpl() : BaseF<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class BaseFImpl<!>() : BaseF<!>
|
||||
|
||||
|
||||
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect abstract class BaseG() {
|
||||
abstract fun foo()
|
||||
}<!>
|
||||
<!NO_ACTUAL_FOR_EXPECT!>expect open class BaseGImpl() : BaseG {
|
||||
override fun foo()
|
||||
}<!>
|
||||
class DerivedG1 : BaseGImpl()
|
||||
|
||||
+14
-4
@@ -4,9 +4,9 @@
|
||||
expect abstract class BaseA() {
|
||||
abstract fun foo()
|
||||
}
|
||||
expect open class BaseAImpl() : BaseA
|
||||
expect open <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class BaseAImpl<!>() : BaseA
|
||||
|
||||
class DerivedA1 : BaseAImpl()
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class DerivedA1<!> : BaseAImpl()
|
||||
class DerivedA2 : BaseAImpl() {
|
||||
override fun foo() = super.foo()
|
||||
}
|
||||
@@ -16,7 +16,7 @@ class DerivedA2 : BaseAImpl() {
|
||||
expect interface BaseB {
|
||||
fun foo()
|
||||
}
|
||||
expect open class BaseBImpl() : BaseB
|
||||
expect open <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class BaseBImpl<!>() : BaseB
|
||||
|
||||
class DerivedB1 : BaseBImpl()
|
||||
class DerivedB2 : BaseBImpl() {
|
||||
@@ -58,4 +58,14 @@ sealed class BaseEImpl() : BaseE {
|
||||
expect interface BaseF {
|
||||
fun foo()
|
||||
}
|
||||
expect class BaseFImpl() : BaseF
|
||||
expect <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class BaseFImpl<!>() : BaseF
|
||||
|
||||
|
||||
|
||||
expect abstract class BaseG() {
|
||||
abstract fun foo()
|
||||
}
|
||||
expect open class BaseGImpl() : BaseG {
|
||||
override fun foo()
|
||||
}
|
||||
class DerivedG1 : BaseGImpl()
|
||||
|
||||
+24
@@ -93,6 +93,22 @@ public final expect class BaseFImpl : BaseF {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public abstract expect class BaseG {
|
||||
public constructor BaseG()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract expect fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open expect class BaseGImpl : BaseG {
|
||||
public constructor BaseGImpl()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open expect override /*1*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class DerivedA1 : BaseAImpl {
|
||||
public constructor DerivedA1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -141,3 +157,11 @@ public final class DerivedC2 : BaseCImpl {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class DerivedG1 : BaseGImpl {
|
||||
public constructor DerivedG1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open expect override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ expect abstract class Base {
|
||||
abstract fun foo()
|
||||
}
|
||||
|
||||
expect class DerivedImplicit : Base
|
||||
expect <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class DerivedImplicit<!> : Base
|
||||
|
||||
expect class DerivedExplicit : Base {
|
||||
override fun foo()
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ expect abstract class Base {
|
||||
abstract fun foo()
|
||||
}
|
||||
|
||||
expect class DerivedImplicit : Base
|
||||
expect <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED, ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED{JVM}!>class DerivedImplicit<!> : Base
|
||||
|
||||
expect class DerivedExplicit : Base {
|
||||
override fun foo()
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ expect class FastArrayList<E> : MutableListEx<E>, RandomAccess {
|
||||
constructor(elements: Collection<E>)
|
||||
|
||||
fun trimToSize()
|
||||
override fun removeRange(fromIndex: Int, toIndex: Int)
|
||||
fun ensureCapacity(minCapacity: Int)
|
||||
override val size: Int
|
||||
override fun isEmpty(): Boolean
|
||||
@@ -66,7 +67,7 @@ public actual open class FastArrayList<E> internal constructor(
|
||||
actual override fun addAll(index: Int, elements: Collection<E>): Boolean = true
|
||||
actual override fun remove(element: E): Boolean = true
|
||||
@Suppress("UNCHECKED_CAST") actual override fun removeAt(index: Int): E = array[0] as E
|
||||
override fun removeRange(fromIndex: Int, toIndex: Int) {}
|
||||
actual override fun removeRange(fromIndex: Int, toIndex: Int) {}
|
||||
override fun setAll(index: Int, elements: FastArrayList<E>, offset: Int, size: Int) {}
|
||||
override fun addAll(elements: FastArrayList<E>, offset: Int, size: Int) {}
|
||||
actual override fun clear() {}
|
||||
|
||||
Reference in New Issue
Block a user