[FIR-TEST] Move analysis tests to separate module

This commit is contained in:
Dmitriy Novozhilov
2020-03-18 15:10:46 +03:00
parent 3a479d5d16
commit cc07ae96b3
1477 changed files with 1001 additions and 980 deletions
@@ -0,0 +1,47 @@
class GenericTest {
class A<T>
class B<T> {
val memberVal: A<T> = A()
fun memberFun(): A<T> = A()
}
val <T> B<T>.extensionVal: A<T>
get() = A()
fun <T> B<T>.extensionFun(): A<T> = A()
fun test_1() {
val memberValRef = B<*>::memberVal
val memberFunRef = B<*>::memberFun
}
fun test_2() {
val extensionValRef = <!UNRESOLVED_REFERENCE!>B<*>::extensionVal<!>
val extensionFunRef = <!UNRESOLVED_REFERENCE!>B<*>::extensionFun<!>
}
}
class NoGenericTest {
class A
class B {
val memberVal: A = A()
fun memberFun(): A = A()
}
val B.extensionVal: A
get() = A()
fun B.extensionFun(): A = A()
fun test_1() {
val extensionValRef = <!UNRESOLVED_REFERENCE!>B::extensionVal<!>
val extensionFunRef = <!UNRESOLVED_REFERENCE!>B::extensionFun<!>
}
fun test_2() {
val memberValRef = B::memberVal
val memberFunRef = B::memberFun
}
}
@@ -0,0 +1,93 @@
FILE: referenceToExtension.kt
public final class GenericTest : R|kotlin/Any| {
public constructor(): R|GenericTest| {
super<R|kotlin/Any|>()
}
public final class A<T> : R|kotlin/Any| {
public constructor<T>(): R|GenericTest.A<T>| {
super<R|kotlin/Any|>()
}
}
public final class B<T> : R|kotlin/Any| {
public constructor<T>(): R|GenericTest.B<T>| {
super<R|kotlin/Any|>()
}
public final val memberVal: R|GenericTest.A<T>| = R|/GenericTest.A.A|<R|T|>()
public get(): R|GenericTest.A<T>|
public final fun memberFun(): R|GenericTest.A<T>| {
^memberFun R|/GenericTest.A.A|<R|T|>()
}
}
public final val <T> R|GenericTest.B<T>|.extensionVal: R|GenericTest.A<T>|
public get(): R|GenericTest.A<T>| {
^ R|/GenericTest.A.A|<R|T|>()
}
public final fun <T> R|GenericTest.B<T>|.extensionFun(): R|GenericTest.A<T>| {
^extensionFun R|/GenericTest.A.A|<R|T|>()
}
public final fun test_1(): R|kotlin/Unit| {
lval memberValRef: R|kotlin/reflect/KProperty1<GenericTest.B<*>, GenericTest.A<kotlin/Any?>>| = Q|GenericTest.B|::R|FakeOverride</GenericTest.B.memberVal: R|GenericTest.A<kotlin/Any?>|>|
lval memberFunRef: R|kotlin/reflect/KFunction1<GenericTest.B<*>, GenericTest.A<kotlin/Any?>>| = Q|GenericTest.B|::R|FakeOverride</GenericTest.B.memberFun: R|GenericTest.A<kotlin/Any?>|>|
}
public final fun test_2(): R|kotlin/Unit| {
lval extensionValRef: <ERROR TYPE REF: No result type for initializer> = Q|GenericTest.B|::<Unresolved name: extensionVal>#
lval extensionFunRef: <ERROR TYPE REF: No result type for initializer> = Q|GenericTest.B|::<Unresolved name: extensionFun>#
}
}
public final class NoGenericTest : R|kotlin/Any| {
public constructor(): R|NoGenericTest| {
super<R|kotlin/Any|>()
}
public final class A : R|kotlin/Any| {
public constructor(): R|NoGenericTest.A| {
super<R|kotlin/Any|>()
}
}
public final class B : R|kotlin/Any| {
public constructor(): R|NoGenericTest.B| {
super<R|kotlin/Any|>()
}
public final val memberVal: R|NoGenericTest.A| = R|/NoGenericTest.A.A|()
public get(): R|NoGenericTest.A|
public final fun memberFun(): R|NoGenericTest.A| {
^memberFun R|/NoGenericTest.A.A|()
}
}
public final val R|NoGenericTest.B|.extensionVal: R|NoGenericTest.A|
public get(): R|NoGenericTest.A| {
^ R|/NoGenericTest.A.A|()
}
public final fun R|NoGenericTest.B|.extensionFun(): R|NoGenericTest.A| {
^extensionFun R|/NoGenericTest.A.A|()
}
public final fun test_1(): R|kotlin/Unit| {
lval extensionValRef: <ERROR TYPE REF: No result type for initializer> = Q|NoGenericTest.B|::<Unresolved name: extensionVal>#
lval extensionFunRef: <ERROR TYPE REF: No result type for initializer> = Q|NoGenericTest.B|::<Unresolved name: extensionFun>#
}
public final fun test_2(): R|kotlin/Unit| {
lval memberValRef: R|kotlin/reflect/KProperty1<NoGenericTest.B, NoGenericTest.A>| = Q|NoGenericTest.B|::R|/NoGenericTest.B.memberVal|
lval memberFunRef: R|kotlin/reflect/KFunction1<NoGenericTest.B, NoGenericTest.A>| = Q|NoGenericTest.B|::R|/NoGenericTest.B.memberFun|
}
}
@@ -0,0 +1,3 @@
fun foo() = 1
fun bar() = foo()
@@ -0,0 +1,7 @@
FILE: simple.kt
public final fun foo(): R|kotlin/Int| {
^foo Int(1)
}
public final fun bar(): R|kotlin/Int| {
^bar R|/foo|()
}
@@ -0,0 +1,9 @@
open class A {
open fun foo() {}
}
class B : A() {
fun bar() {
foo()
}
}
@@ -0,0 +1,20 @@
FILE: superMember.kt
public open class A : R|kotlin/Any| {
public constructor(): R|A| {
super<R|kotlin/Any|>()
}
public open fun foo(): R|kotlin/Unit| {
}
}
public final class B : R|A| {
public constructor(): R|B| {
super<R|A|>()
}
public final fun bar(): R|kotlin/Unit| {
this@R|/B|.R|/A.foo|()
}
}