FIR: attach annotations to Java-converted cone types

This commit is contained in:
pyos
2021-08-11 16:16:42 +02:00
committed by teamcityserver
parent 5355d04553
commit 5704dffdbe
20 changed files with 122 additions and 332 deletions
@@ -44,8 +44,10 @@ fun main(
b: AnnotatedBoundsOfWildcard
): Unit {
b.superAsIs(aAnyNotNullNotNullNotNull)
b.superAsIs(aAnyNotNullNotNullNull)
// jspecify_nullness_mismatch
b.superAsIs(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superAsIs(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull)
@@ -54,18 +56,19 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull)
b.superNullable(aAnyNotNullNotNullNotNull)
b.superNullable(aAnyNotNullNotNullNull)
b.superNullable(aAnyNotNullNullNotNull)
b.superNullable(aAnyNotNullNullNull)
// jspecify_nullness_mismatch
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNull)
b.extendsAsIs(aNotNullNullNotNull)
b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch
@@ -76,18 +79,12 @@ fun main(
b.extendsNotNull(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNull)
b.extendsNullable(aNotNullNullNotNull)
b.extendsNullable(aNotNullNullNull)
b.noBounds(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.noBounds(aNotNullNotNullNull)
b.noBounds(aNotNullNullNotNull)
b.noBounds(aNotNullNullNull)
}
@@ -1,38 +0,0 @@
// JSPECIFY_STATE: strict
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: WildcardsWithDefault.java
import org.jspecify.nullness.*;
@NullMarked
public class WildcardsWithDefault {
public void noBoundsNotNull(A<?, ?, ?> a) {}
public void noBoundsNullable(A<? extends @Nullable Object, ? extends @Nullable Object, ? extends @Nullable Object> a) {}
}
// FILE: A.java
import org.jspecify.nullness.*;
public class A <T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {}
// FILE: main.kt
fun main(
aNotNullNotNullNotNull: A<Any, Any, Any>,
aNotNullNotNullNull: A<Any, Any, Any?>,
aNotNullNullNotNull: A<Any, Any?, Any>,
aNotNullNullNull: A<Any, Any?, Any?>,
b: WildcardsWithDefault
): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull)
b.noBoundsNotNull(aNotNullNotNullNull)
b.noBoundsNotNull(aNotNullNullNotNull)
b.noBoundsNotNull(aNotNullNullNull)
b.noBoundsNullable(aNotNullNotNullNotNull)
// jspecify_nullness_mismatch
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
// jspecify_nullness_mismatch
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// JSPECIFY_STATE: strict
// MUTE_FOR_PSI_CLASS_FILES_READING
@@ -43,8 +43,8 @@ fun main(
b: AnnotatedBoundsOfWildcard
): Unit {
b.superAsIs(aAnyNotNullNotNullNotNull)
b.superAsIs(aAnyNotNullNotNullNull)
b.superAsIs(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNotNull<!>)
b.superAsIs(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNull<!>)
b.superAsIs(aAnyNotNullNullNotNull)
b.superAsIs(aAnyNotNullNullNull)
@@ -53,15 +53,15 @@ fun main(
b.superNotNull(aAnyNotNullNullNotNull)
b.superNotNull(aAnyNotNullNullNull)
b.superNullable(aAnyNotNullNotNullNotNull)
b.superNullable(aAnyNotNullNotNullNull)
b.superNullable(aAnyNotNullNullNotNull)
b.superNullable(aAnyNotNullNullNull)
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNotNull<!>)
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNotNullNull<!>)
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNullNotNull<!>)
b.superNullable(<!ARGUMENT_TYPE_MISMATCH!>aAnyNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNotNull)
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
b.extendsAsIs(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsAsIs(aNotNullNotNullNull)
b.extendsAsIs(aNotNullNullNotNull)
b.extendsAsIs(aNotNullNullNull)
b.extendsNotNull(aNotNullNotNullNotNull)
b.extendsNotNull(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
@@ -69,12 +69,12 @@ fun main(
b.extendsNotNull(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNotNull)
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
b.extendsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.extendsNullable(aNotNullNotNullNull)
b.extendsNullable(aNotNullNullNotNull)
b.extendsNullable(aNotNullNullNull)
b.noBounds(aNotNullNotNullNotNull)
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
b.noBounds(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
b.noBounds(aNotNullNotNullNull)
b.noBounds(aNotNullNullNotNull)
b.noBounds(aNotNullNullNull)
}
@@ -1,35 +0,0 @@
// JSPECIFY_STATE: warn
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: WildcardsWithDefault.java
import org.jspecify.nullness.*;
@NullMarked
public class WildcardsWithDefault {
public void noBoundsNotNull(A<?, ?, ?> a) {}
public void noBoundsNullable(A<? extends @Nullable Object, ? extends @Nullable Object, ? extends @Nullable Object> a) {}
}
// FILE: A.java
import org.jspecify.nullness.*;
public class A <T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {}
// FILE: main.kt
fun main(
aNotNullNotNullNotNull: A<Any, Any, Any>,
aNotNullNotNullNull: A<Any, Any, Any?>,
aNotNullNullNotNull: A<Any, Any?, Any>,
aNotNullNullNull: A<Any, Any?, Any?>,
b: WildcardsWithDefault
): Unit {
b.noBoundsNotNull(aNotNullNotNullNotNull)
b.noBoundsNotNull(aNotNullNotNullNull)
b.noBoundsNotNull(aNotNullNullNotNull)
b.noBoundsNotNull(aNotNullNullNull)
b.noBoundsNullable(aNotNullNotNullNotNull)
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNotNullNull<!>)
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNotNull<!>)
b.noBoundsNullable(<!ARGUMENT_TYPE_MISMATCH!>aNotNullNullNull<!>)
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// JSPECIFY_STATE: warn
// MUTE_FOR_PSI_CLASS_FILES_READING
@@ -9,8 +9,8 @@ public class BaseClass {
// FILE: main.kt
class A : BaseClass() {
// org.checkerframework.checker.nullness.qual.NonNull has @Target TYPE_USE, so it affects only elements type
override fun loadCache(vararg args: Any?) {
super.loadCache(*args)
<!NOTHING_TO_OVERRIDE!>override<!> fun loadCache(vararg args: Any?) {
super.loadCache(*<!ARGUMENT_TYPE_MISMATCH!>args<!>)
}
}
@@ -1,21 +0,0 @@
// SOURCE_RETENTION_ANNOTATIONS
// FILE: BaseClass.java
import org.checkerframework.checker.nullness.qual.*;
public class BaseClass {
public void loadCache(@Nullable Object... args) {}
}
// FILE: main.kt
class A : BaseClass() {
override fun loadCache(vararg args: Any?) {
super.loadCache(*args)
}
}
class B : BaseClass() {
// org.checkerframework.checker.nullness.qual.Nullable has @Target TYPE_USE, so it affects only elements type
override fun loadCache(vararg args: Any) {
super.loadCache(*args)
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// SOURCE_RETENTION_ANNOTATIONS
// FILE: BaseClass.java
import org.checkerframework.checker.nullness.qual.*;
@@ -51,13 +51,13 @@ fun <R> main(a: ReturnType<R>) {
takeNotNullStringAndNotNullK(x3)
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R..R?!>..kotlin.Array<out R..R?!>")!>a.foo4<!>
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R!!>..kotlin.Array<out R!!>")!>a.foo4<!>
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableK(x4)
takeArrayOfNotNullK(x4)
takeArrayOfNullableK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String..kotlin.String?!>?..kotlin.Array<out kotlin.String..kotlin.String?!>??")!>a.foo5()<!>
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String?>?..kotlin.Array<out kotlin.String?>??")!>a.foo5()<!>
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
@@ -53,13 +53,13 @@ fun <R> main(a: ReturnTypeWithWarnings<R>) {
takeNotNullStringAndNotNullK(x3)
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R..R?!>..kotlin.Array<out R..R?!>")!>a.foo4<!>
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R!!>..kotlin.Array<out R!!>")!>a.foo4<!>
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableK(x4)
takeArrayOfNotNullK(x4)
takeArrayOfNullableK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String..kotlin.String?!>?..kotlin.Array<out kotlin.String..kotlin.String?!>??")!>a.foo5()<!>
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String?>?..kotlin.Array<out kotlin.String?>??")!>a.foo5()<!>
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
@@ -50,7 +50,7 @@ fun <R> main(a: ValueParameter<R>) {
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableString()<!>)
a.foo4(getArrayOfNotNullK())
a.foo4(getArrayOfNullableK())
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableK()<!>)
a.foo5(getArrayOfNotNullString())
a.foo5(getArrayOfNullableString())
@@ -52,7 +52,7 @@ fun <R> main(a: ValueParameterWithWarnings<R>) {
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableString()<!>)
a.foo4(getArrayOfNotNullK())
a.foo4(getArrayOfNullableK())
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableK()<!>)
a.foo5(getArrayOfNotNullString())
a.foo5(getArrayOfNullableString())