FIR checker: report PROPERTY_AS_OPERATOR
This commit is contained in:
committed by
Mikhail Glukhikh
parent
4915d8dda3
commit
05fbed68e2
+32
-7
@@ -73,19 +73,44 @@ class Arifm() {
|
||||
operator fun invoke(i: Int) {}
|
||||
}
|
||||
|
||||
class Contains() {
|
||||
operator fun invoke(i: Int): Boolean = true
|
||||
}
|
||||
|
||||
class Getter() {
|
||||
operator fun invoke(i: Int): Int = 1
|
||||
}
|
||||
|
||||
class Setter() {
|
||||
operator fun invoke(i: Int, j: Int) {}
|
||||
}
|
||||
|
||||
class Unary<B>() {
|
||||
operator fun invoke(): B = TODO()
|
||||
}
|
||||
|
||||
class B() {
|
||||
val plus = Arifm()
|
||||
val minus = Arifm()
|
||||
val compareTo = Comp()
|
||||
val contains = Contains()
|
||||
val get = Getter()
|
||||
val set = Setter()
|
||||
val unaryPlus = Unary<B>()
|
||||
}
|
||||
|
||||
fun case3() {
|
||||
var b = B()
|
||||
b + 5
|
||||
b - 5
|
||||
b < 5
|
||||
b >= 5
|
||||
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
|
||||
}
|
||||
|
||||
// FILE: TestCase4.kt
|
||||
/*
|
||||
* TESTCASE NUMBER: 4
|
||||
@@ -102,8 +127,8 @@ class B(val minusAssign: Assign = Assign()) {
|
||||
|
||||
fun case3() {
|
||||
var b = B()
|
||||
b += 2
|
||||
b -= 3
|
||||
b <!PROPERTY_AS_OPERATOR!>+=<!> 2
|
||||
b <!PROPERTY_AS_OPERATOR!>-=<!> 3
|
||||
}
|
||||
|
||||
// FILE: TestCase5.kt
|
||||
@@ -142,7 +167,7 @@ class B(var a: Int = 0) {
|
||||
val plus :E =TODO()
|
||||
|
||||
fun foo(b: B){
|
||||
this + 1
|
||||
this <!PROPERTY_AS_OPERATOR!>+<!> 1
|
||||
}
|
||||
|
||||
operator fun invoke(value: Int) = B()
|
||||
|
||||
+25
@@ -82,10 +82,30 @@ class Arifm() {
|
||||
operator fun invoke(i: Int) {}
|
||||
}
|
||||
|
||||
class Contains() {
|
||||
operator fun invoke(i: Int): Boolean = true
|
||||
}
|
||||
|
||||
class Getter() {
|
||||
operator fun invoke(i: Int): Int = 1
|
||||
}
|
||||
|
||||
class Setter() {
|
||||
operator fun invoke(i: Int, j: Int) {}
|
||||
}
|
||||
|
||||
class Unary<B>() {
|
||||
operator fun invoke(): B = TODO()
|
||||
}
|
||||
|
||||
class B() {
|
||||
val plus = Arifm()
|
||||
val minus = Arifm()
|
||||
val compareTo = Comp()
|
||||
val contains = Contains()
|
||||
val get = Getter()
|
||||
val set = Setter()
|
||||
val unaryPlus = Unary<B>()
|
||||
}
|
||||
|
||||
fun case3() {
|
||||
@@ -94,7 +114,12 @@ fun case3() {
|
||||
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
|
||||
}
|
||||
|
||||
// FILE: TestCase4.kt
|
||||
/*
|
||||
* TESTCASE NUMBER: 4
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ class B() {
|
||||
fun case7(){
|
||||
var b =B()
|
||||
<!ASSIGN_OPERATOR_AMBIGUITY!>b+=1<!> //ASSIGN_OPERATOR_AMBIGUITY
|
||||
this += 1 //ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT, PROPERTY_AS_OPERATOR
|
||||
this <!PROPERTY_AS_OPERATOR!>+=<!> 1 //ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT, PROPERTY_AS_OPERATOR
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@ class Case1() {
|
||||
fun foo(e: E) {
|
||||
|
||||
if (e.plus != null) {
|
||||
run { e + 1 }
|
||||
run { e <!PROPERTY_AS_OPERATOR!>+<!> 1 }
|
||||
|
||||
/*
|
||||
[PROPERTY_AS_OPERATOR] (ok)
|
||||
@@ -22,7 +22,7 @@ class Case1() {
|
||||
[UNSAFE_OPERATOR_CALL] (nok)
|
||||
Operator call corresponds to a dot-qualified call 'e.plus(1)' which is not allowed on a nullable receiver 'e'.
|
||||
*/
|
||||
e + 1
|
||||
e <!PROPERTY_AS_OPERATOR!>+<!> 1
|
||||
|
||||
e.plus.invoke(1) //ok
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user