[FIR] Disallow operators not on functions
Introduce `NOT_FUNCTION_AS_OPERATOR` and use it instead of `PROPERTY_AS_OPERATOR` ^KT-65881 Fixed Merge-request: KT-MR-14547
This commit is contained in:
committed by
Space Team
parent
df9d59851d
commit
2d4f4b9bb5
+15
-15
@@ -25,7 +25,7 @@ fun case1() {
|
||||
}
|
||||
|
||||
class B() {
|
||||
val p: String by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, PROPERTY_AS_OPERATOR!>Delegate()<!> // DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE expected
|
||||
val p: String by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, NOT_FUNCTION_AS_OPERATOR!>Delegate()<!> // DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE expected
|
||||
}
|
||||
|
||||
class Delegate {
|
||||
@@ -50,7 +50,7 @@ fun case2() {
|
||||
}
|
||||
|
||||
class B() {
|
||||
var p: String by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, PROPERTY_AS_OPERATOR, PROPERTY_AS_OPERATOR!>Delegate()<!> // DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE expected
|
||||
var p: String by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, NOT_FUNCTION_AS_OPERATOR, NOT_FUNCTION_AS_OPERATOR!>Delegate()<!> // DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE expected
|
||||
}
|
||||
|
||||
class Delegate {
|
||||
@@ -109,14 +109,14 @@ class B() {
|
||||
|
||||
fun case3() {
|
||||
var b = B()
|
||||
b <!PROPERTY_AS_OPERATOR!>+<!> 5
|
||||
b <!PROPERTY_AS_OPERATOR!>-<!> 5
|
||||
b <!PROPERTY_AS_OPERATOR!><<!> 5
|
||||
b <!PROPERTY_AS_OPERATOR!>>=<!> 5
|
||||
1 <!PROPERTY_AS_OPERATOR!>in<!> b
|
||||
<!PROPERTY_AS_OPERATOR!>b[2]<!>
|
||||
<!PROPERTY_AS_OPERATOR!>b[3]<!> = 4
|
||||
<!PROPERTY_AS_OPERATOR!>+<!>b
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!>+<!> 5
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!>-<!> 5
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!><<!> 5
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!>>=<!> 5
|
||||
1 <!NOT_FUNCTION_AS_OPERATOR!>in<!> b
|
||||
<!NOT_FUNCTION_AS_OPERATOR!>b[2]<!>
|
||||
<!NOT_FUNCTION_AS_OPERATOR!>b[3]<!> = 4
|
||||
<!NOT_FUNCTION_AS_OPERATOR!>+<!>b
|
||||
}
|
||||
|
||||
// FILE: TestCase4.kt
|
||||
@@ -135,8 +135,8 @@ class B(val minusAssign: Assign = Assign()) {
|
||||
|
||||
fun case3() {
|
||||
var b = B()
|
||||
b <!PROPERTY_AS_OPERATOR!>+=<!> 2
|
||||
b <!PROPERTY_AS_OPERATOR!>-=<!> 3
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!>+=<!> 2
|
||||
b <!NOT_FUNCTION_AS_OPERATOR!>-=<!> 3
|
||||
}
|
||||
|
||||
// FILE: TestCase5.kt
|
||||
@@ -175,7 +175,7 @@ class B(var a: Int = 0) {
|
||||
val plus :E =TODO()
|
||||
|
||||
fun foo(b: B){
|
||||
this <!PROPERTY_AS_OPERATOR!>+<!> 1
|
||||
this <!NOT_FUNCTION_AS_OPERATOR!>+<!> 1
|
||||
}
|
||||
|
||||
operator fun invoke(value: Int) = B()
|
||||
@@ -193,7 +193,7 @@ package testPackCase7
|
||||
|
||||
fun case7 () {
|
||||
val iterable: Iterable = Iterable(Inv('s'))
|
||||
for (i in <!PROPERTY_AS_OPERATOR!>iterable<!>) {
|
||||
for (i in <!NOT_FUNCTION_AS_OPERATOR!>iterable<!>) {
|
||||
println(i)
|
||||
}
|
||||
}
|
||||
@@ -226,7 +226,7 @@ package testPackCase8
|
||||
|
||||
fun case8 () {
|
||||
val iterable: Iterable = Iterable()
|
||||
for (i in <!PROPERTY_AS_OPERATOR!>iterable<!>) {
|
||||
for (i in <!NOT_FUNCTION_AS_OPERATOR!>iterable<!>) {
|
||||
println(i)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ class B() {
|
||||
fun case7(){
|
||||
var b =B()
|
||||
b<!ASSIGN_OPERATOR_AMBIGUITY!>+=<!>1 //ASSIGN_OPERATOR_AMBIGUITY
|
||||
this <!PROPERTY_AS_OPERATOR!>+=<!> 1 //ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT, PROPERTY_AS_OPERATOR
|
||||
this <!NOT_FUNCTION_AS_OPERATOR!>+=<!> 1 //ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT, PROPERTY_AS_OPERATOR
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user