Switch kotlin version to 1.7
* Change 1.6 to 1.7 constants * Fix SAFE_CALL_WILL_CHANGE_NULLABILITY for testData * Change EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING to EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR * Change NON_EXHAUSTIVE_WHEN_STATEMENT to NO_ELSE_IN_WHEN * Fix testData for SafeCallsAreAlwaysNullable * Change T -> T & Any in test dumps * Change INVALID_CHARACTERS_NATIVE_WARNING -> INVALID_CHARACTERS_NATIVE_ERROR * TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING -> TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR
This commit is contained in:
+1
-1
@@ -6,7 +6,7 @@ package boundsWithSubstitutors
|
||||
class C : A<C>()
|
||||
|
||||
val a = B<C>()
|
||||
val a1 = B<<!UPPER_BOUND_VIOLATED!>Int<!>>()
|
||||
val a1 = B<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>Int<!>>()
|
||||
|
||||
class X<A, B : A>()
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
fun bar(doIt: Int.() -> Int) {
|
||||
1.doIt()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>1<!UNNECESSARY_SAFE_CALL!>?.<!>doIt()<!>
|
||||
1<!UNNECESSARY_SAFE_CALL!>?.<!>doIt()
|
||||
val i: Int? = 1
|
||||
<!ARGUMENT_TYPE_MISMATCH!>i<!>.doIt()
|
||||
i?.doIt()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
fun bar(doIt: Int.() -> Int) {
|
||||
1.doIt()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>1<!UNNECESSARY_SAFE_CALL!>?.<!>doIt()<!>
|
||||
1<!UNNECESSARY_SAFE_CALL!>?.<!>doIt()
|
||||
val i: Int? = 1
|
||||
i<!UNSAFE_CALL!>.<!>doIt()
|
||||
i?.doIt()
|
||||
|
||||
@@ -82,6 +82,6 @@ fun test() {
|
||||
val i : Int? = null
|
||||
<!ARGUMENT_TYPE_MISMATCH!>i<!>.(fun Int.() = 1)();
|
||||
<!INAPPLICABLE_CANDIDATE!>{}<!><Int>()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>1<!UNNECESSARY_SAFE_CALL!>?.<!>(<!UNRESOLVED_REFERENCE!>fun Int.() = 1<!>)()<!>
|
||||
1<!UNNECESSARY_SAFE_CALL!>?.<!>(<!UNRESOLVED_REFERENCE!>fun Int.() = 1<!>)()
|
||||
1.<!NO_RECEIVER_ALLOWED!>{}<!>()
|
||||
}
|
||||
|
||||
@@ -82,6 +82,6 @@ fun test() {
|
||||
val i : Int? = null
|
||||
i<!UNSAFE_CALL!>.<!>(fun Int.() = 1)();
|
||||
{}<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>1<!UNNECESSARY_SAFE_CALL!>?.<!>(fun Int.() = 1)()<!>
|
||||
1<!UNNECESSARY_SAFE_CALL!>?.<!>(fun Int.() = 1)()
|
||||
1.<!NO_RECEIVER_ALLOWED!>{}<!>()
|
||||
}
|
||||
|
||||
@@ -18,6 +18,6 @@ fun foo() {
|
||||
// these both also ok (with smart cast / unnecessary safe call)
|
||||
if (rule != null) {
|
||||
rule.apply()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>rule<!UNNECESSARY_SAFE_CALL!>?.<!>apply()<!>
|
||||
rule<!UNNECESSARY_SAFE_CALL!>?.<!>apply()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,6 +18,6 @@ fun foo() {
|
||||
// these both also ok (with smart cast / unnecessary safe call)
|
||||
if (rule != null) {
|
||||
<!DEBUG_INFO_SMARTCAST!>rule<!>.apply()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>rule<!UNNECESSARY_SAFE_CALL!>?.<!>apply()<!>
|
||||
rule<!UNNECESSARY_SAFE_CALL!>?.<!>apply()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
|
||||
fun ff() {
|
||||
val i: Int = 1
|
||||
val a: Int? = <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>i<!UNNECESSARY_SAFE_CALL!>?.<!>plus(2)<!>
|
||||
val a: Int? = i<!UNNECESSARY_SAFE_CALL!>?.<!>plus(2)
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,5 +2,5 @@ fun Int.gg() = null
|
||||
|
||||
fun ff() {
|
||||
val a: Int = 1
|
||||
val b: Int = <!INITIALIZER_TYPE_MISMATCH, SAFE_CALL_WILL_CHANGE_NULLABILITY, TYPE_MISMATCH!>a<!UNNECESSARY_SAFE_CALL!>?.<!>gg()<!>
|
||||
val b: Int = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>a<!UNNECESSARY_SAFE_CALL!>?.<!>gg()<!>
|
||||
}
|
||||
|
||||
@@ -2,5 +2,5 @@ fun Int.gg() = null
|
||||
|
||||
fun ff() {
|
||||
val a: Int = 1
|
||||
val b: Int = <!SAFE_CALL_WILL_CHANGE_NULLABILITY, TYPE_MISMATCH!>a<!UNNECESSARY_SAFE_CALL!>?.<!>gg()<!>
|
||||
val b: Int = <!TYPE_MISMATCH!>a<!UNNECESSARY_SAFE_CALL!>?.<!>gg()<!>
|
||||
}
|
||||
|
||||
@@ -12,5 +12,5 @@ val s: String = "test"
|
||||
fun ff() {
|
||||
val a = <!NO_COMPANION_OBJECT!>Test<!><!UNEXPECTED_SAFE_CALL!>?.<!>FOO
|
||||
val b = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>foo<!><!UNEXPECTED_SAFE_CALL!>?.<!>s
|
||||
<!NO_COMPANION_OBJECT!>System<!><!UNEXPECTED_SAFE_CALL!>?.<!>out.println(a + b)
|
||||
<!NO_COMPANION_OBJECT!>System<!><!UNEXPECTED_SAFE_CALL!>?.<!>out<!UNSAFE_CALL!>.<!>println(a + b)
|
||||
}
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ fun test6() {}
|
||||
|
||||
annotation class AnnArray(val a: Array<String>)
|
||||
|
||||
@AnnArray(<!NON_VARARG_SPREAD_WARNING!>*<!>["/"])
|
||||
@AnnArray(<!NON_VARARG_SPREAD_ERROR!>*<!>["/"])
|
||||
fun testArray() {}
|
||||
|
||||
@Ann1(<!TYPE_MISMATCH, TYPE_MISMATCH!>[""]<!>)
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun test11() {
|
||||
|
||||
fun test12() {
|
||||
fun Any.bar(i: Int) {}
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>todo()<!UNREACHABLE_CODE!><!UNNECESSARY_SAFE_CALL!>?.<!>bar(1)<!><!>
|
||||
todo()<!UNREACHABLE_CODE!><!UNNECESSARY_SAFE_CALL!>?.<!>bar(1)<!>
|
||||
}
|
||||
|
||||
fun todo(): Nothing = throw Exception()
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun test11() {
|
||||
|
||||
fun test12() {
|
||||
fun Any.bar(<!UNUSED_PARAMETER!>i<!>: Int) {}
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>todo()<!UNNECESSARY_SAFE_CALL!>?.<!><!UNREACHABLE_CODE!>bar(1)<!><!>
|
||||
todo()<!UNNECESSARY_SAFE_CALL!>?.<!><!UNREACHABLE_CODE!>bar(1)<!>
|
||||
}
|
||||
|
||||
fun todo(): Nothing = throw Exception()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
val a by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>a<!>
|
||||
val a by <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>a<!>
|
||||
|
||||
val b by Delegate(<!DEBUG_INFO_MISSING_UNRESOLVED, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>b<!>)
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ val bar2 by <!DEBUG_INFO_MISSING_UNRESOLVED!>bar2<!>()
|
||||
package lt.neworld.compiler
|
||||
|
||||
class Foo {
|
||||
val bar by <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!><!DEBUG_INFO_MISSING_UNRESOLVED!>bar<!>()<!>
|
||||
val bar by <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR, TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!><!DEBUG_INFO_MISSING_UNRESOLVED!>bar<!>()<!>
|
||||
}
|
||||
|
||||
// FILE: lt/neworld/compiler/bar/Bar.kt
|
||||
|
||||
@@ -24,7 +24,7 @@ infix fun filter(filter: (R, Any?) -> Boolean): Delegate<R, T>
|
||||
}
|
||||
|
||||
class GitLabChangesProcessor: DatabaseEntity {
|
||||
var buildProcessors by <!DEBUG_INFO_EXPRESSION_TYPE("Delegate<GitLabChangesProcessor, kotlin.collections.MutableCollection<GitLabBuildProcessor>>"), TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING!>child_many(
|
||||
var buildProcessors by <!DEBUG_INFO_EXPRESSION_TYPE("Delegate<GitLabChangesProcessor, kotlin.collections.MutableCollection<GitLabBuildProcessor>>"), TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR!>child_many(
|
||||
GitLabBuildProcessor::class.java,
|
||||
GitLabBuildProcessor::processor
|
||||
)<!>
|
||||
@@ -32,4 +32,4 @@ class GitLabChangesProcessor: DatabaseEntity {
|
||||
|
||||
fun <Self : DatabaseEntity, Target : DatabaseEntity> Self.child_many(
|
||||
clazz: Class<Target>, property: KProperty1<Target, Self?>, name: String = property.name
|
||||
): Delegate<Self, MutableCollection<Target>> = TODO() // Type checking has run into a recursive problem. Easiest workaround: specify types of your declarations explicitly
|
||||
): Delegate<Self, MutableCollection<Target>> = TODO() // Type checking has run into a recursive problem. Easiest workaround: specify types of your declarations explicitly
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
private enum class Foo { A, B }
|
||||
|
||||
class Bar(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>foo<!>: Foo<!>)
|
||||
class Bar(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR!>foo<!>: Foo<!>)
|
||||
|
||||
@@ -6,7 +6,7 @@ public interface Your: <!EXPOSED_SUPER_INTERFACE!>My<!> {
|
||||
fun <T: Base> foo(): T
|
||||
}
|
||||
|
||||
public class Derived<T: <!EXPOSED_TYPE_PARAMETER_BOUND!>My<!>>(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: My<!>): <!EXPOSED_SUPER_CLASS!>Base<!>() {
|
||||
public class Derived<T: <!EXPOSED_TYPE_PARAMETER_BOUND!>My<!>>(<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR!>x<!>: My<!>): <!EXPOSED_SUPER_CLASS!>Base<!>() {
|
||||
|
||||
constructor(<!EXPOSED_PARAMETER_TYPE!>xx: My?<!>, <!EXPOSED_PARAMETER_TYPE!>x: My<!>): this(xx ?: x)
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ fun <T: Any, E> T.foo(x : E, y : A) : T {
|
||||
y plus 1
|
||||
y + 1.0
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>minus<T>(this)<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>minus<T>(this)
|
||||
|
||||
return this
|
||||
}
|
||||
@@ -69,7 +69,7 @@ import outer.*
|
||||
command?.equals1(null)
|
||||
|
||||
val c = Command()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>c<!UNNECESSARY_SAFE_CALL!>?.<!>equals2(null)<!>
|
||||
c<!UNNECESSARY_SAFE_CALL!>?.<!>equals2(null)
|
||||
|
||||
if (command == null) 1
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ fun <T: Any, E> T.foo(x : E, y : A) : T {
|
||||
y plus 1
|
||||
y + 1.0
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>minus<T>(this)<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>minus<T>(this)
|
||||
|
||||
return this
|
||||
}
|
||||
@@ -69,7 +69,7 @@ import outer.*
|
||||
command?.equals1(null)
|
||||
|
||||
val c = Command()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>c<!UNNECESSARY_SAFE_CALL!>?.<!>equals2(null)<!>
|
||||
c<!UNNECESSARY_SAFE_CALL!>?.<!>equals2(null)
|
||||
|
||||
if (command == null) 1
|
||||
}
|
||||
|
||||
@@ -9,3 +9,4 @@ public interface Predicate</*0*/ T : kotlin.CharSequence!> {
|
||||
public abstract operator fun invoke(/*0*/ @org.jetbrains.annotations.NotNull t: T): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class Inv<T>() {
|
||||
fun testInOut() {
|
||||
In<String>().f("1");
|
||||
(null <!CAST_NEVER_SUCCEEDS!>as<!> In<<!REDUNDANT_PROJECTION!>in<!> String>).f("1")
|
||||
(null <!CAST_NEVER_SUCCEEDS!>as<!> In<*>).<!NONE_APPLICABLE!>f<!>("1") // Wrong Arg
|
||||
(null <!CAST_NEVER_SUCCEEDS!>as<!> In<*>).f(<!TYPE_MISMATCH!>"1"<!>) // Wrong Arg
|
||||
|
||||
In<String>().f(1);
|
||||
(null <!CAST_NEVER_SUCCEEDS!>as<!> In<<!REDUNDANT_PROJECTION!>in<!> String>).f(1)
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
// !CHECK_TYPE
|
||||
// Incorrect "type mismatch" error for generic extension safe call (required not-null, found nullable)
|
||||
|
||||
// FILE: B.java
|
||||
|
||||
public class B<T> {
|
||||
public String gav() {
|
||||
return "";
|
||||
}
|
||||
|
||||
public static <T> B<T> create() {
|
||||
return new B();
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: A.kt
|
||||
|
||||
class A<T> {
|
||||
fun gav() = ""
|
||||
}
|
||||
fun <R> foo(x: R) = x
|
||||
fun <T> A<T>.bar() = ""
|
||||
fun <T> B<T>.bar() = ""
|
||||
|
||||
fun foo(l: A<String>?) {
|
||||
// No errors should be here
|
||||
foo(l?.bar()) checkType { _<String?>() }
|
||||
foo(l?.gav()) checkType { _<String?>() }
|
||||
if (l != null) {
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()<!>) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()<!>) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
}
|
||||
}
|
||||
|
||||
fun fooNotNull(l: A<String>) {
|
||||
// No errors should be here
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()<!>) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()<!>) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
}
|
||||
|
||||
fun bar() {
|
||||
val l = B.create<String>()
|
||||
foo(l?.bar()) checkType { _<String?>() }
|
||||
foo(l?.gav()) checkType { _<String?>() }
|
||||
}
|
||||
|
||||
+5
-5
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !CHECK_TYPE
|
||||
// Incorrect "type mismatch" error for generic extension safe call (required not-null, found nullable)
|
||||
|
||||
@@ -27,15 +28,15 @@ fun foo(l: A<String>?) {
|
||||
foo(l?.bar()) checkType { _<String?>() }
|
||||
foo(l?.gav()) checkType { _<String?>() }
|
||||
if (l != null) {
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()<!>) checkType { _<String>() }
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()<!>) checkType { _<String>() }
|
||||
foo(l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
foo(l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
}
|
||||
}
|
||||
|
||||
fun fooNotNull(l: A<String>) {
|
||||
// No errors should be here
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()<!>) checkType { _<String>() }
|
||||
foo(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()<!>) checkType { _<String>() }
|
||||
foo(l<!UNNECESSARY_SAFE_CALL!>?.<!>bar()) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
foo(l<!UNNECESSARY_SAFE_CALL!>?.<!>gav()) checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><String>() }
|
||||
}
|
||||
|
||||
fun bar() {
|
||||
@@ -43,4 +44,3 @@ fun bar() {
|
||||
foo(l?.bar()) checkType { _<String?>() }
|
||||
foo(l?.gav()) checkType { _<String?>() }
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
if (<!SENSELESS_COMPARISON!>x != null<!>) {}
|
||||
|
||||
x.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
x.bar1()
|
||||
x.bar2()
|
||||
@@ -20,14 +20,14 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
x.bar4()
|
||||
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()
|
||||
}
|
||||
|
||||
x<!UNSAFE_CALL!>.<!>length
|
||||
|
||||
if (x is String) {
|
||||
x.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
x.bar1()
|
||||
x.bar2()
|
||||
@@ -36,7 +36,7 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
|
||||
if (x is CharSequence) {
|
||||
x.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
x.bar1()
|
||||
x.bar2()
|
||||
|
||||
@@ -12,7 +12,7 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
if (<!SENSELESS_COMPARISON!>x != null<!>) {}
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.bar1()
|
||||
x.bar2()
|
||||
@@ -20,14 +20,14 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.bar4()
|
||||
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()
|
||||
}
|
||||
|
||||
x<!UNSAFE_CALL!>.<!>length
|
||||
|
||||
if (x is String) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.bar1()
|
||||
x.bar2()
|
||||
@@ -36,7 +36,7 @@ fun <T : CharSequence?> foo(x: T) {
|
||||
|
||||
if (x is CharSequence) {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.bar1()
|
||||
x.bar2()
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ fun <T : String?> T.foo() {
|
||||
if (<!SENSELESS_COMPARISON!>this != null<!>) {}
|
||||
|
||||
length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
bar1()
|
||||
bar2()
|
||||
@@ -19,14 +19,14 @@ fun <T : String?> T.foo() {
|
||||
bar4()
|
||||
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()
|
||||
}
|
||||
|
||||
<!UNSAFE_CALL!>length<!>
|
||||
|
||||
if (this is String) {
|
||||
length
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
bar1()
|
||||
bar2()
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ fun <T : String?> T.foo() {
|
||||
if (<!SENSELESS_COMPARISON!>this != null<!>) {}
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>length<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>bar1<!>()
|
||||
bar2()
|
||||
@@ -19,14 +19,14 @@ fun <T : String?> T.foo() {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>bar4<!>()
|
||||
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>bar1()
|
||||
}
|
||||
|
||||
<!UNSAFE_CALL!>length<!>
|
||||
|
||||
if (this is String) {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>length<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>bar1<!>()
|
||||
bar2()
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ fun foo2(a: A<out CharSequence>, b: A<in CharSequence>) {
|
||||
|
||||
a.foo2(Inv())
|
||||
a.foo2(<!TYPE_MISMATCH!>Inv<CharSequence>()<!>)
|
||||
a.foo2<<!UPPER_BOUND_VIOLATED!>Inv<CharSequence><!>>(<!TYPE_MISMATCH!>Inv()<!>)
|
||||
a.foo2<<!UPPER_BOUND_VIOLATED!>Inv<CharSequence><!>>(<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>Inv()<!>)
|
||||
|
||||
a.foo3(In())
|
||||
a.foo3(In<CharSequence>())
|
||||
@@ -32,7 +32,7 @@ fun foo2(a: A<out CharSequence>, b: A<in CharSequence>) {
|
||||
|
||||
b.foo2(Inv())
|
||||
b.foo2(<!TYPE_MISMATCH!>Inv<CharSequence>()<!>)
|
||||
b.foo2<<!UPPER_BOUND_VIOLATED!>Inv<CharSequence><!>>(<!TYPE_MISMATCH!>Inv()<!>)
|
||||
b.foo2<<!UPPER_BOUND_VIOLATED!>Inv<CharSequence><!>>(<!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>Inv()<!>)
|
||||
|
||||
|
||||
b.foo3(<!TYPE_MISMATCH!>In<CharSequence>()<!>)
|
||||
|
||||
+3
-3
@@ -57,13 +57,13 @@ fun test() {
|
||||
if (get() === null) {}
|
||||
|
||||
if (x != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals(1)<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals(1)
|
||||
x.equals("")
|
||||
x.hashCode()
|
||||
x.toString()
|
||||
x.test()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>test2()<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>test2()
|
||||
x.test2()
|
||||
}
|
||||
|
||||
|
||||
Vendored
+8
-8
@@ -25,36 +25,36 @@ fun <R1 : R2, R2> build4(x: R2, @BuilderInference block: TestInterface<R1>.() ->
|
||||
fun test(a: String?) {
|
||||
val ret1 = build {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret2 = build2 {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret3 = build3 {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret4 = build4(1) {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
|
||||
+6
-6
@@ -34,27 +34,27 @@ fun test(a: String?) {
|
||||
}
|
||||
val ret2 = build2 {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret3 = build3 {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret4 = build4(1) {
|
||||
emit(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
|
||||
+1
@@ -60,3 +60,4 @@ public open class Foo3</*0*/ T : kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -155,7 +155,7 @@ fun main() {
|
||||
select(id(id(fun(x: String, y: String) { }), <!TOO_MANY_ARGUMENTS!>fun String.(x: String) {}<!>), { x, y -> x })
|
||||
val x26: Int.(String) -> Int = <!TYPE_MISMATCH!>fun (x: String) = 10<!> // it must be error, see KT-38439
|
||||
// Receiver must be specified in anonymous function declaration
|
||||
val x27: Int.(String) -> Int = id(<!TYPE_MISMATCH!>fun <!EXPECTED_PARAMETERS_NUMBER_MISMATCH!>(<!EXPECTED_PARAMETER_TYPE_MISMATCH!>x: String<!>)<!> = 10<!>)
|
||||
val x27: Int.(String) -> Int = id(<!TYPE_MISMATCH, TYPE_MISMATCH!>fun <!EXPECTED_PARAMETERS_NUMBER_MISMATCH!>(<!EXPECTED_PARAMETER_TYPE_MISMATCH!>x: String<!>)<!> = 10<!>)
|
||||
select(id<Int.(String) -> Unit> {}, { x: Int, y: String -> x })
|
||||
|
||||
// Inferring lambda parameter types by partially specified parameter types of other lambdas
|
||||
|
||||
Vendored
+24
-24
@@ -116,8 +116,8 @@ public final class Main</*0*/ L> {
|
||||
public constructor Main</*0*/ L>(/*0*/ x: L?, /*1*/ y: L)
|
||||
public final val vx01: Foo<Bar<L>>
|
||||
public final val vx02: Foo<Bar<L>>
|
||||
public final val vx11: OutBar<Bar<out OutBar<L>>>
|
||||
public final val vx12: OutBar<Bar<out OutBar<L>>>
|
||||
public final val vx11: OutBar<Bar<out OutBar<L & Any>>>
|
||||
public final val vx12: OutBar<Bar<out OutBar<L & Any>>>
|
||||
public final val vx21: OutBar<Bar<in OutBar<L>>>
|
||||
public final val vx22: OutBar<Bar<in OutBar<L>>>
|
||||
public final val x00: Bar<L>
|
||||
@@ -128,12 +128,12 @@ public final class Main</*0*/ L> {
|
||||
public final val x11: Foo<Bar<L>>
|
||||
public final val x110: Bar<L>
|
||||
public final val x111: Bar<L>
|
||||
public final val x12: Foo<out Bar<out L>>
|
||||
public final val x120: Bar<out L>
|
||||
public final val x121: Bar<out L>
|
||||
public final val x12: Foo<Bar<L & Any>>
|
||||
public final val x120: Bar<L & Any>
|
||||
public final val x121: Bar<L & Any>
|
||||
public final val x122: Bar<L>
|
||||
public final val x123: Bar<L>
|
||||
public final val x13: Foo<out Bar<out L>>
|
||||
public final val x13: Foo<Bar<L & Any>>
|
||||
public final val x133: Bar<L?>
|
||||
public final val x135: Bar<L>
|
||||
public final val x137: Bar<L>
|
||||
@@ -146,8 +146,8 @@ public final class Main</*0*/ L> {
|
||||
public final val x154: Bar<L?>
|
||||
public final val x161: Bar<L>
|
||||
public final val x162: Bar<L>
|
||||
public final val x163: Bar<out L>
|
||||
public final val x164: Bar<out L>
|
||||
public final val x163: Bar<L & Any>
|
||||
public final val x164: Bar<L & Any>
|
||||
public final val x170: Bar<L>
|
||||
public final val x171: Bar<L>
|
||||
public final val x180: [ERROR : <ERROR FUNCTION RETURN TYPE>]
|
||||
@@ -164,24 +164,24 @@ public final class Main</*0*/ L> {
|
||||
public final val x231: Foo<Foo<Bar<out L>>>
|
||||
public final val x240: Foo<Foo<Bar<in L>>>
|
||||
public final val x241: Foo<Foo<Bar<in L>>>
|
||||
public final val x250: Bar<out L>
|
||||
public final val x251: Bar<out L>
|
||||
public final val x260: Foo<out Foo<out Bar<out L>>>
|
||||
public final val x261: Foo<out Foo<out Bar<out L>>>
|
||||
public final val x250: Bar<out L & Any>
|
||||
public final val x251: Bar<out L & Any>
|
||||
public final val x260: Foo<out Foo<out Bar<out L & Any>>>
|
||||
public final val x261: Foo<out Foo<out Bar<out L & Any>>>
|
||||
public final val x270: Foo<out Foo<Bar<out L>>>
|
||||
public final val x271: Foo<out Foo<Bar<out L>>>
|
||||
public final val x280: OutBar<OutBar<OutBar<L>>>
|
||||
public final val x281: OutBar<OutBar<OutBar<L>>>
|
||||
public final val x280: OutBar<OutBar<OutBar<L & Any>>>
|
||||
public final val x281: OutBar<OutBar<OutBar<L & Any>>>
|
||||
public final val x290: OutBar<Bar<OutBar<L>>>
|
||||
public final val x291: OutBar<Bar<OutBar<L>>>
|
||||
public final val x30: Foo<Bar<L>>
|
||||
public final val x300: OutBar<Bar<out OutBar<L>>>
|
||||
public final val x301: OutBar<Bar<out OutBar<L>>>
|
||||
public final val x300: OutBar<Bar<out OutBar<L & Any>>>
|
||||
public final val x301: OutBar<Bar<out OutBar<L & Any>>>
|
||||
public final val x31: Foo<Bar<L>>
|
||||
public final val x310: Bar<out L>
|
||||
public final val x311: Bar<out L>
|
||||
public final val x320: OutBar<L>
|
||||
public final val x321: OutBar<L>
|
||||
public final val x310: OutBarAliasUseSite<L & Any> /* = Bar<out L & Any> */
|
||||
public final val x311: OutBarAliasUseSite<L & Any> /* = Bar<out L & Any> */
|
||||
public final val x320: OutBarAliasDecSite<L & Any> /* = OutBar<L & Any> */
|
||||
public final val x321: OutBarAliasDecSite<L & Any> /* = OutBar<L & Any> */
|
||||
public final val x330: OutBar<InBar<OutBar<L>>>
|
||||
public final val x331: OutBar<InBar<OutBar<L>>>
|
||||
public final val x340: OutBar<Bar<in OutBar<L>>>
|
||||
@@ -212,15 +212,15 @@ public final class Main</*0*/ L> {
|
||||
public final val x451: OutBar<OutBar<Bar<L>>>
|
||||
public final val x460: Bar<OutBar<OutBar<L>>>
|
||||
public final val x461: Bar<OutBar<OutBar<L>>>
|
||||
public final val x470: OutBar<OutBar<OutBar<L>>>
|
||||
public final val x471: OutBar<OutBar<OutBar<L>>>
|
||||
public final val x470: OutBar<OutBar<OutBar<L & Any>>>
|
||||
public final val x471: OutBar<OutBar<OutBar<L & Any>>>
|
||||
public final val x480: Bar<L>
|
||||
public final val x481: Bar<L>
|
||||
public final val x482: Bar<kotlin.Nothing>
|
||||
public final val x50: Bar<in L>
|
||||
public final val x51: Bar<in L>
|
||||
public final val x60: OutBar<L>
|
||||
public final val x61: OutBar<L>
|
||||
public final val x60: OutBar<L & Any>
|
||||
public final val x61: OutBar<L & Any>
|
||||
public final val x70: InBar<L>
|
||||
public final val x71: InBar<L>
|
||||
public final val x80: Foo<Bar<L>>
|
||||
|
||||
@@ -54,5 +54,5 @@ fun test2(t: Test?) {
|
||||
val xSafeCallSafeCastExplicitType = t?.findViewById<X>(0) <!USELESS_CAST!>as? X<!>
|
||||
|
||||
val xSafeCallCast = t?.findViewById(0) as X
|
||||
val xSafeCallCastExplicitType = <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>t<!UNNECESSARY_SAFE_CALL!>?.<!>findViewById<X>(0)<!> as X
|
||||
val xSafeCallCastExplicitType = t<!UNNECESSARY_SAFE_CALL!>?.<!>findViewById<X>(0) as X
|
||||
}
|
||||
|
||||
@@ -54,5 +54,5 @@ fun test2(t: Test?) {
|
||||
val xSafeCallSafeCastExplicitType = t?.findViewById<X>(0) <!USELESS_CAST!>as? X<!>
|
||||
|
||||
val xSafeCallCast = t?.findViewById(0) as X
|
||||
val xSafeCallCastExplicitType = <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>t<!UNNECESSARY_SAFE_CALL!>?.<!>findViewById<X>(0)<!> as X
|
||||
val xSafeCallCastExplicitType = t<!UNNECESSARY_SAFE_CALL!>?.<!>findViewById<X>(0) as X
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ fun String.asFsdAddress(): String {
|
||||
fun box(): String {
|
||||
val state = Test().state
|
||||
if (state is GoBuildingRunningState<*>) {
|
||||
<!DEBUG_INFO_SMARTCAST, TYPE_MISMATCH_WARNING!>state<!>.buildingWorkingDirectory.asFsdAddress()
|
||||
state.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>buildingWorkingDirectory<!>.<!DEBUG_INFO_MISSING_UNRESOLVED!>asFsdAddress<!>()
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ fun test3() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>baz<!> {
|
||||
true
|
||||
}
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>baz<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>baz<!> { x ->
|
||||
true
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ fun test4() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>brr<!> {
|
||||
true
|
||||
}
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>brr<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!> ->
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>brr<!> { x ->
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package a
|
||||
|
||||
interface A {
|
||||
val b: B
|
||||
val nb: B?
|
||||
}
|
||||
|
||||
interface B {
|
||||
fun foo(): Int
|
||||
}
|
||||
|
||||
fun test(u: A?, x: A?, y: A?, z: A?, w: A, v: A?) {
|
||||
u?.b?.foo()!! // was UNNECESSARY_SAFE_CALL everywhere, because result type (of 'foo()') wasn't made nullable
|
||||
u<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()!!
|
||||
x?.b!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
// x?.b is not null
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
y?.nb?.foo()!!
|
||||
y<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.nb?.foo()!!
|
||||
z?.nb!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
// z?.nb is not null
|
||||
z<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.nb!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
w.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()!!
|
||||
w.b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
w.nb?.foo()!!
|
||||
w.nb!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
v!!.b.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
}
|
||||
|
||||
fun B?.bar(): Int = 1
|
||||
fun B?.baz(): Int? = 1
|
||||
|
||||
fun doInt(i: Int) = i
|
||||
|
||||
fun test(a: A?) {
|
||||
doInt(a?.b.bar()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>)
|
||||
doInt(a?.b.baz()!!)
|
||||
}
|
||||
+2
-3
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
package a
|
||||
|
||||
interface A {
|
||||
@@ -12,7 +11,7 @@ interface B {
|
||||
|
||||
fun test(u: A?, x: A?, y: A?, z: A?, w: A, v: A?) {
|
||||
u?.b?.foo()!! // was UNNECESSARY_SAFE_CALL everywhere, because result type (of 'foo()') wasn't made nullable
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>u<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!><!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
u<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
x?.b!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
// x?.b is not null
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
@@ -23,7 +22,7 @@ fun test(u: A?, x: A?, y: A?, z: A?, w: A, v: A?) {
|
||||
// z?.nb is not null
|
||||
z<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.nb!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>w.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!><!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
w.b<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
w.b<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
w.nb?.foo()!!
|
||||
w.nb!!.foo()<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
+1
-1
@@ -18,5 +18,5 @@ fun smartCastAfterIntersection(a: One, b: Two) = run {
|
||||
}
|
||||
|
||||
fun test(one: One, two: Two) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>smartCastAfterIntersection(one, two)<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>base<!>()<!>
|
||||
smartCastAfterIntersection(one, two)<!UNNECESSARY_SAFE_CALL!>?.<!><!UNRESOLVED_REFERENCE!>base<!>()
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ public class Throwables() {
|
||||
public fun <X : Throwable?> propagateIfInstanceOf(throwable : Throwable?, declaredType : Class<X?>?) : Unit {
|
||||
if (((throwable != null) && declaredType?.isInstance(throwable)!!))
|
||||
{
|
||||
throw <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>declaredType<!UNNECESSARY_SAFE_CALL!>?.<!>cast(throwable)<!>!!
|
||||
throw declaredType<!UNNECESSARY_SAFE_CALL!>?.<!>cast(throwable)!!
|
||||
}
|
||||
}
|
||||
public fun propagateIfPossible(throwable : Throwable?) : Unit {
|
||||
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
// SKIP_TXT
|
||||
|
||||
typealias A = CharSequence.(Int) -> Unit
|
||||
|
||||
var w: Int = 1
|
||||
|
||||
fun myPrint(x: Int) {}
|
||||
|
||||
fun <T> select(vararg x: T) = x[0]
|
||||
|
||||
val a1: A = select(
|
||||
{ a: Int -> myPrint(a + this.length + 1) },
|
||||
{ a: Int -> myPrint(a + this.length + 2) }
|
||||
)
|
||||
|
||||
val a2 = select(
|
||||
{ a: Int -> myPrint(a + this.length + 1) },
|
||||
fun CharSequence.(a: Int) { myPrint(a + this.length + 2) },
|
||||
{ a: Int -> myPrint(a + this.length + 3) }
|
||||
)
|
||||
+4
-3
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
|
||||
typealias A = CharSequence.(Int) -> Unit
|
||||
@@ -9,12 +10,12 @@ fun myPrint(x: Int) {}
|
||||
fun <T> select(vararg x: T) = x[0]
|
||||
|
||||
val a1: A = select(
|
||||
{ <!EXPECTED_PARAMETER_TYPE_MISMATCH!>a: Int<!> -> myPrint(a + this.length + 1) },
|
||||
{ a: Int -> myPrint(a + this.length + 1) },
|
||||
{ a: Int -> myPrint(a + this.length + 2) }
|
||||
)
|
||||
|
||||
val a2 = select(
|
||||
{ a: Int -> myPrint(a + this.<!UNRESOLVED_REFERENCE!>length<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>+<!> 1) },
|
||||
{ a: Int -> myPrint(a + this.length + 1) },
|
||||
fun CharSequence.(a: Int) { myPrint(a + this.length + 2) },
|
||||
{ a: Int -> myPrint(a + this.<!UNRESOLVED_REFERENCE!>length<!> <!DEBUG_INFO_MISSING_UNRESOLVED!>+<!> 3) }
|
||||
{ a: Int -> myPrint(a + this.length + 3) }
|
||||
)
|
||||
|
||||
+1
-1
@@ -6,4 +6,4 @@ object FooImpl : IFoo
|
||||
|
||||
inline class Test1(val x: Any) : <!VALUE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION!>IFoo<!> by FooImpl
|
||||
|
||||
inline class Test2(val x: IFoo) : <!VALUE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION!>IFoo<!> by x
|
||||
inline class Test2(val x: IFoo) : IFoo by x
|
||||
|
||||
compiler/testData/diagnostics/tests/inlineClasses/inlineClassCannotImplementInterfaceByDelegation.kt
Vendored
+1
-1
@@ -6,4 +6,4 @@ object FooImpl : IFoo
|
||||
|
||||
inline class Test1(val x: Any) : <!VALUE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION!>IFoo by FooImpl<!>
|
||||
|
||||
inline class Test2(val x: IFoo) : <!VALUE_CLASS_CANNOT_IMPLEMENT_INTERFACE_BY_DELEGATION!>IFoo by x<!>
|
||||
inline class Test2(val x: IFoo) : IFoo by x
|
||||
|
||||
Vendored
+1
@@ -26,3 +26,4 @@ public open class Y : X<kotlin.String!> {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
@@ -26,3 +26,4 @@ public open class Y : X<A!> {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
@@ -18,3 +18,4 @@ public open class IntBox : Box<kotlin.Int!> {
|
||||
@java.lang.Override public open override /*1*/ fun put(/*0*/ @org.jetbrains.annotations.NotNull t: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
// FILE: foo.kt
|
||||
fun main() {
|
||||
val c: Type
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (<!UNINITIALIZED_VARIABLE!>c<!>) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (<!UNINITIALIZED_VARIABLE!>c<!>) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// FIR_IDENTICAL
|
||||
// FULL_JDK
|
||||
// SKIP_TXT
|
||||
|
||||
import java.security.Provider
|
||||
|
||||
|
||||
-114
@@ -1,114 +0,0 @@
|
||||
package
|
||||
|
||||
public final class Example : java.security.Provider {
|
||||
public constructor Example()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var count: kotlin.Int
|
||||
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var defaults: java.util.Properties!
|
||||
public open override /*1*/ /*fake_override*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Any!, kotlin.Any!>>
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var entrySet: kotlin.collections.(Mutable)Set<kotlin.collections.(Mutable)Map.(Mutable)Entry<kotlin.Any!, kotlin.Any!>!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var entrySetCallCount: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var info: kotlin.String!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var initialized: kotlin.Boolean
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var keySet: kotlin.collections.(Mutable)Set<kotlin.Any!>!
|
||||
public open override /*1*/ /*fake_override*/ val keys: kotlin.collections.MutableSet<kotlin.Any!>
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var legacyChanged: kotlin.Boolean
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var legacyMap: kotlin.collections.(Mutable)Map<java.security.Provider.ServiceKey!, java.security.Provider.Service!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var legacyStrings: kotlin.collections.(Mutable)Map<kotlin.String!, kotlin.String!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var loadFactor: kotlin.Float
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var modCount: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var name: kotlin.String!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var serviceMap: kotlin.collections.(Mutable)Map<java.security.Provider.ServiceKey!, java.security.Provider.Service!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var serviceSet: kotlin.collections.(Mutable)Set<java.security.Provider.Service!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var servicesChanged: kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ val size: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var table: kotlin.Array<(out) java.util.Hashtable.Entry<*, *>!>!
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var threshold: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var values: kotlin.collections.(Mutable)Collection<kotlin.Any!>!
|
||||
public open override /*1*/ /*fake_override*/ val values: kotlin.collections.MutableCollection<kotlin.Any!>
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var version: kotlin.Double
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun addEntry(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Any!, /*2*/ p2: kotlin.Any!, /*3*/ p3: kotlin.Int): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun check(/*0*/ p0: kotlin.String!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun checkInitialized(): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun checkLegacy(/*0*/ p0: kotlin.Any!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
|
||||
public open override /*1*/ /*fake_override*/ fun compute(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any?, out kotlin.Any?>): kotlin.Any?
|
||||
public open override /*1*/ /*fake_override*/ fun computeIfAbsent(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.Function<in kotlin.Any!, out kotlin.Any!>): kotlin.Any!
|
||||
public open override /*1*/ /*fake_override*/ fun computeIfPresent(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any, out kotlin.Any?>): kotlin.Any?
|
||||
public open override /*1*/ /*fake_override*/ fun contains(/*0*/ p0: kotlin.Any!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: kotlin.Any!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: kotlin.Any!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun elements(): java.util.Enumeration<kotlin.Any!>!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun ensureLegacyParsed(): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun enumerate(/*0*/ p0: java.util.Hashtable<kotlin.String!, kotlin.Any!>!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun enumerateStringProperties(/*0*/ p0: java.util.Hashtable<kotlin.String!, kotlin.String!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in kotlin.Any!, in kotlin.Any!>): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun get(/*0*/ key: kotlin.Any!): kotlin.Any?
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun </*0*/ T : kotlin.Any!> getEnumeration(/*0*/ p0: kotlin.Int): java.util.Enumeration<T!>!
|
||||
public open override /*1*/ /*fake_override*/ fun getInfo(): kotlin.String!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun </*0*/ T : kotlin.Any!> getIterator(/*0*/ p0: kotlin.Int): kotlin.collections.(Mutable)Iterator<T!>!
|
||||
public open override /*1*/ /*fake_override*/ fun getName(): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ key: kotlin.Any!, /*1*/ defaultValue: kotlin.Any!): kotlin.Any!
|
||||
public open override /*1*/ /*fake_override*/ fun getProperty(/*0*/ p0: kotlin.String!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun getProperty(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun getService(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!): java.security.Provider.Service!
|
||||
public open override /*1*/ /*fake_override*/ fun getServices(): kotlin.collections.(Mutable)Set<java.security.Provider.Service!>!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun getTypeAndAlgorithm(/*0*/ p0: kotlin.String!): kotlin.Array<(out) kotlin.String!>!
|
||||
public open override /*1*/ /*fake_override*/ fun getVersion(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implClear(): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implCompute(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any!, out kotlin.Any!>!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implComputeIfAbsent(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.Function<in kotlin.Any!, out kotlin.Any!>!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implComputeIfPresent(/*0*/ p0: kotlin.Any!, /*1*/ p1: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any!, out kotlin.Any!>!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implMerge(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!, /*2*/ p2: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any!, out kotlin.Any!>!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implPut(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implPutAll(/*0*/ p0: kotlin.collections.(Mutable)Map<*, *>!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implPutIfAbsent(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implRemove(/*0*/ p0: kotlin.Any!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implRemove(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Boolean
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implRemoveService(/*0*/ p0: java.security.Provider.Service!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implReplace(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Any!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implReplace(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!, /*2*/ p2: kotlin.Any!): kotlin.Boolean
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun implReplaceAll(/*0*/ p0: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any!, out kotlin.Any!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun keys(): java.util.Enumeration<kotlin.Any!>!
|
||||
public open override /*1*/ /*fake_override*/ fun list(/*0*/ p0: java.io.PrintStream!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun list(/*0*/ p0: java.io.PrintWriter!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun load(/*0*/ p0: java.io.InputStream!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun load(/*0*/ p0: java.io.Reader!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun load0(/*0*/ p0: java.util.Properties.LineReader!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun loadConvert(/*0*/ p0: kotlin.CharArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int, /*3*/ p3: kotlin.CharArray!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun loadFromXML(/*0*/ p0: java.io.InputStream!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun merge(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any, /*2*/ p2: java.util.function.BiFunction<in kotlin.Any, in kotlin.Any, out kotlin.Any?>): kotlin.Any?
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun parseLegacyPut(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun propertyNames(): java.util.Enumeration<*>!
|
||||
public open override /*1*/ /*fake_override*/ fun put(/*0*/ key: kotlin.Any!, /*1*/ value: kotlin.Any!): kotlin.Any?
|
||||
public open override /*1*/ /*fake_override*/ fun putAll(/*0*/ from: kotlin.collections.Map<*, *>): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun putId(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun putIfAbsent(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Any?
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun putPropertyStrings(/*0*/ p0: java.security.Provider.Service!): kotlin.Unit
|
||||
protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun putService(/*0*/ p0: java.security.Provider.Service!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun readObject(/*0*/ p0: java.io.ObjectInputStream!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun reconstitutionPut(/*0*/ p0: kotlin.Array<(out) java.util.Hashtable.Entry<*, *>!>!, /*1*/ p1: kotlin.Any!, /*2*/ p2: kotlin.Any!): kotlin.Unit
|
||||
protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun rehash(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.Any!): kotlin.Any?
|
||||
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ key: kotlin.Any!, /*1*/ value: kotlin.Any!): kotlin.Boolean
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun removeInvalidServices(/*0*/ p0: kotlin.collections.(Mutable)Map<java.security.Provider.ServiceKey!, java.security.Provider.Service!>!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun removePropertyStrings(/*0*/ p0: java.security.Provider.Service!): kotlin.Unit
|
||||
protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun removeService(/*0*/ p0: java.security.Provider.Service!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Any?
|
||||
public open override /*1*/ /*fake_override*/ fun replace(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!, /*2*/ p2: kotlin.Any!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun replaceAll(/*0*/ p0: java.util.function.BiFunction<in kotlin.Any!, in kotlin.Any!, out kotlin.Any!>): kotlin.Unit
|
||||
@kotlin.Deprecated(message = "Deprecated in Java") public open override /*1*/ /*fake_override*/ fun save(/*0*/ p0: java.io.OutputStream!, /*1*/ p1: kotlin.String!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun saveConvert(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Boolean, /*2*/ p2: kotlin.Boolean): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun setProperty(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.String!): kotlin.Any!
|
||||
public open override /*1*/ /*fake_override*/ fun store(/*0*/ p0: java.io.OutputStream!, /*1*/ p1: kotlin.String!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun store(/*0*/ p0: java.io.Writer!, /*1*/ p1: kotlin.String!): kotlin.Unit
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun store0(/*0*/ p0: java.io.BufferedWriter!, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.Boolean): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun storeToXML(/*0*/ p0: java.io.OutputStream!, /*1*/ p1: kotlin.String!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun storeToXML(/*0*/ p0: java.io.OutputStream!, /*1*/ p1: kotlin.String!, /*2*/ p2: kotlin.String!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun stringPropertyNames(): kotlin.collections.(Mutable)Set<kotlin.String!>!
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun writeObject(/*0*/ p0: java.io.ObjectOutputStream!): kotlin.Unit
|
||||
}
|
||||
|
||||
+1
-1
@@ -30,6 +30,6 @@ import p.*
|
||||
|
||||
fun <Y, Z> test(b: B<Y, Z>?) {
|
||||
if (b is C<Y, Z>) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(null)<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(null)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,6 +31,6 @@ fun test(b: B?, c: C) {
|
||||
b?.foo(1, 1)
|
||||
c.<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,6 +31,6 @@ fun test(b: B?, c: C) {
|
||||
b?.foo(1, 1)
|
||||
c.foo(1, 1)
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!><!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(1, 1)
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -31,6 +31,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b?.getParent()<!>
|
||||
b?.getParent()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,6 +31,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!><!DEBUG_INFO_SMARTCAST!>b<!>?.getParent()<!>
|
||||
<!DEBUG_INFO_SMARTCAST!>b<!>?.getParent()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -29,6 +29,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!>foo(1, "")<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!>foo(1, "")
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -29,6 +29,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!><!DEBUG_INFO_SMARTCAST!>b<!><!UNNECESSARY_SAFE_CALL!>?.<!>foo(1, "")<!>
|
||||
<!DEBUG_INFO_SMARTCAST!>b<!><!UNNECESSARY_SAFE_CALL!>?.<!>foo(1, "")
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -34,6 +34,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C && b is D) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!>getParent()<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!>getParent()
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -30,6 +30,6 @@ import p.*
|
||||
|
||||
fun test(b: B?) {
|
||||
if (b is C) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>b<!UNNECESSARY_SAFE_CALL!>?.<!>foo("")<!>
|
||||
b<!UNNECESSARY_SAFE_CALL!>?.<!>foo("")
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -25,9 +25,9 @@ fun A.test2() {
|
||||
this.bar()
|
||||
this.buzz()
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!> // warning
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>bar()<!> // warning
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>buzz()<!> // warning
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>foo() // warning
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>bar() // warning
|
||||
this<!UNNECESSARY_SAFE_CALL!>?.<!>buzz() // warning
|
||||
}
|
||||
|
||||
fun A?.test3() {
|
||||
|
||||
Vendored
+1
@@ -11,3 +11,4 @@ public open class JClass {
|
||||
// Static members
|
||||
@org.jetbrains.annotations.NotNull public open fun </*0*/ T : kotlin.Any!> getNotNullT(): T
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ fun <N : Number?> test(arg: N) {
|
||||
|
||||
makeDefinitelyNotNull(arg)<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>makeDefinitelyNotNull(arg)<!UNNECESSARY_SAFE_CALL!>?.<!>toInt()<!>
|
||||
makeDefinitelyNotNull(arg)<!UNNECESSARY_SAFE_CALL!>?.<!>toInt()
|
||||
|
||||
val nullImposible = when (val dnn = makeDefinitelyNotNull(arg)) {
|
||||
<!SENSELESS_NULL_IN_WHEN!>null<!> -> false
|
||||
|
||||
Vendored
+2
-2
@@ -1,13 +1,13 @@
|
||||
fun <T> test(t: T): String? {
|
||||
if (t != null) {
|
||||
return <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>t<!UNNECESSARY_SAFE_CALL!>?.<!>toString()<!>
|
||||
return t<!UNNECESSARY_SAFE_CALL!>?.<!>toString()
|
||||
}
|
||||
return t?.toString()
|
||||
}
|
||||
|
||||
fun <T> T.testThis(): String? {
|
||||
if (this != null) {
|
||||
return <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>toString()<!>
|
||||
return this<!UNNECESSARY_SAFE_CALL!>?.<!>toString()
|
||||
}
|
||||
return this?.toString()
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,13 +1,13 @@
|
||||
fun <T> test(t: T): String? {
|
||||
if (t != null) {
|
||||
return <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>t<!UNNECESSARY_SAFE_CALL!>?.<!>toString()<!>
|
||||
return t<!UNNECESSARY_SAFE_CALL!>?.<!>toString()
|
||||
}
|
||||
return <!DEBUG_INFO_CONSTANT!>t<!>?.toString()
|
||||
}
|
||||
|
||||
fun <T> T.testThis(): String? {
|
||||
if (this != null) {
|
||||
return <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>this<!UNNECESSARY_SAFE_CALL!>?.<!>toString()<!>
|
||||
return this<!UNNECESSARY_SAFE_CALL!>?.<!>toString()
|
||||
}
|
||||
return this?.toString()
|
||||
}
|
||||
|
||||
+27
-27
@@ -52,40 +52,40 @@ fun foo(a: A?) {
|
||||
a?.w.inc()
|
||||
|
||||
if (a != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!> += 1
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0]
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0]++
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0] = 1
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l += 1
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0]
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0]++
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0] = 1
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0]
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0]++
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0] = 1
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0][0]
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0][0]++
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0][0] = 1
|
||||
// No warning is reported because
|
||||
// 1. All kinds of green code with safe+call + invoke we identified fails with CCE if `a != null`, anyway
|
||||
// 2. In case of null value, the behavior is intended (no call performed)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q()<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>++
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>q()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>w++
|
||||
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>) += 1
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0]
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0]++
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0] = 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l) += 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0]
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0]++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0] = 1
|
||||
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0]
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0]++
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0] = 1
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q<!>)()
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>)++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0]
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0]++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0] = 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>q)()
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>w)++
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.plusAssign(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.get(0)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.get(0).inc()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.set(0, 1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.plusAssign(1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.get(0)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.get(0).inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.set(0, 1)
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).get(0)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).get(0).inc()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).set(0, 1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q<!>.invoke()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>.inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).get(0)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).get(0).inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).set(0, 1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>q.invoke()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>w.inc()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,40 +52,40 @@ fun foo(a: A?) {
|
||||
a?.w.inc()
|
||||
|
||||
if (a != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!> += 1
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0]
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0]++
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>[0] = 1
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l <!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>+=<!> 1
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0]<!>
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER, NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0]<!>++
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l[0]<!> = 1
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0]
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0]++
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>[0][0] = 1
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0]<!>[0]
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0]<!>[0]++
|
||||
<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll[0]<!>[0] = 1
|
||||
// No warning is reported because
|
||||
// 1. All kinds of green code with safe+call + invoke we identified fails with CCE if `a != null`, anyway
|
||||
// 2. In case of null value, the behavior is intended (no call performed)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q()<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>++
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>q()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!NULLABLE_EXTENSION_OPERATOR_WITH_SAFE_CALL_RECEIVER!>++<!>
|
||||
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>) += 1
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0]
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0]++
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>)[0] = 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l) += 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0]
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0]++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>l)[0] = 1
|
||||
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0]
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0]++
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>)[0][0] = 1
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q<!>)()
|
||||
(<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>)++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0]
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0]++
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>ll)[0][0] = 1
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>q)()
|
||||
(a<!UNNECESSARY_SAFE_CALL!>?.<!>w)++
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.plusAssign(1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.get(0)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.get(0).inc()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>l<!>.set(0, 1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.plusAssign(1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.get(0)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.get(0).inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>l.set(0, 1)
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).get(0)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).get(0).inc()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>ll<!>.get(0).set(0, 1)
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>q<!>.invoke()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>w<!>.inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).get(0)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).get(0).inc()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>ll.get(0).set(0, 1)
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>q.invoke()
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>w.inc()
|
||||
}
|
||||
}
|
||||
|
||||
compiler/testData/diagnostics/tests/platformTypes/notNullTypeParameter/enhancementFromAnnotation.txt
Vendored
+1
@@ -27,3 +27,4 @@ public open class C</*0*/ F : kotlin.Any!> : B<F!>, A<F!> {
|
||||
// Static members
|
||||
public open fun create(): C<kotlin.String!>!
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
@@ -12,3 +12,4 @@ public open class A {
|
||||
public open fun </*0*/ T : kotlin.Any!> bar(/*0*/ @org.jetbrains.annotations.NotNull x: T, /*1*/ y: T!): kotlin.Unit
|
||||
public open fun platformString(): kotlin.String!
|
||||
}
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -19,6 +19,6 @@ public class A<T> {
|
||||
// FILE: k.kt
|
||||
|
||||
fun test() {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>A.create().bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>A<String?>().bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
A.create().bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
A<String?>().bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -12,3 +12,4 @@ public open class A</*0*/ T : kotlin.Any!> {
|
||||
// Static members
|
||||
public open fun create(): A<kotlin.String!>!
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -12,3 +12,4 @@ public open class A</*0*/ T : kotlin.Any!> {
|
||||
// Static members
|
||||
public open fun create(): A<kotlin.String!>!
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -15,6 +15,6 @@ public class A<T> {
|
||||
// FILE: k.kt
|
||||
|
||||
fun test(a: A<out CharSequence>) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a.bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a.bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
a.bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
a.bar()<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -9,3 +9,4 @@ public open class A</*0*/ T : kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
@@ -42,3 +42,4 @@ public final class C2 : A<kotlin.String?> {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -17,3 +17,4 @@ public open class J {
|
||||
@org.jetbrains.annotations.Nullable public open fun </*0*/ T : kotlin.Any!> getNAny(): T?
|
||||
@org.jetbrains.annotations.NotNull public open fun </*0*/ T : kotlin.Any!> getNNAny(): T
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ public class J {
|
||||
fun list(j: J): Any {
|
||||
val a = j.n()!!
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>a<!UNNECESSARY_SAFE_CALL!>?.<!>get(0)<!>
|
||||
a<!UNNECESSARY_SAFE_CALL!>?.<!>get(0)
|
||||
if (<!SENSELESS_COMPARISON!>a == null<!>) {}
|
||||
a<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
|
||||
|
||||
+4
-4
@@ -25,20 +25,20 @@ fun test() {
|
||||
// platform type with no annotation
|
||||
val platformJ = J.staticJ
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>platformNN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!>
|
||||
platformNN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
platformN?.foo()
|
||||
platformJ?.foo()
|
||||
|
||||
if (platformNN != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>platformNN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!>
|
||||
platformNN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
if (platformN != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>platformN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!>
|
||||
platformN<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
|
||||
if (platformJ != null) {
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>platformJ<!UNNECESSARY_SAFE_CALL!>?.<!>foo()<!>
|
||||
platformJ<!UNNECESSARY_SAFE_CALL!>?.<!>foo()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -28,3 +28,4 @@ public/*package*/ open class Test {
|
||||
// Static members
|
||||
public/*package*/ final var rawField: A<(raw) kotlin.Any!>!
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -49,3 +49,4 @@ public interface C3 : B1 {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
fun foo(f: Boolean): Int {
|
||||
val i: Int
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (f) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (f) {
|
||||
true -> i = 1
|
||||
}
|
||||
<!VAL_REASSIGNMENT!>i<!> = 3
|
||||
|
||||
@@ -14,7 +14,7 @@ fun test(room : <!PLATFORM_CLASS_MAPPED_TO_KOTLIN!>Object<!>) {
|
||||
for(item: Item? in items) {
|
||||
if (item?.room === room) {
|
||||
// item?.room is not null
|
||||
System.out.println("You see " + <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>item<!UNNECESSARY_SAFE_CALL!>?.<!>name<!>)
|
||||
System.out.println("You see " + item<!UNNECESSARY_SAFE_CALL!>?.<!>name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,6 +4,6 @@ fun main() {
|
||||
|
||||
val command : Any = 1
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>command<!UNNECESSARY_SAFE_CALL!>?.<!>equals(null)<!>
|
||||
command<!UNNECESSARY_SAFE_CALL!>?.<!>equals(null)
|
||||
command.equals(null)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@ fun main() {
|
||||
|
||||
val command : Any = 1
|
||||
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>command<!UNNECESSARY_SAFE_CALL!>?.<!>equals(null)<!>
|
||||
command<!UNNECESSARY_SAFE_CALL!>?.<!>equals(null)
|
||||
command.equals(null)
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ public class Throwables() {
|
||||
public fun <X : Throwable?> propagateIfInstanceOf(throwable : Throwable?, declaredType : Class<X?>?) {
|
||||
if (((throwable != null) && declaredType?.isInstance(throwable)!!))
|
||||
{
|
||||
throw <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>declaredType<!UNNECESSARY_SAFE_CALL!>?.<!>cast(throwable)<!>!!
|
||||
throw declaredType<!UNNECESSARY_SAFE_CALL!>?.<!>cast(throwable)!!
|
||||
}
|
||||
}
|
||||
public fun propagateIfPossible(throwable : Throwable?) {
|
||||
|
||||
@@ -31,7 +31,7 @@ fun testNullableReceiver(nullable: Cls?) {
|
||||
|
||||
fun testNotNullableReceiver(notNullable: Cls) {
|
||||
notNullable.<!UNSAFE_IMPLICIT_INVOKE_CALL!>nullableExtensionProperty<!>()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>notNullable<!UNNECESSARY_SAFE_CALL!>?.<!>extensionProperty()<!>
|
||||
notNullable<!UNNECESSARY_SAFE_CALL!>?.<!>extensionProperty()
|
||||
}
|
||||
|
||||
fun testFlexibleReceiver() {
|
||||
|
||||
@@ -31,7 +31,7 @@ fun testNullableReceiver(nullable: Cls?) {
|
||||
|
||||
fun testNotNullableReceiver(notNullable: Cls) {
|
||||
notNullable.<!UNSAFE_IMPLICIT_INVOKE_CALL!>nullableExtensionProperty<!>()
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>notNullable<!UNNECESSARY_SAFE_CALL!>?.<!>extensionProperty()<!>
|
||||
notNullable<!UNNECESSARY_SAFE_CALL!>?.<!>extensionProperty()
|
||||
}
|
||||
|
||||
fun testFlexibleReceiver() {
|
||||
|
||||
+2
-2
@@ -7,5 +7,5 @@ class In<in T>() {
|
||||
|
||||
fun test1(x: In<String>): Unit = x.f("1")
|
||||
fun test2(x: In<in String>): Unit = x.f("1")
|
||||
fun test3(x: In<<!CONFLICTING_PROJECTION!>out<!> String>): Unit = x.<!NONE_APPLICABLE!>f<!>("1")
|
||||
fun test4(x: In<*>): Unit = x.<!NONE_APPLICABLE!>f<!>("1")
|
||||
fun test3(x: In<<!CONFLICTING_PROJECTION!>out<!> String>): Unit = x.f(<!TYPE_MISMATCH!>"1"<!>)
|
||||
fun test4(x: In<*>): Unit = x.f(<!TYPE_MISMATCH!>"1"<!>)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
// FILE: Test.java
|
||||
public class Test {
|
||||
interface MyRunnable extends Runnable {}
|
||||
|
||||
public static void foo(MyRunnable r) {}
|
||||
public static void foo(Runnable r) {}
|
||||
}
|
||||
|
||||
// FILE: 1.kt
|
||||
fun main(args: Array<String>) {
|
||||
Test.foo { }
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: Test.java
|
||||
public class Test {
|
||||
interface MyRunnable extends Runnable {}
|
||||
@@ -8,5 +9,5 @@ public class Test {
|
||||
|
||||
// FILE: 1.kt
|
||||
fun main(args: Array<String>) {
|
||||
Test.<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!> { }
|
||||
Test.foo { }
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
private class Bar
|
||||
|
||||
sealed class SealedFoo(
|
||||
val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: Bar,
|
||||
val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR!>x<!>: Bar,
|
||||
private val y: Bar,
|
||||
z: Bar
|
||||
)
|
||||
|
||||
abstract class AbstractFoo(
|
||||
<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: Bar<!>,
|
||||
<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR!>x<!>: Bar<!>,
|
||||
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
|
||||
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
private class Bar
|
||||
|
||||
sealed class SealedFoo(
|
||||
val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: Bar,
|
||||
val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR!>x<!>: Bar,
|
||||
private val y: Bar,
|
||||
z: Bar
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ fun foo(my: My) {
|
||||
if (my.x != null) {
|
||||
// my.x should be smart-cast
|
||||
if (my.x) doIt()
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (my.x) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (my.x) {
|
||||
true -> doIt()
|
||||
}
|
||||
when {
|
||||
@@ -21,7 +21,7 @@ fun bar(x: Boolean?) {
|
||||
if (x != null) {
|
||||
// x should be smart-cast
|
||||
if (x) doIt()
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (x) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (x) {
|
||||
true -> doIt()
|
||||
}
|
||||
when {
|
||||
|
||||
@@ -8,7 +8,7 @@ fun foo(my: My) {
|
||||
if (my.x != null) {
|
||||
// my.x should be smart-cast
|
||||
if (<!DEBUG_INFO_SMARTCAST!>my.x<!>) doIt()
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (<!DEBUG_INFO_SMARTCAST!>my.x<!>) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (<!DEBUG_INFO_SMARTCAST!>my.x<!>) {
|
||||
true -> doIt()
|
||||
}
|
||||
when {
|
||||
@@ -21,7 +21,7 @@ fun bar(x: Boolean?) {
|
||||
if (x != null) {
|
||||
// x should be smart-cast
|
||||
if (<!DEBUG_INFO_SMARTCAST!>x<!>) doIt()
|
||||
<!NON_EXHAUSTIVE_WHEN_STATEMENT!>when<!> (<!DEBUG_INFO_SMARTCAST!>x<!>) {
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (<!DEBUG_INFO_SMARTCAST!>x<!>) {
|
||||
true -> doIt()
|
||||
}
|
||||
when {
|
||||
|
||||
Vendored
+2
-2
@@ -5,7 +5,7 @@ fun test(foo: Foo?) {
|
||||
// Correct
|
||||
foo.bar?.length
|
||||
// Unnecessary
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>foo<!UNNECESSARY_SAFE_CALL!>?.<!>bar<!>?.length
|
||||
foo<!UNNECESSARY_SAFE_CALL!>?.<!>bar?.length
|
||||
}
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>foo.bar<!UNNECESSARY_SAFE_CALL!>?.<!>length<!>
|
||||
foo.bar<!UNNECESSARY_SAFE_CALL!>?.<!>length
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ fun test(foo: Foo?) {
|
||||
// Correct
|
||||
<!DEBUG_INFO_SMARTCAST!>foo<!>.bar?.length
|
||||
// Unnecessary
|
||||
<!SAFE_CALL_WILL_CHANGE_NULLABILITY!>foo<!UNNECESSARY_SAFE_CALL!>?.<!>bar<!>?.length
|
||||
foo<!UNNECESSARY_SAFE_CALL!>?.<!>bar?.length
|
||||
}
|
||||
<!DEBUG_INFO_SMARTCAST!>foo<!>.bar?.length
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ fun foo(x: Iterator<String>, y: Iterator<String?>) {
|
||||
x.forEachRemaining(<!NULL_FOR_NONNULL_TYPE!>null<!>)
|
||||
|
||||
x.forEachRemaining { it -> it.length }
|
||||
x.forEachRemaining { it -> <!SAFE_CALL_WILL_CHANGE_NULLABILITY!>it<!UNNECESSARY_SAFE_CALL!>?.<!>length<!> }
|
||||
x.forEachRemaining { it -> it<!UNNECESSARY_SAFE_CALL!>?.<!>length }
|
||||
y.forEachRemaining { it -> it<!UNSAFE_CALL!>.<!>length }
|
||||
y.forEachRemaining { it -> it?.length }
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user