Add diagnostics to test data from NI
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@ typealias YBar = <!RECURSIVE_TYPEALIAS_EXPANSION!>ZBar<!>
|
||||
typealias ZBar = <!RECURSIVE_TYPEALIAS_EXPANSION!>YBar<!>
|
||||
|
||||
fun Foo.foo(body: Foo.() -> Unit) = body()
|
||||
fun Foo.zbar(<!UNUSED_PARAMETER!>body<!>: <!RECURSIVE_TYPEALIAS_EXPANSION!>ZBar<!>.() -> Unit) = Bar().<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>body<!>()
|
||||
fun Foo.zbar(<!OI;UNUSED_PARAMETER!>body<!>: <!RECURSIVE_TYPEALIAS_EXPANSION!>ZBar<!>.() -> Unit) = Bar().<!OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>body<!>()
|
||||
|
||||
fun test() {
|
||||
Foo().foo {
|
||||
|
||||
+2
-2
@@ -60,7 +60,7 @@ fun test() {
|
||||
bar1t(this) {
|
||||
a()
|
||||
bar1 {
|
||||
<!DSL_SCOPE_VIOLATION!>a<!>()
|
||||
<!OI;DSL_SCOPE_VIOLATION!>a<!>()
|
||||
b()
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ fun test() {
|
||||
foo2 {
|
||||
bar1t(this) {
|
||||
a()
|
||||
<!DSL_SCOPE_VIOLATION!>b<!>()
|
||||
<!OI;DSL_SCOPE_VIOLATION!>b<!>()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ fun test() {
|
||||
foo<A> {
|
||||
a()
|
||||
bar<B> {
|
||||
<!DSL_SCOPE_VIOLATION!>a<!>()
|
||||
<!OI;DSL_SCOPE_VIOLATION!>a<!>()
|
||||
this@foo.a()
|
||||
b()
|
||||
}
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ fun test() {
|
||||
baz {
|
||||
y()
|
||||
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER, FUNCTION_EXPECTED!>x<!>()
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, OI;FUNCTION_EXPECTED, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>x<!>()<!>
|
||||
|
||||
with(D()) {
|
||||
x()
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ fun test() {
|
||||
baz {
|
||||
y()
|
||||
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER, FUNCTION_EXPECTED!>x<!>()
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, OI;FUNCTION_EXPECTED, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>x<!>()<!>
|
||||
|
||||
with(D()) {
|
||||
x()
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ operator fun <T> T.invoke(a: A<T>) {}
|
||||
fun foo(s: String, ai: A<Int>) {
|
||||
1(ai)
|
||||
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>s<!>(ai)
|
||||
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>s<!>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>ai<!>)
|
||||
|
||||
<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>""<!>(ai)
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
fun String.invoke(i: Int) {}
|
||||
|
||||
fun foo(i: Int) {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>i<!>(1)
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>i<!>(1)<!>
|
||||
|
||||
<!FUNCTION_EXPECTED!>1<!>(1)
|
||||
}
|
||||
+1
-1
@@ -19,5 +19,5 @@ fun foo(): A.() -> Int {
|
||||
val b: Int = foo()(A())
|
||||
val c: Int = (foo())(A())
|
||||
|
||||
<!UNREACHABLE_CODE!>return<!> null!!
|
||||
<!OI;UNREACHABLE_CODE!>return<!> null!!
|
||||
}
|
||||
Vendored
+4
-4
@@ -7,8 +7,8 @@ fun Int.invoke(a: Int, b: Int) {}
|
||||
class SomeClass
|
||||
|
||||
fun test(identifier: SomeClass, fn: String.() -> Unit) {
|
||||
<!FUNCTION_EXPECTED, DEBUG_INFO_MISSING_UNRESOLVED!>identifier<!>()
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(123)
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(1, 2)
|
||||
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()
|
||||
<!NI;NONE_APPLICABLE, OI;DEBUG_INFO_MISSING_UNRESOLVED, OI;FUNCTION_EXPECTED!>identifier<!>()
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(123)<!>
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(1, 2)<!>
|
||||
1.<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()<!>
|
||||
}
|
||||
@@ -4,18 +4,18 @@ class A(val x: (String.() -> Unit)?)
|
||||
fun test(a: A) {
|
||||
if (a.x != null) {
|
||||
"".<!DEBUG_INFO_SMARTCAST!>(a.x)<!>()
|
||||
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("") // todo
|
||||
a<!NI;UNSAFE_CALL!>.<!><!OI;UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("") // todo
|
||||
<!DEBUG_INFO_SMARTCAST!>(a.x)<!>("")
|
||||
}
|
||||
"".<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>()
|
||||
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("")
|
||||
a<!NI;UNSAFE_CALL!>.<!><!OI;UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>("")
|
||||
<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>("")
|
||||
|
||||
with("") {
|
||||
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
a<!NI;UNSAFE_CALL!>.<!><!OI;UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
<!UNSAFE_IMPLICIT_INVOKE_CALL!>(a.x)<!>()
|
||||
if (a.x != null) {
|
||||
a.<!UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!> // todo
|
||||
a<!NI;UNSAFE_CALL!>.<!><!OI;UNSAFE_IMPLICIT_INVOKE_CALL!>x<!>(<!NO_VALUE_FOR_PARAMETER!>)<!> // todo
|
||||
<!DEBUG_INFO_SMARTCAST!>(a.x)<!>()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -17,7 +17,7 @@ fun test(a: A, b: B) {
|
||||
|
||||
b.(foo)()
|
||||
|
||||
(b.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)()
|
||||
(b.<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)()
|
||||
|
||||
foo(b)
|
||||
(foo)(b)
|
||||
@@ -25,7 +25,7 @@ fun test(a: A, b: B) {
|
||||
|
||||
with(b) {
|
||||
a.foo(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
a.<!FUNCTION_EXPECTED!>(<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)<!>()
|
||||
a.<!FUNCTION_EXPECTED!>(<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>)<!>()
|
||||
|
||||
(a.foo)()
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -6,8 +6,8 @@ fun Int.invoke() {}
|
||||
class SomeClass
|
||||
|
||||
fun test(identifier: SomeClass, fn: String.() -> Unit) {
|
||||
<!FUNCTION_EXPECTED, DEBUG_INFO_MISSING_UNRESOLVED!>identifier<!>()
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(123)
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(1, 2)
|
||||
1.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;DEBUG_INFO_MISSING_UNRESOLVED, OI;FUNCTION_EXPECTED!>identifier<!>()<!>
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(123)<!>
|
||||
<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>identifier<!>(1, 2)<!>
|
||||
1.<!NI;DEBUG_INFO_MISSING_UNRESOLVED!><!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>fn<!>()<!>
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun foo(i: Int) = i
|
||||
fun foo(s: String) = s
|
||||
|
||||
fun test() {
|
||||
<!NONE_APPLICABLE!>foo<!>(<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>())
|
||||
<!NONE_APPLICABLE!>foo<!>(<!OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>())
|
||||
}
|
||||
|
||||
fun <T> emptyList(): List<T> {throw Exception()}
|
||||
Vendored
+14
-14
@@ -20,20 +20,20 @@ class E {
|
||||
// `bar` calls are inapplicable since both E nor D aren't proper receivers
|
||||
// But prior to this change, every lambda was analyzed repeatedly for every candidate
|
||||
// Thus, the resulting time was exponential
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
<!NI;NONE_APPLICABLE, OI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>bar<!> {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ public class ResolutionTaskHolder<F, G : F> {
|
||||
tasks.add(ResolutionTask<F, G>(candidate))
|
||||
|
||||
//todo the problem is the type of ResolutionTask is inferred as ResolutionTask<F, F> too early
|
||||
tasks.<!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>bar<!>(ResolutionTask(candidate))
|
||||
tasks.<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>bar<!>(ResolutionTask(candidate))
|
||||
tasks.add(ResolutionTask(candidate))
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -7,4 +7,4 @@ object X2
|
||||
fun <T1> foo(x: T1, f: (T1) -> T1) = X1
|
||||
fun <T2> foo(xf: () -> T2, f: (T2) -> T2) = X2
|
||||
|
||||
val test: X2 = <!CANNOT_COMPLETE_RESOLVE!>foo<!>({ 0 }, { <!CANNOT_INFER_PARAMETER_TYPE!>it<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1 })
|
||||
val test: X2 = <!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>foo<!>({ 0 }, { <!OI;CANNOT_INFER_PARAMETER_TYPE!>it<!> -> <!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> <!NI;UNREACHABLE_CODE!><!OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1<!> })
|
||||
@@ -7,4 +7,4 @@ fun <T2 : Closeable, R2> T2.myUse(f: (T2) -> R2): R2 = f(this)
|
||||
|
||||
fun test1(x: Closeable) = x.myUse { 42 }
|
||||
fun test2(x: Closeable) = x.myUse<Closeable, Int> { 42 }
|
||||
fun test3(x: Closeable) = x.myUse<<!UPPER_BOUND_VIOLATED!>AutoCloseable<!>, Int> { 42 } // TODO KT-10681
|
||||
fun test3(x: Closeable) = x.myUse<<!OI;UPPER_BOUND_VIOLATED!>AutoCloseable<!>, Int> { 42 } // TODO KT-10681
|
||||
+1
-1
@@ -8,7 +8,7 @@ fun overloadedFun1(c: Any = "", b: String = "", f: Any = "") = Right
|
||||
fun overloadedFun1(b: Any = "", c: Any = "", e: String = "") = Wrong
|
||||
|
||||
val test1: Right = overloadedFun1(b = "")
|
||||
val test1a: Wrong = <!TYPE_MISMATCH!>overloadedFun1(b = "")<!>
|
||||
val test1a: Wrong = <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>overloadedFun1(b = "")<!>
|
||||
|
||||
fun overloadedFun2(a: String, b: Any = "") = Right
|
||||
fun overloadedFun2(a: Any, b: String = "") = Wrong
|
||||
|
||||
+1
-1
@@ -7,4 +7,4 @@ class A<T>
|
||||
<!CONFLICTING_OVERLOADS!>fun <T1> A<T1>.foo()<!> = X1
|
||||
<!CONFLICTING_OVERLOADS!>fun <T2> A<out T2>.foo()<!> = X2
|
||||
|
||||
fun <T> A<out T>.test() = <!CANNOT_COMPLETE_RESOLVE!>foo<!>() // TODO fix constraint system
|
||||
fun <T> A<out T>.test() = <!NI;OVERLOAD_RESOLUTION_AMBIGUITY, OI;CANNOT_COMPLETE_RESOLVE!>foo<!>() // TODO fix constraint system
|
||||
+5
-5
@@ -22,11 +22,11 @@ fun foo(i: Int, f: (Int) -> Int) = f(i)
|
||||
fun <T> id(t: T) = t
|
||||
|
||||
fun test() {
|
||||
foo(1, id(fun(x1: Int) =
|
||||
foo(2, id(fun(x2: Int) =
|
||||
foo(3, id(fun(x3: Int) =
|
||||
foo(4, id(fun(x4: Int) =
|
||||
foo(5, id(fun(x5: Int) =
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, id(fun(x1: Int) =
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(2, id(fun(x2: Int) =
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(3, id(fun(x3: Int) =
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(4, id(fun(x4: Int) =
|
||||
<!NI;OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(5, id(fun(x5: Int) =
|
||||
x1 + x2 + x3 + x4 + x5 + A.iii
|
||||
))
|
||||
))
|
||||
|
||||
+5
-5
@@ -2,13 +2,13 @@
|
||||
// !DIAGNOSTICS: -USELESS_ELVIS
|
||||
|
||||
fun test() {
|
||||
bar(if (true) {
|
||||
<!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>
|
||||
bar(<!NI;TYPE_MISMATCH!>if (true) {
|
||||
<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>
|
||||
} else {
|
||||
<!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>
|
||||
})
|
||||
<!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>
|
||||
}<!>)
|
||||
|
||||
bar(<!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> ?: <!CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!>)
|
||||
bar(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!><!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!> ?: <!OI;CONSTANT_EXPECTED_TYPE_MISMATCH!>2<!><!>)
|
||||
}
|
||||
|
||||
fun bar(s: String) = s
|
||||
+4
-4
@@ -14,7 +14,7 @@ fun testElvis(a: Int?, b: Int?) {
|
||||
if (a != null) {
|
||||
doInt(b ?: <!DEBUG_INFO_SMARTCAST!>a<!>)
|
||||
}
|
||||
doList(getList() ?: <!TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyListOfA<!>()) //should be an error
|
||||
doList(getList() ?: <!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyListOfA<!>()) //should be an error
|
||||
doList(getList() ?: strangeList { doInt(it) }) //lambda was not analyzed
|
||||
}
|
||||
|
||||
@@ -23,15 +23,15 @@ fun testDataFlowInfo1(a: Int?, b: Int?) {
|
||||
val c: Int = a ?: b!!
|
||||
doInt(c)
|
||||
// b is nullable if a != null
|
||||
b <!UNSAFE_OPERATOR_CALL!>+<!> 1
|
||||
b <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;UNSAFE_OPERATOR_CALL!>+<!> 1
|
||||
}
|
||||
|
||||
fun testDataFlowInfo2(a: Int?, b: Int?) {
|
||||
doInt(a ?: b!!)
|
||||
// b is nullable if a != null
|
||||
b <!UNSAFE_OPERATOR_CALL!>+<!> 1
|
||||
b <!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER, OI;UNSAFE_OPERATOR_CALL!>+<!> 1
|
||||
}
|
||||
|
||||
fun testTypeMismatch(a: String?, b: Any) {
|
||||
doInt(<!TYPE_MISMATCH!>a<!> ?: <!TYPE_MISMATCH!>b<!>)
|
||||
doInt(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!><!OI;TYPE_MISMATCH!>a<!> ?: <!OI;TYPE_MISMATCH!>b<!><!>)
|
||||
}
|
||||
+2
-2
@@ -13,8 +13,8 @@ fun <T: A> emptyNullableListOfA(): List<T>? = null
|
||||
//-------------------------------
|
||||
|
||||
fun testExclExcl() {
|
||||
doList(<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyNullableListOfA<!>()!!) //should be an error here
|
||||
val <!UNUSED_VARIABLE!>l<!>: List<Int> = id(<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyNullableListOfA<!>()!!)
|
||||
doList(<!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyNullableListOfA<!>()!!) //should be an error here
|
||||
val <!UNUSED_VARIABLE!>l<!>: List<Int> = id(<!OI;TYPE_INFERENCE_UPPER_BOUND_VIOLATED!>emptyNullableListOfA<!>()!!)
|
||||
|
||||
doList(strangeNullableList { doInt(it) }!!) //lambda should be analyzed (at completion phase)
|
||||
}
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ interface D: A, B
|
||||
interface E: A, B
|
||||
|
||||
fun foo(c: C?, d: D?, e: E?) {
|
||||
val test1: A? = <!TYPE_MISMATCH!>c ?: d<!> ?: e
|
||||
val test1: A? = <!OI;TYPE_MISMATCH!>c ?: d<!> ?: e
|
||||
|
||||
val test2: B? = if (false) if (true) c else d else e
|
||||
|
||||
|
||||
+6
-6
@@ -4,25 +4,25 @@ package b
|
||||
fun bar(i: Int) = i
|
||||
|
||||
fun test(a: Int?, b: Int?) {
|
||||
bar(if (a == null) return else <!TYPE_MISMATCH!>b<!>)
|
||||
bar(<!NI;TYPE_MISMATCH!>if (a == null) return else <!OI;TYPE_MISMATCH!>b<!><!>)
|
||||
}
|
||||
|
||||
fun test(a: Int?, b: Int?, c: Int?) {
|
||||
bar(if (a == null) return else if (b == null) return else <!TYPE_MISMATCH!>c<!>)
|
||||
bar(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>if (a == null) return else if (b == null) return else <!OI;TYPE_MISMATCH!>c<!><!>)
|
||||
}
|
||||
|
||||
fun test(a: Any?, b: Any?, c: Int?) {
|
||||
bar(if (a == null) if (b == null) <!TYPE_MISMATCH!>c<!> else return else return)
|
||||
bar(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>if (a == null) if (b == null) <!OI;TYPE_MISMATCH!>c<!> else return else return<!>)
|
||||
}
|
||||
|
||||
fun test(a: Int?, b: Any?, c: Int?) {
|
||||
bar(if (a == null) {
|
||||
bar(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>if (a == null) {
|
||||
return
|
||||
} else {
|
||||
if (b == null) {
|
||||
return
|
||||
} else {
|
||||
<!TYPE_MISMATCH!>c<!>
|
||||
<!OI;TYPE_MISMATCH!>c<!>
|
||||
}
|
||||
})
|
||||
}<!>)
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
fun <T> foo(t: T) = t
|
||||
|
||||
fun test1() {
|
||||
foo<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int, String><!>(<!TYPE_MISMATCH!>""<!>)
|
||||
foo<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int, String><!>(<!OI;TYPE_MISMATCH!>""<!>)
|
||||
}
|
||||
|
||||
|
||||
fun <T, R> bar(t: T, r: R) {}
|
||||
|
||||
fun test2() {
|
||||
bar<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>(<!TYPE_MISMATCH!>""<!>, "")
|
||||
bar<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>(<!OI;TYPE_MISMATCH!>""<!>, "")
|
||||
}
|
||||
@@ -9,13 +9,13 @@ val Int.foo: Int get() = 4
|
||||
fun Int.extFun() = 4
|
||||
|
||||
fun String.test() {
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>some<!>
|
||||
<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>some<!>
|
||||
some.A()
|
||||
"".<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>some<!>
|
||||
"".<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>some<!>
|
||||
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
|
||||
"".<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
|
||||
<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
|
||||
"".<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>foo<!>
|
||||
|
||||
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extFun<!>()
|
||||
"".<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extFun<!>()
|
||||
<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extFun<!>()
|
||||
"".<!NI;DEBUG_INFO_UNRESOLVED_WITH_TARGET, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extFun<!>()
|
||||
}
|
||||
Reference in New Issue
Block a user