K2: Don't report BUILDER_INFERENCE_STUB_RECEIVER for members of Any
This commit actually does two things: - Adds Any scope to stub type - Makes CheckDispatchReceiver treat stub types as non-null for the unsafe call check to make such candidates viable Related to KT-59369
This commit is contained in:
committed by
Space Team
parent
0ed6256bcc
commit
299d279915
Vendored
+20
-20
@@ -23,10 +23,10 @@ fun test() {
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.hashCode()<!>
|
||||
get()?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
get()?.hashCode()
|
||||
get()?.equals(1)
|
||||
// there is `String?.equals` extension
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().equals("")<!>
|
||||
get().equals("")
|
||||
}
|
||||
val ret2 = build {
|
||||
emit(1)
|
||||
@@ -34,12 +34,12 @@ fun test() {
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.hashCode()<!>
|
||||
get()?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
get()?.hashCode()
|
||||
get()?.equals(1)
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x?.hashCode()<!>
|
||||
x?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x.equals("")<!>
|
||||
x?.hashCode()
|
||||
x?.equals(1)
|
||||
x.equals("")
|
||||
}
|
||||
val ret3 = build {
|
||||
emit(1)
|
||||
@@ -47,11 +47,11 @@ fun test() {
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.hashCode()<!>
|
||||
get()?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
get()?.hashCode()
|
||||
get()?.equals(1)
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x?.hashCode()<!>
|
||||
x?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
x?.hashCode()
|
||||
x?.equals(1)
|
||||
|
||||
if (get() == null) {}
|
||||
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
|
||||
@@ -163,11 +163,11 @@ fun test() {
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.hashCode()<!>
|
||||
get()?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
get()?.hashCode()
|
||||
get()?.equals(1)
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x?.hashCode()<!>
|
||||
x?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
x?.hashCode()
|
||||
x?.equals(1)
|
||||
|
||||
if (get() == null) {}
|
||||
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
|
||||
@@ -293,11 +293,11 @@ fun test() {
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.hashCode()<!>
|
||||
get()?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
get()?.hashCode()
|
||||
get()?.equals(1)
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x?.hashCode()<!>
|
||||
x?.<!NONE_APPLICABLE!>equals<!>(1)
|
||||
x?.hashCode()
|
||||
x?.equals(1)
|
||||
|
||||
if (get() == null) {}
|
||||
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
|
||||
|
||||
Vendored
+6
-6
@@ -25,27 +25,27 @@ fun <R1 : R2, R2> build4(x: R2, block: TestInterface<R1>.() -> Unit): R1 = TODO(
|
||||
fun test(a: String?) {
|
||||
val ret1 = build {
|
||||
emit(1)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret2 = build2 {
|
||||
emit(1)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
}
|
||||
val ret3 = build3 {
|
||||
emit(1)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
val x = get()
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")<!>
|
||||
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
|
||||
x <!USELESS_ELVIS!>?: 1<!>
|
||||
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
|
||||
""
|
||||
|
||||
Reference in New Issue
Block a user