[FIR-TEST] Move analysis tests to separate module
This commit is contained in:
@@ -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|())
|
||||
}
|
||||
+9
@@ -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<!>
|
||||
}
|
||||
+17
@@ -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])
|
||||
}
|
||||
+22
@@ -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
|
||||
}
|
||||
+28
@@ -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))
|
||||
}
|
||||
Reference in New Issue
Block a user