[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,14 @@
class Foo {
operator fun plus(other: Foo): Foo = this
}
fun test_1() {
val f1 = Foo()
val f2 = Foo()
val f3 = f1 + f2
}
fun test_2() {
var f = Foo()
f += Foo()
}
@@ -0,0 +1,20 @@
FILE: plus.kt
public final class Foo : R|kotlin/Any| {
public constructor(): R|Foo| {
super<R|kotlin/Any|>()
}
public final operator fun plus(other: R|Foo|): R|Foo| {
^plus this@R|/Foo|
}
}
public final fun test_1(): R|kotlin/Unit| {
lval f1: R|Foo| = R|/Foo.Foo|()
lval f2: R|Foo| = R|/Foo.Foo|()
lval f3: R|Foo| = R|<local>/f1|.R|/Foo.plus|(R|<local>/f2|)
}
public final fun test_2(): R|kotlin/Unit| {
lvar f: R|Foo| = R|/Foo.Foo|()
R|<local>/f| = R|<local>/f|.R|/Foo.plus|(R|/Foo.Foo|())
}
@@ -0,0 +1,9 @@
class Foo {
operator fun plus(f: Foo): Foo {}
operator fun plusAssign(f: Foo) {}
}
fun test() {
var f = Foo()
<!ASSIGN_OPERATOR_AMBIGUITY, ASSIGN_OPERATOR_AMBIGUITY, ASSIGN_OPERATOR_AMBIGUITY!>f += f<!>
}
@@ -0,0 +1,17 @@
FILE: plusAndPlusAssign.kt
public final class Foo : R|kotlin/Any| {
public constructor(): R|Foo| {
super<R|kotlin/Any|>()
}
public final operator fun plus(f: R|Foo|): R|Foo| {
}
public final operator fun plusAssign(f: R|Foo|): R|kotlin/Unit| {
}
}
public final fun test(): R|kotlin/Unit| {
lvar f: R|Foo| = R|/Foo.Foo|()
ERROR_EXPR(Operator overload ambiguity. Compatible candidates: [/Foo.plus, /Foo.plusAssign])
}
@@ -0,0 +1,22 @@
operator fun Foo.plusAssign(x: Any) {}
class Foo {
operator fun plusAssign(x: Foo) {}
operator fun plusAssign(x: String) {}
}
fun test_1() {
val f = Foo()
f <!UNRESOLVED_REFERENCE!>+<!> f
}
fun test_2() {
val f = Foo()
f += f
}
fun test_3(f: Foo) {
f += f
f += ""
f += 1
}
@@ -0,0 +1,28 @@
FILE: plusAssign.kt
public final operator fun R|Foo|.plusAssign(x: R|kotlin/Any|): R|kotlin/Unit| {
}
public final class Foo : R|kotlin/Any| {
public constructor(): R|Foo| {
super<R|kotlin/Any|>()
}
public final operator fun plusAssign(x: R|Foo|): R|kotlin/Unit| {
}
public final operator fun plusAssign(x: R|kotlin/String|): R|kotlin/Unit| {
}
}
public final fun test_1(): R|kotlin/Unit| {
lval f: R|Foo| = R|/Foo.Foo|()
R|<local>/f|.<Unresolved name: plus>#(R|<local>/f|)
}
public final fun test_2(): R|kotlin/Unit| {
lval f: R|Foo| = R|/Foo.Foo|()
R|<local>/f|.R|/Foo.plusAssign|(R|<local>/f|)
}
public final fun test_3(f: R|Foo|): R|kotlin/Unit| {
R|<local>/f|.R|/Foo.plusAssign|(R|<local>/f|)
R|<local>/f|.R|/Foo.plusAssign|(String())
R|<local>/f|.R|/plusAssign|(Int(1))
}