| // LANGUAGE: +ForbidParenthesizedLhsInAssignments |
| // RUN_PIPELINE_TILL: FRONTEND |
| |
| class Foo<T : Any> { |
| fun doSmthng(arg: T) {} |
| var a: T? = null |
| } |
| |
| fun <T : Any> myBuilder(block: Foo<T>.() -> Unit) : Foo<T> = Foo<T>().apply(block) |
| |
| fun main(arg: Any) { |
| val x = 57 |
| val value = myBuilder { |
| doSmthng("one ") |
| run { a; this }.a = 10 |
| a <!NONE_APPLICABLE!>+=<!> 1 |
| this.a = 57 |
| this.<!ILLEGAL_SELECTOR, VARIABLE_EXPECTED!>(a)<!> = 57 |
| a = x |
| <!WRAPPED_LHS_IN_ASSIGNMENT_ERROR!>(a)<!> = x |
| a.<!FUNCTION_CALL_EXPECTED, VARIABLE_EXPECTED!>hashCode<!> = 99 |
| if (arg is String) { |
| a = arg |
| } |
| } |
| println(value.a?.<!NONE_APPLICABLE!>count<!> { <!UNRESOLVED_REFERENCE!>it<!> in 'l' .. 'q' }) |
| } |
| |
| /* GENERATED_FIR_TAGS: assignment, classDeclaration, functionDeclaration, functionalType, ifExpression, integerLiteral, |
| intersectionType, isExpression, lambdaLiteral, localProperty, nullableType, outProjection, propertyDeclaration, |
| rangeExpression, safeCall, smartcast, stringLiteral, thisExpression, typeConstraint, typeParameter, typeWithExtension */ |