blob: abbcd0ed94a2da3b39524647d8aeea421d16d24a [file]
// RUN_PIPELINE_TILL: FRONTEND
package lvalue_assignment
open class B() {
var b: Int = 2
val c: Int = 34
}
class C() : B() {
var x = 4
fun foo(c: C) {
this.x = 34
this.b = 123
super.b = 23
this.<!VAL_REASSIGNMENT!>c<!> = 34
super.<!VAL_REASSIGNMENT!>c<!> = 3535 //repeat for 'c'
<!VARIABLE_EXPECTED!>getInt()<!> = 12
}
fun foo1(c: C) {
super.<!VAL_REASSIGNMENT!>c<!> = 34
}
fun bar(c: C) {
<!VARIABLE_EXPECTED!>this<!> = c //should be an error
}
}
fun getInt() = 0
class D() {
inner class B() {
fun foo() {
<!VARIABLE_EXPECTED!>this@D<!> = D()
}
}
}
fun foo(): Unit {}
fun cannotBe() {
var i: Int = 5
<!UNRESOLVED_REFERENCE!>z<!> = 30;
<!VARIABLE_EXPECTED!>""<!> = "";
<!VARIABLE_EXPECTED!>foo()<!> = Unit;
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(<!VARIABLE_EXPECTED!>i <!USELESS_CAST!>as Int<!><!>)<!> = 34
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(<!USELESS_IS_CHECK, VARIABLE_EXPECTED!>i is Int<!>)<!> = false
<!VARIABLE_EXPECTED!>A()<!> = A()
<!VARIABLE_EXPECTED!>5<!> = 34
}
@Retention(AnnotationRetention.SOURCE)
@Target(AnnotationTarget.EXPRESSION)
annotation class Ann
fun canBe(i0: Int, j: Int) {
var i = i0
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(label@ i)<!> = 34
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(label@ <!VAL_REASSIGNMENT!>j<!>)<!> = 34 //repeat for j
val a = A()
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(l@ a.a)<!> = 3894
@Ann
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>l@ (i)<!> = 123
}
fun canBe2(j: Int) {
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(label@ <!VAL_REASSIGNMENT!>j<!>)<!> = 34
}
class A() {
var a: Int = 3
}
class Test() {
fun testIllegalValues() {
<!VARIABLE_EXPECTED!>1<!> += 23
(l@ 1) <!UNRESOLVED_REFERENCE!>+=<!> 23
<!VARIABLE_EXPECTED!>getInt()<!> += 343
(f@ getInt()) <!UNRESOLVED_REFERENCE!>+=<!> 343
<!VARIABLE_EXPECTED!>1<!>++
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(r@ <!VARIABLE_EXPECTED!>1<!>)<!>--
<!VARIABLE_EXPECTED!>getInt()<!>++
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(m@ <!VARIABLE_EXPECTED!>getInt()<!>)<!>--
++<!VARIABLE_EXPECTED!>2<!>
--<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(r@ <!VARIABLE_EXPECTED!>2<!>)<!>
<!VARIABLE_EXPECTED!>this<!><!UNRESOLVED_REFERENCE!>++<!>
var s : String = "r"
s += "ss"
s += this
s += (a@ 2)
@Ann
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>l@ (<!VARIABLE_EXPECTED!>1<!>)<!> = 123
}
fun testIllegalTypeRef(): Any {
<!VARIABLE_EXPECTED!>Char<!>=
return ""
}
fun testIncompleteSyntax() {
val s = "s"
<!UNRESOLVED_REFERENCE!>++<!><!VARIABLE_EXPECTED!>s<!>.<!SYNTAX!><!>
}
fun testVariables() {
var a: Int = 34
val b: Int = 34
a += 34
(l@ a) <!UNRESOLVED_REFERENCE!>+=<!> 34
<!VAL_REASSIGNMENT!>b<!> += 34
a++
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(@Ann l@ a)<!>--
<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(a)<!>++
--a
++<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(@Ann l@ a)<!>
--<!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(a)<!>
}
fun testVariables1() {
val b: Int = 34
(l@ b) <!UNRESOLVED_REFERENCE!>+=<!> 34
//repeat for b
(b) <!UNRESOLVED_REFERENCE!>+=<!> 3
}
fun testArrays(a: Array<Int>, ab: Ab) {
a[3] = 4
a[4]++
a[6] += 43
@Ann
a[7] = 7
(@Ann l@ (a))[8] = 8
ab.getArray()[54] = 23
ab.getArray()[54]++
(f@ a)[3] = 4
this<!NO_SET_METHOD!>[54]<!> = 34
}
}
fun Array<Int>.checkThis() {
this[45] = 34
this[352]++
this[35] += 234
}
abstract class Ab {
abstract fun getArray() : Array<Int>
}
/* GENERATED_FIR_TAGS: additiveExpression, annotationDeclaration, asExpression, assignment, classDeclaration,
funWithExtensionReceiver, functionDeclaration, incrementDecrementExpression, inner, integerLiteral, isExpression,
localProperty, primaryConstructor, propertyDeclaration, stringLiteral, superExpression, thisExpression */