Add diagnostics to test data from NI

This commit is contained in:
Mikhail Zarechenskiy
2017-11-22 08:50:30 +03:00
parent a71238bf94
commit 8757298994
480 changed files with 1136 additions and 1120 deletions
@@ -3,12 +3,12 @@ fun foo(): String {
var s: String?
s = null
<!DEBUG_INFO_CONSTANT!>s<!>?.length
<!DEBUG_INFO_CONSTANT!>s<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>s<!><!UNSAFE_CALL!>.<!>length
if (<!SENSELESS_COMPARISON!><!DEBUG_INFO_CONSTANT!>s<!> == null<!>) return <!ALWAYS_NULL!>s<!>!!
var t: String? = "y"
if (t == null) t = "x"
var x: Int? = null
if (x == null) <!TYPE_MISMATCH!><!DEBUG_INFO_CONSTANT!>x<!> += null<!>
if (x == null) <!TYPE_MISMATCH!><!OI;DEBUG_INFO_CONSTANT!>x<!> += null<!>
return <!DEBUG_INFO_SMARTCAST!>t<!> + s
}
@@ -16,7 +16,7 @@ fun String?.gav() {}
fun bar(s: String?) {
if (s != null) return
<!DEBUG_INFO_CONSTANT!>s<!>.gav()
<!OI;DEBUG_INFO_CONSTANT!>s<!>.gav()
<!DEBUG_INFO_CONSTANT!>s<!> <!USELESS_CAST!>as? String<!>
<!DEBUG_INFO_CONSTANT!>s<!> <!USELESS_CAST!>as String?<!>
<!ALWAYS_NULL!>s<!> as String
@@ -11,7 +11,7 @@ public class My {
fun test() {
val my = My.create()
if (my == null) {
<!DEBUG_INFO_CONSTANT!>my<!><!UNSAFE_CALL!>.<!>foo()
<!OI;DEBUG_INFO_CONSTANT!>my<!><!OI;UNSAFE_CALL!>.<!>foo()
}
}
@@ -41,7 +41,7 @@ fun f(a: SomeClass?) {
if (aa as? SomeSubClass != null) {
aa = null
// 'aa' cannot be cast to SomeSubClass
<!DEBUG_INFO_CONSTANT!>aa<!><!UNSAFE_CALL!>.<!>hashCode()
<!OI;DEBUG_INFO_CONSTANT!>aa<!><!UNSAFE_CALL!>.<!>hashCode()
aa.<!UNRESOLVED_REFERENCE!>foo<!>
(<!DEBUG_INFO_CONSTANT!>aa<!> as? SomeSubClass)<!UNSAFE_CALL!>.<!>foo
(<!ALWAYS_NULL!>aa<!> as SomeSubClass).foo
@@ -50,7 +50,7 @@ fun f(a: SomeClass?) {
aa = null
if (b != null) {
// 'aa' cannot be cast to SomeSubClass
<!DEBUG_INFO_CONSTANT!>aa<!><!UNSAFE_CALL!>.<!>hashCode()
<!OI;DEBUG_INFO_CONSTANT!>aa<!><!UNSAFE_CALL!>.<!>hashCode()
aa.<!UNRESOLVED_REFERENCE!>foo<!>
(<!DEBUG_INFO_CONSTANT!>aa<!> as? SomeSubClass)<!UNSAFE_CALL!>.<!>foo
(<!ALWAYS_NULL!>aa<!> as SomeSubClass).foo
@@ -16,12 +16,12 @@ fun foo(x : String?, y : String?) {
else {
// y == null but x != y
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!DEBUG_INFO_CONSTANT!>y<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>y<!><!UNSAFE_CALL!>.<!>length
}
if (y == null && x != <!DEBUG_INFO_CONSTANT!>y<!>) {
// y == null but x != y
<!DEBUG_INFO_SMARTCAST!>x<!>.length
<!DEBUG_INFO_CONSTANT!>y<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>y<!><!UNSAFE_CALL!>.<!>length
}
else {
x<!UNSAFE_CALL!>.<!>length
@@ -7,7 +7,7 @@ fun foo(x: String?, y: String?, z: String?, w: String?) {
if (x != null || y != null || (<!DEBUG_INFO_CONSTANT!>x<!> != z && <!DEBUG_INFO_CONSTANT!>y<!> != z))
z<!UNSAFE_CALL!>.<!>length
else
<!DEBUG_INFO_CONSTANT!>z<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>z<!><!UNSAFE_CALL!>.<!>length
if (x == null || y == null || (x != z && y != z))
z<!UNSAFE_CALL!>.<!>length
else
@@ -18,7 +18,7 @@ fun foo(list: StringList, arg: Unstable) {
list.remove(arg.first)
if (arg.first?.isEmpty() ?: false) {
// Should be still resolved to extension, without smart cast or smart cast impossible
list.remove(<!SMARTCAST_IMPOSSIBLE!>arg.first<!>)
list.remove(<!OI;SMARTCAST_IMPOSSIBLE!>arg.first<!>)
}
}
@@ -36,6 +36,6 @@ fun bar(list: BooleanList, arg: UnstableBoolean) {
list.remove(arg.first)
if (arg.first ?: false) {
// Should be still resolved to extension, without smart cast or smart cast impossible
list.remove(<!SMARTCAST_IMPOSSIBLE!>arg.first<!>)
list.remove(<!OI;SMARTCAST_IMPOSSIBLE!>arg.first<!>)
}
}
@@ -33,5 +33,5 @@ fun baz(s: String?, r: String?): String {
fun withNull(s: String?): String {
val t = s <!USELESS_ELVIS_RIGHT_IS_NULL!>?: null<!>
// Error: nullable
return <!TYPE_MISMATCH!>t<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>t<!>
}
@@ -5,7 +5,7 @@ class ExplicitAccessorForAnnotation {
fun foo(): String {
if (tt is String) {
return <!SMARTCAST_IMPOSSIBLE!>tt<!>
return <!NI;TYPE_MISMATCH, SMARTCAST_IMPOSSIBLE!>tt<!>
}
return ""
}
@@ -15,7 +15,7 @@ interface C: A
fun test(a: A, b: B, c: C) {
if (a is B && a is C) {
val d: C = id(<!DEBUG_INFO_SMARTCAST!>a<!>)
val d: C = id(<!OI;DEBUG_INFO_SMARTCAST!>a<!>)
val e: Any = id(a)
val f = id(a)
checkSubtype<A>(f)
@@ -29,7 +29,7 @@ fun test(a: A, b: B, c: C) {
val k = three(a, b, c)
checkSubtype<A>(k)
checkSubtype<B>(<!TYPE_MISMATCH!>k<!>)
val l: Int = <!TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>three(a, b, c)<!>
val l: Int = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>three(a, b, c)<!>
use(d, e, f, g, h, k, l)
}
@@ -39,11 +39,11 @@ fun <T> foo(t: T, <!UNUSED_PARAMETER!>l<!>: MutableList<T>): T = t
fun testErrorMessages(a: A, ml: MutableList<String>) {
if (a is B && a is C) {
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>foo<!>(a, ml)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>foo<!>(a, <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>ml<!>)
}
if(a is C) {
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>foo<!>(a, ml)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>foo<!>(a, <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>ml<!>)
}
}
@@ -17,37 +17,37 @@ interface C {
fun foo(x: Any?) {
if (x is A && x is B) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String?>() }
}
if (x is B && x is A) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String?>() }
}
if (x is A && x is C) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String?>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
}
if (x is C && x is A) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String?>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
}
if (x is A && x is B && x is C) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String?>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
}
if (x is B && x is A && x is C) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String?>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
}
if (x is B && x is C && x is A) {
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { _<String>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!TYPE_MISMATCH!>_<!><String?>() }
<!DEBUG_INFO_SMARTCAST!>x<!>.foo().checkType { <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;TYPE_MISMATCH!>_<!><String?>() }
}
}
@@ -31,8 +31,8 @@ fun test() {
x.foo().checkType { _<CharSequence?>() }
x.baz("")
x.baz(1).checkType { _<Unit>() }
<!SMARTCAST_IMPOSSIBLE!>x<!>.baz(1, 2)
<!OI;SMARTCAST_IMPOSSIBLE!>x<!>.baz(1, 2)
<!SMARTCAST_IMPOSSIBLE!>x<!>.foobar().checkType { _<String>() }
<!OI;SMARTCAST_IMPOSSIBLE!>x<!>.foobar().checkType { _<String>() }
}
}
+1 -1
View File
@@ -10,7 +10,7 @@ class Qwe<T : Any>(val a: T?) {
fun test1(obj: Qwe<*>) {
obj <!UNCHECKED_CAST!>as Qwe<T><!>
check(<!DEBUG_INFO_SMARTCAST!>obj<!>.a)
check(<!OI;DEBUG_INFO_SMARTCAST!>obj<!>.a)
}
fun check(a: T?) {
+1 -1
View File
@@ -7,6 +7,6 @@ fun foo(a: MutableMap<String, String>, x: String?) {
}
fun foo1(a: MutableMap<String, String>, x: String?) {
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>a[x]<!> = x!!
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>a[<!NI;TYPE_MISMATCH!>x<!>]<!> = x!!
a[x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>] = <!DEBUG_INFO_SMARTCAST!>x<!>
}
@@ -13,14 +13,14 @@ val foo: Foo = run {
<!DEBUG_INFO_SMARTCAST!>x<!>
}
val foofoo: Foo = <!TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>run<!> {
val foofoo: Foo = <!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>run<!> {
val x = foo()
if (x == null) throw Exception()
<!DEBUG_INFO_SMARTCAST!>x<!>
<!NI;TYPE_MISMATCH, DEBUG_INFO_SMARTCAST!>x<!>
}
val bar: Bar = <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>run<!> {
val bar: Bar = <!NI;TYPE_MISMATCH!><!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>run<!> {
val x = foo()
if (x == null) throw Exception()
<!TYPE_MISMATCH!>x<!>
}
<!NI;DEBUG_INFO_SMARTCAST, TYPE_MISMATCH!>x<!>
}<!>
@@ -9,7 +9,7 @@ fun foo() {
return true
}
<!SMARTCAST_IMPOSSIBLE!>i<!>.hashCode()
trans(<!SMARTCAST_IMPOSSIBLE!>i<!>, ::can)
trans(<!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>i<!>, ::can)
<!SMARTCAST_IMPOSSIBLE!>i<!>.hashCode()
}
}
@@ -17,7 +17,7 @@ fun foo(): Int {
k.run()
val d: Int = <!DEBUG_INFO_SMARTCAST!>c<!>
// a is captured so smart cast is not possible
return d + <!SMARTCAST_IMPOSSIBLE!>a<!>
return d <!NI;NONE_APPLICABLE!>+<!> <!OI;SMARTCAST_IMPOSSIBLE!>a<!>
}
else return -1
}
@@ -16,7 +16,7 @@ fun foo(): Int {
k.run()
val d: Int = <!DEBUG_INFO_SMARTCAST!>c<!>
// a is not null because of k constructor, but we do not know it
return a <!UNSAFE_OPERATOR_CALL!>+<!> d
return a <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;UNSAFE_OPERATOR_CALL!>+<!> d
}
else return -1
}
@@ -7,7 +7,7 @@ fun doIt() {}
fun foo(my: My) {
if (my.x != null) {
// my.x should be smart-cast
if (<!DEBUG_INFO_SMARTCAST!>my.x<!>) doIt()
if (<!DEBUG_INFO_SMARTCAST!>my.<!NI;TYPE_MISMATCH!>x<!><!>) doIt()
when (<!DEBUG_INFO_SMARTCAST!>my.x<!>) {
true -> doIt()
}
@@ -8,7 +8,7 @@ class Immutable(val x: String?) {
class Mutable(var y: String?) {
fun foo(): String {
if (y != null) return <!SMARTCAST_IMPOSSIBLE!>y<!>
if (y != null) return <!NI;TYPE_MISMATCH, SMARTCAST_IMPOSSIBLE!>y<!>
return ""
}
}
@@ -14,7 +14,7 @@ class Example {
public fun foo(): String {
// Smart cast is not possible if property is delegated
return if (p != null) <!SMARTCAST_IMPOSSIBLE!>p<!> else ""
return if (p != null) <!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>p<!> else ""
}
public fun bar(): String {
@@ -1,6 +1,8 @@
// !WITH_NEW_INFERENCE
fun calc(x: List<String>?, y: Int?): Int {
x?.get(y!! - 1)
// y!! above should not provide smart cast here
val yy: Int = <!TYPE_MISMATCH!>y<!>
val yy: Int = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>y<!>
return yy + (x?.size ?: 0)
}
@@ -1,5 +1,7 @@
// !WITH_NEW_INFERENCE
fun calc(x: List<String>?, y: Int?): Int {
x?.subList(y!! - 1, <!DEBUG_INFO_SMARTCAST!>y<!>)
// y!! above should not provide smart cast here
return <!TYPE_MISMATCH!>y<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>y<!>
}
@@ -1,8 +1,10 @@
// !WITH_NEW_INFERENCE
fun foo(x: String): String? = x
fun calc(x: String?, y: Int?): Int {
// Smart cast because of x!! in receiver
foo(x!!)?.subSequence(y!!, <!DEBUG_INFO_SMARTCAST!>x<!>.length)?.length
// No smart cast possible
return <!TYPE_MISMATCH!>y<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>y<!>
}
@@ -130,7 +130,7 @@ class Invokable(val x: String) {
class InvokableProperty(val i: Invokable)
fun checkInvokable(ip: InvokableProperty?) {
if (ip?.<!UNSAFE_IMPLICIT_INVOKE_CALL!>i<!>() == "Hello") {
if (ip?.<!OI;UNSAFE_IMPLICIT_INVOKE_CALL!>i<!>() == "Hello") {
<!DEBUG_INFO_SMARTCAST!>ip<!>.hashCode()
}
}
@@ -3,7 +3,7 @@ fun foo(): Int {
val x: Any? = null
val y = 2
if (x == y) {
return x <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>+<!> y
return x <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>+<!> y
}
return y
}
@@ -69,5 +69,5 @@ fun gau(flag: Boolean, arg: String?) {
}
}
x<!UNSAFE_CALL!>.<!>hashCode()
<!NI;DEBUG_INFO_SMARTCAST!>x<!><!OI;UNSAFE_CALL!>.<!>hashCode()
}
@@ -6,5 +6,5 @@ fun foo(x: Int, f: () -> Unit, y: Int) {}
fun bar() {
var x: Int?
x = 4
foo(<!DEBUG_INFO_SMARTCAST!>x<!>, { x = null; x<!UNSAFE_CALL!>.<!>hashCode() }, <!SMARTCAST_IMPOSSIBLE!>x<!>)
foo(<!DEBUG_INFO_SMARTCAST!>x<!>, { x = null; x<!UNSAFE_CALL!>.<!>hashCode() }, <!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>x<!>)
}
@@ -7,5 +7,5 @@ fun bar(s: String): Int {
fun foo(m: MyClass): Int {
m.p = "xyz"
return bar(<!SMARTCAST_IMPOSSIBLE!>m.p<!>)
return bar(<!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>m.p<!>)
}
@@ -5,7 +5,7 @@ fun foo() {
v = "abc"
<!DEBUG_INFO_SMARTCAST!>v<!>.length
v = null
<!DEBUG_INFO_CONSTANT!>v<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>v<!><!UNSAFE_CALL!>.<!>length
v = "abc"
<!DEBUG_INFO_SMARTCAST!>v<!>.length
}
@@ -6,7 +6,7 @@ fun foo() {
val y = x
x = null
if (y != null) {
<!DEBUG_INFO_CONSTANT!>x<!><!UNSAFE_CALL!>.<!>hashCode()
<!OI;DEBUG_INFO_CONSTANT!>x<!><!UNSAFE_CALL!>.<!>hashCode()
}
}
@@ -23,7 +23,7 @@ fun bar(s: String?) {
val hashCode = ss?.hashCode()
ss = null
if (hashCode != null) {
<!DEBUG_INFO_CONSTANT!>ss<!><!UNSAFE_CALL!>.<!>hashCode()
<!OI;DEBUG_INFO_CONSTANT!>ss<!><!UNSAFE_CALL!>.<!>hashCode()
}
}
@@ -13,5 +13,5 @@ fun list(start: SomeObject): SomeObject {
e = e<!UNSAFE_CALL!>.<!>next()
}
// Smart cast is not possible here due to next()
return <!TYPE_MISMATCH!>e<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>e<!>
}
@@ -14,5 +14,5 @@ fun list(start: SomeObject): SomeObject {
<!DEBUG_INFO_SMARTCAST!>e<!>.doSomething()
e = <!DEBUG_INFO_SMARTCAST!>e<!>.next()
}
return <!TYPE_MISMATCH!>e<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>e<!>
}
@@ -14,5 +14,5 @@ fun list(start: SomeObject): SomeObject {
<!DEBUG_INFO_SMARTCAST!>e<!>.doSomething()
e = <!DEBUG_INFO_SMARTCAST!>e<!>.next()
}
return <!TYPE_MISMATCH!>e<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>e<!>
}
@@ -76,5 +76,5 @@ fun test6() {
finally {
a = null
}
<!DEBUG_INFO_CONSTANT!>a<!><!UNSAFE_CALL!>.<!>hashCode() // a is null here
<!OI;DEBUG_INFO_CONSTANT!>a<!><!UNSAFE_CALL!>.<!>hashCode() // a is null here
}
@@ -4,5 +4,5 @@ fun foo() {
// It is possible in principle to provide smart cast here
v<!UNSAFE_CALL!>.<!>length
v = null
<!DEBUG_INFO_CONSTANT!>v<!><!UNSAFE_CALL!>.<!>length
<!OI;DEBUG_INFO_CONSTANT!>v<!><!UNSAFE_CALL!>.<!>length
}
@@ -12,10 +12,10 @@ operator fun Long?.inc() = this?.let { it + 1 }
fun bar(arg: Long?): Long {
var i = arg
if (i++ == 5L) {
return i<!UNSAFE_CALL!>--<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> i
return <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>i<!UNSAFE_CALL!>--<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> i<!>
}
if (i++ == 7L) {
return i++ <!UNSAFE_OPERATOR_CALL!>+<!> <!TYPE_MISMATCH!>i<!>
return i++ <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;UNSAFE_OPERATOR_CALL!>+<!> <!OI;TYPE_MISMATCH!>i<!>
}
return 0L
}
@@ -1,7 +1,7 @@
// !WITH_NEW_INFERENCE
class MyClass
operator fun MyClass.inc(): MyClass { <!UNREACHABLE_CODE!>return<!> null!! }
operator fun MyClass.inc(): MyClass { <!OI;UNREACHABLE_CODE!>return<!> null!! }
public fun box() : MyClass? {
var i : MyClass?
@@ -1,7 +1,7 @@
// !WITH_NEW_INFERENCE
class MyClass
operator fun MyClass.inc(): MyClass { <!UNREACHABLE_CODE!>return<!> null!! }
operator fun MyClass.inc(): MyClass { <!OI;UNREACHABLE_CODE!>return<!> null!! }
public fun box() {
var i : MyClass?
@@ -14,7 +14,7 @@ class MyClass {
m = create()
// See KT-7428
for ((k, v) in <!SMARTCAST_IMPOSSIBLE!>m<!>)
res += (k.length + v.length)
res <!NI;NONE_APPLICABLE!>+=<!> (k.<!NI;UNRESOLVED_REFERENCE!>length<!> <!NI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> v.<!NI;UNRESOLVED_REFERENCE!>length<!>)
return res
}
}
@@ -9,7 +9,7 @@ fun IntArray.forEachIndexed( op: (i: Int, value: Int) -> Unit) {
fun max(a: IntArray): Int? {
var maxI: Int? = null
a.forEachIndexed { i, value ->
if (maxI == null || value >= a[<!SMARTCAST_IMPOSSIBLE!>maxI<!>])
if (maxI == null || value >= a[<!NI;SMARTCAST_IMPOSSIBLE, SMARTCAST_IMPOSSIBLE!>maxI<!>])
maxI = i
}
return maxI
@@ -2,5 +2,5 @@
fun foo(): Int {
var i: Int? = <!VARIABLE_WITH_REDUNDANT_INITIALIZER!>42<!>
i = null
return <!TYPE_MISMATCH!><!DEBUG_INFO_CONSTANT!>i<!> + 1<!>
return <!NI;TYPE_MISMATCH, TYPE_MISMATCH!><!OI;DEBUG_INFO_CONSTANT!>i<!> + 1<!>
}
@@ -2,5 +2,5 @@
fun foo(): Int {
var s: String? = <!VARIABLE_WITH_REDUNDANT_INITIALIZER!>"abc"<!>
s = null
return <!DEBUG_INFO_CONSTANT!>s<!><!UNSAFE_CALL!>.<!>length
return <!OI;DEBUG_INFO_CONSTANT!>s<!><!UNSAFE_CALL!>.<!>length
}