DelegationSpecifier resolve depends on expected type (supertype)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package override
|
||||
|
||||
trait T {
|
||||
fun foo()
|
||||
val v : Int
|
||||
}
|
||||
|
||||
open class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>Br<!>(t : T) : T {
|
||||
|
||||
}
|
||||
|
||||
class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>Br3<!>(t : T) : Br(t) {
|
||||
|
||||
}
|
||||
|
||||
open class Br1(t : T) : T by t {
|
||||
|
||||
}
|
||||
|
||||
class Br2(t : T) : Br1(t) {
|
||||
|
||||
}
|
||||
|
||||
trait G<T> {
|
||||
fun foo(t : T) : T
|
||||
}
|
||||
|
||||
class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>GC<!>() : G<Int> {
|
||||
|
||||
}
|
||||
|
||||
open class GC1(g : G<Int>) : G<Int> by g {
|
||||
|
||||
}
|
||||
|
||||
open class GC2(g : G<Int>) : GC1(g) {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
trait A<T> {
|
||||
fun foo(): Int
|
||||
}
|
||||
|
||||
class AImpl<T>: A<T> {
|
||||
override fun foo() = 42
|
||||
}
|
||||
|
||||
class B : A<Int> by AImpl()
|
||||
|
||||
fun <T> bar(): A<T> = AImpl()
|
||||
|
||||
class C : A<Int> by bar()
|
||||
|
||||
fun <T> baz(f: (T) -> T): A<T> = AImpl()
|
||||
|
||||
class D : A<Int> by baz({ it + 1 })
|
||||
|
||||
fun <T> boo(t: T): A<T> = AImpl()
|
||||
|
||||
class E : A<Int> by <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>boo<!>("")
|
||||
|
||||
class F : A<Int> by <!TYPE_MISMATCH!>AImpl<String>()<!>
|
||||
@@ -0,0 +1,15 @@
|
||||
open class Foo() {
|
||||
|
||||
}
|
||||
|
||||
class Barrr() : <!DELEGATION_NOT_TO_TRAIT!>Foo<!> by Foo() {}
|
||||
|
||||
trait T {}
|
||||
|
||||
class Br(t : T) : T by t {}
|
||||
|
||||
<!OPEN_MODIFIER_IN_ENUM!>open<!> enum class EN() {
|
||||
A
|
||||
}
|
||||
|
||||
class Test2(e : EN) : <!DELEGATION_NOT_TO_TRAIT!>EN<!> by e {}
|
||||
@@ -0,0 +1,3 @@
|
||||
class TestIface(r : Runnable) : Runnable by r {}
|
||||
|
||||
class TestObject(o : <!PLATFORM_CLASS_MAPPED_TO_KOTLIN!>Object<!>) : <!PLATFORM_CLASS_MAPPED_TO_KOTLIN, DELEGATION_NOT_TO_TRAIT!>Object<!> by o {}
|
||||
@@ -0,0 +1,18 @@
|
||||
// !DIAGNOSTICS: -CONFLICTING_JVM_DECLARATIONS
|
||||
trait One {
|
||||
public fun foo(): Any?
|
||||
}
|
||||
trait Two {
|
||||
public fun foo(): String?
|
||||
}
|
||||
|
||||
trait Three {
|
||||
public fun foo(): String
|
||||
}
|
||||
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test123<!>(val v1: One, val v2: Two, val v3: Three) : One by v1, Two by v2, Three by v3 { }
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test132<!>(val v1: One, val v2: Two, val v3: Three) : One by v1, Three by v3, Two by v2 { }
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test312<!>(val v1: One, val v2: Two, val v3: Three) : Three by v3, One by v1, Two by v2 { }
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test321<!>(val v1: One, val v2: Two, val v3: Three) : Three by v3, Two by v2, One by v1 { }
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test231<!>(val v1: One, val v2: Two, val v3: Three) : Two by v2, Three by v3, One by v1 { }
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED, MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test213<!>(val v1: One, val v2: Two, val v3: Three) : Two by v2, One by v1, Three by v3 { }
|
||||
@@ -0,0 +1,12 @@
|
||||
trait A {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
open class B(a: A) : A by a
|
||||
|
||||
class C(a: A): B(a), A {
|
||||
}
|
||||
|
||||
fun b(c: C) {
|
||||
c.foo();
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// !DIAGNOSTICS: -CONFLICTING_JVM_DECLARATIONS
|
||||
trait One {
|
||||
public open fun foo() : Int
|
||||
private fun boo() = 10
|
||||
}
|
||||
trait Two {
|
||||
public open fun foo() : Int
|
||||
}
|
||||
|
||||
trait OneImpl : One {
|
||||
public override fun foo() = 1
|
||||
}
|
||||
trait TwoImpl : Two {
|
||||
public override fun foo() = 2
|
||||
}
|
||||
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test1<!>() : TwoImpl, OneImpl {}
|
||||
class Test2(a : One) : One by a, Two {}
|
||||
class <!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>Test3<!>(a : One, b : Two) : Two by b, One by a {}
|
||||
@@ -0,0 +1,10 @@
|
||||
trait A {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
trait B : A {}
|
||||
|
||||
class C(b : B) : B by b {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user