'operator' checks

This commit is contained in:
Yan Zhulanow
2015-10-12 02:55:45 +03:00
parent dc8e796e49
commit 275f3f8954
30 changed files with 589 additions and 94 deletions
@@ -1,13 +1,12 @@
class MyClass
// In principle it is not correct, MyClass? is not a subtype of MyClass
operator fun MyClass.inc(): MyClass? { return null }
operator fun MyClass.inc(): MyClass { <!UNREACHABLE_CODE!>return<!> null!! }
public fun box() : MyClass? {
var i : MyClass?
var i : MyClass?
i = MyClass()
// type of j can be inferred as MyClass()
var j = <!DEBUG_INFO_SMARTCAST!>i<!>++
<!DEBUG_INFO_SMARTCAST!>j<!>.hashCode()
return i
}
}
@@ -1,7 +1,7 @@
package
public fun box(): MyClass?
public operator fun MyClass.inc(): MyClass?
public operator fun MyClass.inc(): MyClass
public final class MyClass {
public constructor MyClass()
@@ -1,13 +1,12 @@
class MyClass
// In principle it is not correct, MyClass? is not a subtype of MyClass
operator fun MyClass.inc(): MyClass? { return null }
operator fun MyClass.inc(): MyClass { <!UNREACHABLE_CODE!>return<!> null!! }
public fun box() {
var i : MyClass?
var i : MyClass?
i = MyClass()
// Type of j should be inferred as MyClass?
var j = ++<!DEBUG_INFO_SMARTCAST!>i<!>
// j is null so call is unsafe
j<!UNSAFE_CALL!>.<!>hashCode()
}
j.hashCode()
}
@@ -1,7 +1,7 @@
package
public fun box(): kotlin.Unit
public operator fun MyClass.inc(): MyClass?
public operator fun MyClass.inc(): MyClass
public final class MyClass {
public constructor MyClass()