[Analysis API FIR] more tests for KtSymbolDeclarationOverridesProvider

^KT-64108
This commit is contained in:
Dmitrii Gridin
2023-12-08 18:26:29 +01:00
committed by Space Team
parent 64ebec7955
commit e033fe5ba1
19 changed files with 273 additions and 0 deletions
@@ -0,0 +1,14 @@
// IGNORE_FIR
class MyClass {
lateinit var d: IntermediateClass<Int>
val prop = object : IntermediateClass<Int> by d {
override fun isSc<caret>hemeFile(name: CharSequence) = name != "str"
}
}
interface IntermediateClass<SCHEME : Number> : BaseClass<SCHEME, Int> {
}
interface BaseClass<SCHEME : Number, MUTABLE_SCHEME> {
fun isSchemeFile(name: CharSequence) = true
}
@@ -0,0 +1,4 @@
ALL:
BaseClass.isSchemeFile(name: CharSequence): Boolean
DIRECT:
BaseClass.isSchemeFile(name: CharSequence): Boolean
@@ -0,0 +1,4 @@
ALL:
BaseClass.isSchemeFile(name: CharSequence): Boolean
DIRECT:
BaseClass.isSchemeFile(name: CharSequence): Boolean
@@ -0,0 +1,13 @@
class MyClass {
lateinit var d: IntermediateClass<Int>
val prop = object : IntermediateClass<Int> by d {
override fun isSc<caret>hemeFile(name: CharSequence): Boolean = name != "str"
}
}
interface IntermediateClass<SCHEME : Number> : BaseClass<SCHEME, Int> {
}
interface BaseClass<SCHEME : Number, MUTABLE_SCHEME> {
fun isSchemeFile(name: CharSequence): Boolean = true
}
@@ -0,0 +1,5 @@
ALL:
BaseClass.isSchemeFile(name: CharSequence): Boolean
BaseClass.isSchemeFile(name: CharSequence): Boolean
DIRECT:
BaseClass.isSchemeFile(name: CharSequence): Boolean
@@ -0,0 +1,21 @@
// IGNORE_FIR
package second
class MyClass {
val prop = object : B<String> {
override fun foo<caret>(x: String) = Unit
}
}
// FILE: B.kt
interface B<T>: C<T>, D<T>
// FILE: C.kt
interface C<T> {
fun foo(x: T) = Unit
}
// FILE: D.kt
interface D<F> {
fun foo(x: F) = Unit
}
@@ -0,0 +1,20 @@
package second
class MyClass {
val prop = object : B<String> {
override fun foo<caret>(x: String): Unit = Unit
}
}
// FILE: B.kt
interface B<T>: C<T>, D<T>
// FILE: C.kt
interface C<T> {
fun foo(x: T) {}
}
// FILE: D.kt
interface D<F> {
fun foo(x: F) {}
}
@@ -0,0 +1,8 @@
ALL:
C.foo(x: String): Unit
C.foo(x: T): Unit
D.foo(x: T): Unit
C.foo(x: T): Unit
D.foo(x: F): Unit
DIRECT:
C.foo(x: String): Unit
@@ -0,0 +1,12 @@
// IGNORE_FIR
package second
class MyClass {
val prop = object : LazySchemeProcessor<Int, Int>() {
override fun is<caret>SchemeFile(name: CharSequence) = name != "str"
}
}
abstract class LazySchemeProcessor<SCHEME : Number, MUTABLE_SCHEME : SCHEME> {
open fun isSchemeFile(name: CharSequence) = true
}
@@ -0,0 +1,4 @@
ALL:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
DIRECT:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
@@ -0,0 +1,4 @@
ALL:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
DIRECT:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
@@ -0,0 +1,11 @@
package second
class MyClass {
val prop = object : LazySchemeProcessor<Int, Int>() {
override fun is<caret>SchemeFile(name: CharSequence): Boolean = name != "str"
}
}
abstract class LazySchemeProcessor<SCHEME : Number, MUTABLE_SCHEME : SCHEME> {
open fun isSchemeFile(name: CharSequence): Boolean = true
}
@@ -0,0 +1,5 @@
ALL:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean
DIRECT:
LazySchemeProcessor.isSchemeFile(name: CharSequence): Boolean