[FIR] Revert FirMultipleDefaultsInheritedFromSupertypesChecker
It's possible to write a fix that would prevent false positives with this checker, but the core intuition behind it is invalid. This checker assumes that it's enough to only check direct overriddens, while in reality even simple `Source` override functions are not allowed to contain default values, so they can't be used to make judgements about them. ^KT-59408 Open ^KT-59408 Open ^KT-61095 Fixed ^KT-61165 Fixed ^KT-61029 Fixed
This commit is contained in:
committed by
Space Team
parent
2ce324f1fc
commit
dc9ed5656e
+2
-2
@@ -17,10 +17,10 @@ interface B {
|
||||
fun foo(@An a: @An Int = @An 2)
|
||||
}
|
||||
|
||||
<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE("@An() a: @R|An|() Int = ...")!>class AB1<!> : A, B
|
||||
class AB1 : A, B
|
||||
|
||||
@An
|
||||
class AB2 : A, B {
|
||||
@An
|
||||
override fun foo(<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES("@An() a: @R|An|() Int")!>@An a: @An Int<!>) {}
|
||||
override fun foo(@An a: @An Int) {}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-61095
|
||||
|
||||
package org.example
|
||||
|
||||
interface Base<P> {
|
||||
fun child(props: Int = 10)
|
||||
}
|
||||
|
||||
interface Intermediate<P> : Base<P>
|
||||
|
||||
class Implementation<P>() : Intermediate<P>, Base<P> {
|
||||
override fun child(props: Int) {}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-36188
|
||||
|
||||
interface SomeRandomBase<K> {
|
||||
fun child(props: Int = 20)
|
||||
}
|
||||
|
||||
interface SomeRandomOverride<J> : SomeRandomBase<J>
|
||||
|
||||
open class Keker<P> {
|
||||
open fun child(props: Int = 10) {}
|
||||
}
|
||||
|
||||
class Implementation<P>() : Keker<P>(), SomeRandomOverride<P> {
|
||||
override fun child(props: Int) {}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-36188
|
||||
|
||||
interface SomeRandomBase<K> {
|
||||
fun child(props: Int = 20)
|
||||
}
|
||||
|
||||
interface SomeRandomOverride<J> : SomeRandomBase<J> {
|
||||
override fun child(props: Int) {}
|
||||
}
|
||||
|
||||
open class Keker<P> {
|
||||
open fun child(props: Int = 10) {}
|
||||
}
|
||||
|
||||
class Implementation<P>() : Keker<P>(), SomeRandomOverride<P> {
|
||||
override fun child(props: Int) {}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-36188
|
||||
|
||||
interface SomeRandomBase<K> {
|
||||
fun child(props: Int = 20)
|
||||
}
|
||||
|
||||
interface SomeRandomOverride<J> : SomeRandomBase<J> {
|
||||
override abstract fun child(props: Int)
|
||||
}
|
||||
|
||||
open class Keker<P> {
|
||||
open fun child(props: Int = 10) {}
|
||||
}
|
||||
|
||||
class Implementation<P>() : Keker<P>(), SomeRandomOverride<P> {
|
||||
override fun child(props: Int) {}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// ISSUE: KT-61095
|
||||
|
||||
interface X {
|
||||
fun foo(a : Int = 1) {}
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(a : Int = 1) {}
|
||||
}
|
||||
|
||||
object YImpl : Y
|
||||
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class Z1<!> : X, Y by YImpl {}
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>object Z1O<!> : X, Y by YImpl {}
|
||||
@@ -0,0 +1,14 @@
|
||||
// ISSUE: KT-61095
|
||||
|
||||
interface X {
|
||||
fun foo(a : Int = 1) {}
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(a : Int = 1) {}
|
||||
}
|
||||
|
||||
object YImpl : Y
|
||||
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE, MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE!>class Z1<!> : X, Y by YImpl {}
|
||||
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE, MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE!>object Z1O<!> : X, Y by YImpl {}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
class Z : X, Y {
|
||||
override fun foo(a : Int) {}
|
||||
}
|
||||
|
||||
object ZO : X, Y {
|
||||
override fun foo(a : Int) {}
|
||||
}
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
Vendored
-15
@@ -1,15 +0,0 @@
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
class Z : X, Y {
|
||||
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES!>a : Int<!>) {}
|
||||
}
|
||||
|
||||
object ZO : X, Y {
|
||||
fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>(<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES!>a : Int<!>) {}
|
||||
}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
+1
-1
@@ -11,4 +11,4 @@ interface C {
|
||||
}
|
||||
|
||||
// TODO DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES reported twice
|
||||
<!MULTIPLE_DEFAULTS_INHERITED_FROM_SUPERTYPES_WHEN_NO_EXPLICIT_OVERRIDE!>class Z<!> : A, B(), C
|
||||
class Z : A, B(), C
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Z1<!> : X, Y {} // BUG
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>object Z1O<!> : X, Y {} // BUG
|
||||
Vendored
-1
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
interface X {
|
||||
fun foo(a : Int = 1)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user