FIR: use Java 8 rules in not implemented checker

This commit is contained in:
Mikhail Glukhikh
2021-04-06 09:47:02 +03:00
parent 5de8401494
commit 84ccf7bbb1
19 changed files with 171 additions and 53 deletions
@@ -8,11 +8,11 @@ interface IRight {
fun foo() {}
}
class CDerived : ALeft(), IRight
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class CDerived<!> : ALeft(), IRight
abstract class CAbstract : ALeft(), IRight
class CDerivedFromAbstract : CAbstract()
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class CDerivedFromAbstract<!> : CAbstract()
interface ILeft {
fun foo()
@@ -21,10 +21,10 @@ interface ILeft {
abstract class AILeft : ILeft
// Should be ERROR
class AILeftImpl : AILeft(), IRight
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class AILeftImpl<!> : AILeft(), IRight
// Should be ERROR
class RightLeft : ILeft, IRight
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class RightLeft<!> : ILeft, IRight
interface IBase {
fun foo()
@@ -8,11 +8,11 @@ interface IRight {
fun foo() {}
}
class CDerived : ALeft(), IRight
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class CDerived<!> : ALeft(), IRight
abstract class CAbstract : ALeft(), IRight
class CDerivedFromAbstract : CAbstract()
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class CDerivedFromAbstract<!> : CAbstract()
interface ILeft {
fun foo()
@@ -21,10 +21,10 @@ interface ILeft {
abstract class AILeft : ILeft
// Should be ERROR
class AILeftImpl : AILeft(), IRight
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class AILeftImpl<!> : AILeft(), IRight
// Should be ERROR
class RightLeft : ILeft, IRight
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class RightLeft<!> : ILeft, IRight
interface IBase {
fun foo()
@@ -8,6 +8,6 @@ interface IRight {
interface IDerived : ILeft, IRight
class CDerived : ILeft, IRight
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class CDerived<!> : ILeft, IRight
abstract class ADerived : ILeft, IRight
@@ -8,11 +8,11 @@ interface B {
open class D: B
open class C: D(), A
open <!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class C<!>: D(), A
// ------------
class Test: Impl(), CProvider
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED!>class Test<!>: Impl(), CProvider
open class CC
@@ -1,18 +0,0 @@
interface A {
fun foo() {}
}
interface B : A {
abstract override fun foo()
}
interface C : A {
abstract override fun foo()
}
interface D : A {
override fun foo() = super.foo()
}
// Fake override Z#foo should be open
class Z : B, C, D
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface A {
fun foo() {}
}
@@ -1,13 +0,0 @@
// FILE: JavaInterface.java
interface JavaInterface {
void foo(int javaName);
}
// FILE: kotlin.kt
interface KotlinTrait {
public fun foo(someOtherName: Int) {}
}
class BothTraitsSubclass : JavaInterface, KotlinTrait
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: JavaInterface.java
interface JavaInterface {