Remove "FIR" foreign annotation tests

They do not actually use FIR.
This commit is contained in:
pyos
2021-07-29 15:41:49 +02:00
committed by TeamCityServer
parent 1607a8231a
commit e2e0358505
69 changed files with 72 additions and 3162 deletions
@@ -1,38 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: AnnotatedTypeArguments.java
import org.checkerframework.checker.nullness.qual.*;
interface P<X, Y> {}
interface L<T> {}
interface S<T> {}
class AnnotatedTypeArguments {
class A {
L<P<L<String>, S<?>>> foo(L<P<L<String>, S<?>>> x) {return null;}
}
class B extends A {
// some complicated type tree
// return type and argument's type differ only by nullability of outermost type
@Nullable
L<P<@NonNull L<@Nullable String>, @NonNull S<?>>> foo(@NonNull L<P<@NonNull L<@Nullable String>, @NonNull S<?>>> x) {return null;}
}
class C extends B {
// signature should be the same as in A
L<P<L<String>, S<?>>> foo(L<P<L<String>, S<?>>> x) {return null;}
}
class D1 extends C {
// signature should be the same as in A, but annotated String-type should be platform
L<P<L<@NonNull String>, S<?>>> foo(L<P<L<@NonNull String>, S<?>>> x) {return null;}
}
class D2 extends C {
// return type refined to not-nullable
// argument type here same as in A except outermost type (it becomes flexible because of conflict)
@NonNull
L<P<L<String>, S<?>>> foo(@Nullable L<P<L<String>, S<?>>> x) {return null;}
}
}
@@ -1,48 +0,0 @@
package
public/*package*/ open class AnnotatedTypeArguments {
public/*package*/ constructor AnnotatedTypeArguments()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public/*package*/ open inner class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun foo(/*0*/ x: L<P<L<kotlin.String!>!, S<*>!>!>!): L<P<L<kotlin.String!>!, S<*>!>!>!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class B : AnnotatedTypeArguments.A {
public/*package*/ constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@org.checkerframework.checker.nullness.qual.Nullable public/*package*/ open override /*1*/ fun foo(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull x: @org.checkerframework.checker.nullness.qual.NonNull L<P<@org.checkerframework.checker.nullness.qual.NonNull L<@org.checkerframework.checker.nullness.qual.Nullable kotlin.String?>, @org.checkerframework.checker.nullness.qual.NonNull S<*>>!>): @org.checkerframework.checker.nullness.qual.Nullable L<P<@org.checkerframework.checker.nullness.qual.NonNull L<@org.checkerframework.checker.nullness.qual.Nullable kotlin.String?>, @org.checkerframework.checker.nullness.qual.NonNull S<*>>!>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class C : AnnotatedTypeArguments.B {
public/*package*/ constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open override /*1*/ fun foo(/*0*/ x: L<P<L<kotlin.String?>, S<*>>!>): L<P<L<kotlin.String?>, S<*>>!>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class D1 : AnnotatedTypeArguments.C {
public/*package*/ constructor D1()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open override /*1*/ fun foo(/*0*/ x: L<P<L<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String!>, S<*>>!>): L<P<L<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String!>, S<*>>!>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class D2 : AnnotatedTypeArguments.C {
public/*package*/ constructor D2()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable x: @org.checkerframework.checker.nullness.qual.Nullable L<P<L<kotlin.String?>, S<*>>!>!): @org.checkerframework.checker.nullness.qual.NonNull L<P<L<kotlin.String?>, S<*>>!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -1,25 +0,0 @@
// !LANGUAGE: +TypeEnhancementImprovementsInStrictMode +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ClassTypeParameterBound.java
import org.jetbrains.annotations.NotNull;
public class ClassTypeParameterBound <T extends @NotNull String> {
ClassTypeParameterBound(T x) { }
ClassTypeParameterBound() { }
}
// FILE: main.kt
fun main(x: ClassTypeParameterBound<<!UPPER_BOUND_VIOLATED!>String?<!>>, y: ClassTypeParameterBound<String>, a: String?, b: String) {
val x2 = ClassTypeParameterBound<<!UPPER_BOUND_VIOLATED!>String?<!>>()
val y2 = ClassTypeParameterBound<String>()
val x3 = ClassTypeParameterBound(<!TYPE_MISMATCH!>a<!>)
val y3 = ClassTypeParameterBound(b)
val x4: ClassTypeParameterBound<<!UPPER_BOUND_VIOLATED!>String?<!>> = <!TYPE_MISMATCH!>ClassTypeParameterBound()<!>
val y4: ClassTypeParameterBound<String> = ClassTypeParameterBound()
}
@@ -1,25 +0,0 @@
// !LANGUAGE: +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated, -TypeEnhancementImprovementsInStrictMode
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ClassTypeParameterBoundWithWarnings.java
import org.jetbrains.annotations.NotNull;
public class ClassTypeParameterBoundWithWarnings <T extends @NotNull String> {
ClassTypeParameterBoundWithWarnings() { }
ClassTypeParameterBoundWithWarnings(T x) { }
}
// FILE: main.kt
fun main(x: ClassTypeParameterBoundWithWarnings<<!UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONS!>String?<!>>, y: ClassTypeParameterBoundWithWarnings<String>, a: String?, b: String) {
val x2 = ClassTypeParameterBoundWithWarnings<<!UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONS!>String?<!>>()
val y2 = ClassTypeParameterBoundWithWarnings<String>()
val x3 = ClassTypeParameterBoundWithWarnings(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>a<!>)
val y3 = ClassTypeParameterBoundWithWarnings(b)
val x4: ClassTypeParameterBoundWithWarnings<<!UPPER_BOUND_VIOLATED_BASED_ON_JAVA_ANNOTATIONS!>String?<!>> = ClassTypeParameterBoundWithWarnings()
val y4: ClassTypeParameterBoundWithWarnings<String> = ClassTypeParameterBoundWithWarnings()
}
@@ -1,11 +0,0 @@
// SKIP_TXT
// FILE: I1.java
import org.checkerframework.checker.nullness.qual.NonNull;
public interface I1<@NonNull T> { }
// FILE: I2.java
public interface I2<T extends I1<T>> { }
// FILE: main.kt
fun foo(): I2<*> = TODO()
@@ -1,54 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: Outer.java
import org.checkerframework.checker.nullness.qual.*;
interface X<T> {}
interface Y<T> {}
class Outer {
class A {
<K, V> V foo(K x) { return null; }
<T> X<T> bar(Y<T> x) { return null; }
}
class B extends A {
// OK, non-platform types
@Override
@NonNull
<T1, T2> T2 foo(@Nullable T1 x) { return null; }
// Parameter type is fully non-flexible (OK)
// Return type is `X<R!>?`.
// The reason is that we do not treat it as equal to return type of A.bar because they are base on different type parameters,
// so type enhancing happens only for outermost type.
// TODO: We should properly compare equality with specific local equality axioms (as when calculating overriden descriptors)
@Override
@Nullable
<R> X<@Nullable R> bar(@NonNull Y<@NonNull R> x) { return null; }
}
class C extends B {
// OK, non-platform types
@Override
<I, J> J foo(I x) { return null; }
// Parameter type is fully non-flexible (OK)
// Return type is `X<R!>?`, same is in B
@Override
<E> X<E> bar(Y<E> x) { return null; }
}
class D extends C {
// Return type is not-nullable, covariantly overridden, OK
// Parameter type is flexible, because of conflict with supertype, OK
@Override
@NonNull
<U, W> W foo(@Nullable U x) { return null; }
@Override
@NonNull
<F> X<@NonNull F> bar(@Nullable Y<@Nullable F> x) { return null; }
}
}
@@ -1,44 +0,0 @@
package
public/*package*/ open class Outer {
public/*package*/ constructor Outer()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public/*package*/ open inner class A {
public/*package*/ constructor A()
public/*package*/ open fun </*0*/ T : kotlin.Any!> bar(/*0*/ x: Y<T!>!): X<T!>!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun </*0*/ K : kotlin.Any!, /*1*/ V : kotlin.Any!> foo(/*0*/ x: K!): V!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class B : Outer.A {
public/*package*/ constructor B()
@java.lang.Override @org.checkerframework.checker.nullness.qual.Nullable public/*package*/ open override /*1*/ fun </*0*/ R : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull x: @org.checkerframework.checker.nullness.qual.NonNull Y<@org.checkerframework.checker.nullness.qual.NonNull R!!>): @org.checkerframework.checker.nullness.qual.Nullable X<@org.checkerframework.checker.nullness.qual.Nullable R!>?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun </*0*/ T1 : kotlin.Any!, /*1*/ T2 : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable x: @org.checkerframework.checker.nullness.qual.Nullable T1?): @org.checkerframework.checker.nullness.qual.NonNull T2!!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class C : Outer.B {
public/*package*/ constructor C()
@java.lang.Override public/*package*/ open override /*1*/ fun </*0*/ E : kotlin.Any!> bar(/*0*/ x: Y<E!!>): X<E!>?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override public/*package*/ open override /*1*/ fun </*0*/ I : kotlin.Any!, /*1*/ J : kotlin.Any!> foo(/*0*/ x: I?): J!!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class D : Outer.C {
public/*package*/ constructor D()
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun </*0*/ F : kotlin.Any!> bar(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable x: @org.checkerframework.checker.nullness.qual.Nullable Y<@org.checkerframework.checker.nullness.qual.Nullable F!>!): @org.checkerframework.checker.nullness.qual.NonNull X<@org.checkerframework.checker.nullness.qual.NonNull F!>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun </*0*/ U : kotlin.Any!, /*1*/ W : kotlin.Any!> foo(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable x: @org.checkerframework.checker.nullness.qual.Nullable U?): @org.checkerframework.checker.nullness.qual.NonNull W!!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -1,21 +0,0 @@
// SOURCE_RETENTION_ANNOTATIONS
// FILE: BaseClass.java
import org.checkerframework.checker.nullness.qual.*;
public class BaseClass {
public void loadCache(@NonNull Object... args) {}
}
// FILE: main.kt
class A : BaseClass() {
// org.checkerframework.checker.nullness.qual.NonNull has @Target TYPE_USE, so it affects only elements type
<!NOTHING_TO_OVERRIDE!>override<!> fun loadCache(vararg args: Any?) {
super.loadCache(*<!TYPE_MISMATCH!>args<!>)
}
}
class B : BaseClass() {
override fun loadCache(vararg args: Any) {
super.loadCache(*args)
}
}
@@ -1,26 +0,0 @@
package
public final class A : BaseClass {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun loadCache(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull vararg args: @org.checkerframework.checker.nullness.qual.NonNull kotlin.Any /*kotlin.Array<(out) @org.checkerframework.checker.nullness.qual.NonNull kotlin.Any>!*/): kotlin.Unit
public open fun loadCache(/*0*/ vararg args: kotlin.Any? /*kotlin.Array<out kotlin.Any?>*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : BaseClass {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ fun loadCache(/*0*/ vararg args: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class BaseClass {
public constructor BaseClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun loadCache(/*0*/ @org.checkerframework.checker.nullness.qual.NonNull vararg args: @org.checkerframework.checker.nullness.qual.NonNull kotlin.Any /*kotlin.Array<(out) @org.checkerframework.checker.nullness.qual.NonNull kotlin.Any>!*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -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
<!NOTHING_TO_OVERRIDE!>override<!> fun loadCache(vararg args: Any) {
super.loadCache(*args)
}
}
@@ -1,26 +0,0 @@
package
public final class A : BaseClass {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ fun loadCache(/*0*/ vararg args: kotlin.Any? /*kotlin.Array<out kotlin.Any?>*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : BaseClass {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun loadCache(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable vararg args: @org.checkerframework.checker.nullness.qual.Nullable kotlin.Any? /*kotlin.Array<(out) @org.checkerframework.checker.nullness.qual.Nullable kotlin.Any?>!*/): kotlin.Unit
public open fun loadCache(/*0*/ vararg args: kotlin.Any /*kotlin.Array<out kotlin.Any>*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class BaseClass {
public constructor BaseClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun loadCache(/*0*/ @org.checkerframework.checker.nullness.qual.Nullable vararg args: @org.checkerframework.checker.nullness.qual.Nullable kotlin.Any? /*kotlin.Array<(out) @org.checkerframework.checker.nullness.qual.Nullable kotlin.Any?>!*/): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,65 +0,0 @@
// !LANGUAGE: +TypeEnhancementImprovementsInStrictMode +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ReturnType.java
import org.jetbrains.annotations.*;
public class ReturnType<T> {
public interface A<T1, T2> {}
public A<@Nullable String, @Nullable T> foo1() { return null; }
public A<@Nullable String, @NotNull T> foo2() { return null; }
public A<@NotNull String, @NotNull T> foo3 = null;
public @NotNull T [] foo4 = null;
public ReturnType<@Nullable String> foo41 = null;
public T foo411 = null;
public @Nullable String [] foo5() { return null; }
}
// FILE: main.kt
fun <K> takeNotNullStringAndKNullable(x: ReturnType.A<String, K?>) {}
fun <K> takeNullableStringAndKNullable(x: ReturnType.A<String?, K?>) {}
fun <K: Any> takeNotNullStringAndNotNullK(x: ReturnType.A<String, K>) {}
fun <K: Any> takeNullableStringAndNotNullK(x: ReturnType.A<String?, K>) {}
fun takeNotNullString(x: String) {}
fun takeArrayOfNotNullString(x: Array<String>) {}
fun takeArrayOfNullableString(x: Array<String?>) {}
fun <K: Any> takeArrayOfNotNullK(x: Array<K>) {}
fun <K> takeArrayOfNullableK(x: Array<K?>) {}
fun <R> main(a: ReturnType<R>) {
val x1 = a.foo1()
takeNotNullStringAndKNullable(<!TYPE_MISMATCH!>x1<!>)
takeNullableStringAndKNullable(x1)
takeNotNullStringAndNotNullK(<!TYPE_MISMATCH!>x1<!>)
takeNullableStringAndNotNullK(<!TYPE_MISMATCH!>x1<!>)
takeNotNullString(<!TYPE_MISMATCH!>a.foo41.foo411<!>)
val x2 = a.foo2()
takeNotNullStringAndKNullable(<!TYPE_MISMATCH!>x2<!>)
takeNullableStringAndKNullable(<!TYPE_MISMATCH!>x2<!>)
takeNotNullStringAndNotNullK(<!TYPE_MISMATCH!>x2<!>)
takeNullableStringAndNotNullK(x2)
val x3 = a.foo3
takeNotNullStringAndKNullable(<!TYPE_MISMATCH!>x3<!>)
takeNullableStringAndKNullable(<!TYPE_MISMATCH!>x3<!>)
takeNotNullStringAndNotNullK(x3)
takeNullableStringAndNotNullK(<!TYPE_MISMATCH!>x3<!>)
val x4 = a.foo4
takeArrayOfNotNullString(<!TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableString(<!TYPE_MISMATCH!>x4<!>)
takeArrayOfNotNullK(x4)
takeArrayOfNullableK(<!TYPE_MISMATCH!>x4<!>)
val x5 = a.foo5()
takeArrayOfNotNullString(<!TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableString(x5)
takeArrayOfNotNullK(<!TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableK(x5)
}
@@ -1,37 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: Outer.java
import org.checkerframework.checker.nullness.qual.*;
interface Base<T> {}
interface Derived<E> extends Base<E> {}
class Outer {
class A {
@Nullable Base<@NonNull String> foo() { return null; }
}
class B extends A {
@Override
Base<String> foo() { return null; }
}
class C extends A {
@Override
@NonNull Base<String> foo() { return null; }
}
class D extends A {
@Override
Derived<String> foo() { return null; }
}
class E extends A {
@Override
@NonNull Derived<String> foo() { return null; }
}
class F extends A {
@Override
@NonNull Derived<@NonNull String> foo() { return null; }
}
}
@@ -1,56 +0,0 @@
package
public/*package*/ open class Outer {
public/*package*/ constructor Outer()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public/*package*/ open inner class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@org.checkerframework.checker.nullness.qual.Nullable public/*package*/ open fun foo(): @org.checkerframework.checker.nullness.qual.Nullable Base<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class B : Outer.A {
public/*package*/ constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override public/*package*/ open override /*1*/ fun foo(): Base<kotlin.String>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class C : Outer.A {
public/*package*/ constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun foo(): @org.checkerframework.checker.nullness.qual.NonNull Base<kotlin.String>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class D : Outer.A {
public/*package*/ constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class E : Outer.A {
public/*package*/ constructor E()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun foo(): @org.checkerframework.checker.nullness.qual.NonNull Derived<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open inner class F : Outer.A {
public/*package*/ constructor F()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@java.lang.Override @org.checkerframework.checker.nullness.qual.NonNull public/*package*/ open override /*1*/ fun foo(): @org.checkerframework.checker.nullness.qual.NonNull Derived<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -1,31 +0,0 @@
// SOURCE_RETENTION_ANNOTATIONS
// FILE: Base.java
public interface Base<T> {}
// FILE: A.java
import org.checkerframework.checker.nullness.qual.*;
public class A {
@Nullable Base<@NonNull String> foo() { return null; }
}
// FILE: a.kt
interface Derived<E> : Base<E> {}
fun bar1(): Derived<String> = null!!
fun bar2(): Derived<String?> = null!!
class B : A() {
override fun foo(): Base<String> { return bar1(); }
}
class C1 : A() {
override fun foo(): Derived<String> { return bar1(); }
}
class C2 : A() {
override fun foo(): Derived<String>? { return bar1(); }
}
class C3 : A() {
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Derived<String?><!> { return bar2(); }
}
@@ -1,56 +0,0 @@
package
public fun bar1(): Derived<kotlin.String>
public fun bar2(): Derived<kotlin.String?>
public open class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@org.checkerframework.checker.nullness.qual.Nullable public/*package*/ open fun foo(): @org.checkerframework.checker.nullness.qual.Nullable Base<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class B : A {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected open override /*1*/ fun foo(): Base<kotlin.String>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Base</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C1 : A {
public constructor C1()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected open override /*1*/ fun foo(): Derived<kotlin.String>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C2 : A {
public constructor C2()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected open override /*1*/ fun foo(): Derived<kotlin.String>?
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class C3 : A {
public constructor C3()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected open override /*1*/ fun foo(): Derived<kotlin.String?>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface Derived</*0*/ E> : Base<E> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,67 +0,0 @@
// !LANGUAGE: +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated, -TypeEnhancementImprovementsInStrictMode
// !DIAGNOSTICS: -UNUSED_PARAMETER
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ReturnTypeWithWarnings.java
// We've already had errors in source mode, so it's relevant only for binaries for now
// INCLUDE_JAVA_AS_BINARY
import org.jetbrains.annotations.*;
public class ReturnTypeWithWarnings<T> {
public interface A<T1, T2> {}
public A<@Nullable String, @Nullable T> foo1() { return null; }
public A<@Nullable String, @NotNull T> foo2() { return null; }
public A<@NotNull String, @NotNull T> foo3 = null;
public @NotNull T [] foo4 = null;
public ReturnTypeWithWarnings<@Nullable String> foo41 = null;
public T foo411 = null;
public @Nullable String [] foo5() { return null; }
}
// FILE: main.kt
fun <K> takeNotNullStringAndKNullable(x: ReturnTypeWithWarnings.A<String, K?>) {}
fun <K> takeNullableStringAndKNullable(x: ReturnTypeWithWarnings.A<String?, K?>) {}
fun <K: Any> takeNotNullStringAndNotNullK(x: ReturnTypeWithWarnings.A<String, K>) {}
fun <K: Any> takeNullableStringAndNotNullK(x: ReturnTypeWithWarnings.A<String?, K>) {}
fun takeNotNullString(x: String) {}
fun takeArrayOfNotNullString(x: Array<String>) {}
fun takeArrayOfNullableString(x: Array<String?>) {}
fun <K: Any> takeArrayOfNotNullK(x: Array<K>) {}
fun <K> takeArrayOfNullableK(x: Array<K?>) {}
fun <R> main(a: ReturnTypeWithWarnings<R>) {
val x1 = a.foo1()
takeNotNullStringAndKNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x1<!>)
takeNullableStringAndKNullable(x1)
takeNotNullStringAndNotNullK(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>x1<!>)
takeNullableStringAndNotNullK(<!TYPE_MISMATCH!>x1<!>)
takeNotNullString(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>a.foo41.foo411<!>)
val x2 = a.foo2()
takeNotNullStringAndKNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x2<!>)
takeNullableStringAndKNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x2<!>)
takeNotNullStringAndNotNullK(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>x2<!>)
takeNullableStringAndNotNullK(<!TYPE_MISMATCH!>x2<!>)
val x3 = a.foo3
takeNotNullStringAndKNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x3<!>)
takeNullableStringAndKNullable(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x3<!>)
takeNotNullStringAndNotNullK(<!TYPE_MISMATCH!>x3<!>)
takeNullableStringAndNotNullK(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>x3<!>)
val x4 = a.foo4
takeArrayOfNotNullString(<!TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableString(<!TYPE_MISMATCH!>x4<!>)
takeArrayOfNotNullK(<!TYPE_MISMATCH!>x4<!>)
takeArrayOfNullableK(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>x4<!>)
val x5 = a.foo5()
takeArrayOfNotNullString(<!TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableString(<!TYPE_MISMATCH!>x5<!>)
takeArrayOfNotNullK(<!TYPE_MISMATCH!>x5<!>)
takeArrayOfNullableK(<!TYPE_MISMATCH!>x5<!>)
}
@@ -1,7 +0,0 @@
// FILE: A.java
import org.checkerframework.checker.nullness.qual.*;
import java.util.*;
class A {
List<@NonNull String> foo() { return null; }
}
@@ -1,9 +0,0 @@
package
public/*package*/ open class A {
public/*package*/ constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun foo(): kotlin.collections.(Mutable)List<@org.checkerframework.checker.nullness.qual.NonNull kotlin.String>!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,62 +0,0 @@
// !LANGUAGE: +TypeEnhancementImprovementsInStrictMode +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated
// !DIAGNOSTICS: -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ValueParameter.java
import org.jetbrains.annotations.*;
public class ValueParameter<T> {
public interface A<T1, T2> {}
public void foo1(A<@Nullable String, @Nullable T> x) { }
public void foo2(A<@Nullable String, @NotNull T> x) { }
public void foo3(A<@NotNull String, @NotNull T> x) { }
public void foo4(@NotNull T [] x) { }
public void foo41(@Nullable String x) { }
public void foo411(T x) { }
public void foo5(@Nullable String [] x) { }
}
// FILE: main.kt
fun <K> getNotNullStringAndKNullable() = null as ValueParameter.A<String, K?>
fun <K> getNullableStringAndKNullable() = null as ValueParameter.A<String?, K?>
fun <K: Any> getNotNullStringAndNotNullK() = null as ValueParameter.A<String, K>
fun <K: Any> getNullableStringAndNotNullK() = null as ValueParameter.A<String?, K>
fun getNotNullString() = null as String
fun getArrayOfNotNullString() = null as Array<String>
fun getArrayOfNullableString() = null as Array<String?>
fun <K: Any> getArrayOfNotNullK() = null as Array<K>
fun <K> getArrayOfNullableK() = null as Array<K?>
fun <R> main(a: ValueParameter<R>) {
a.foo1(<!TYPE_MISMATCH!>getNotNullStringAndKNullable()<!>)
a.foo1(getNullableStringAndKNullable())
a.foo1(<!TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
a.foo1(<!TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
a.foo2(<!TYPE_MISMATCH!>getNotNullStringAndKNullable()<!>)
a.foo2(<!TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
a.foo2(<!TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
a.foo2(getNullableStringAndNotNullK())
a.foo3(<!TYPE_MISMATCH!>getNotNullStringAndKNullable()<!>)
a.foo3(<!TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
a.foo3(getNotNullStringAndNotNullK())
a.foo3(<!TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
a.foo4(<!TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
a.foo4(<!TYPE_MISMATCH!>getArrayOfNullableString()<!>)
a.foo4(getArrayOfNotNullK())
a.foo4(<!TYPE_MISMATCH!>getArrayOfNullableK()<!>)
a.foo5(getArrayOfNotNullString())
a.foo5(getArrayOfNullableString())
a.foo5(getArrayOfNotNullK())
a.foo5(getArrayOfNullableK())
a.foo41(getNotNullString())
a.foo411(<!TYPE_MISMATCH!>getNotNullString()<!>)
}
@@ -1,64 +0,0 @@
// !LANGUAGE: +ProhibitUsingNullableTypeParameterAgainstNotNullAnnotated, -TypeEnhancementImprovementsInStrictMode
// !DIAGNOSTICS: -UNUSED_PARAMETER -CAST_NEVER_SUCCEEDS
// SKIP_TXT
// MUTE_FOR_PSI_CLASS_FILES_READING
// FILE: ValueParameterWithWarnings.java
// We've already had errors in source mode, so it's relevant only for binaries for now
// INCLUDE_JAVA_AS_BINARY
import org.jetbrains.annotations.*;
public class ValueParameterWithWarnings<T> {
public interface A<T1, T2> {}
public void foo1(A<@Nullable String, @Nullable T> x) { }
public void foo2(A<@Nullable String, @NotNull T> x) { }
public void foo3(A<@NotNull String, @NotNull T> x) { }
public void foo4(@NotNull T [] x) { }
public void foo41(@Nullable String x) { }
public void foo411(T x) { }
public void foo5(@Nullable String [] x) { }
}
// FILE: main.kt
fun <K> getNotNullStringAndKNullable() = null as ValueParameterWithWarnings.A<String, K?>
fun <K> getNullableStringAndKNullable() = null as ValueParameterWithWarnings.A<String?, K?>
fun <K: Any> getNotNullStringAndNotNullK() = null as ValueParameterWithWarnings.A<String, K>
fun <K: Any> getNullableStringAndNotNullK() = null as ValueParameterWithWarnings.A<String?, K>
fun getNotNullString() = null as String
fun getArrayOfNotNullString() = null as Array<String>
fun getArrayOfNullableString() = null as Array<String?>
fun <K: Any> getArrayOfNotNullK() = null as Array<K>
fun <K> getArrayOfNullableK() = null as Array<K?>
fun <R> main(a: ValueParameterWithWarnings<R>) {
a.foo1(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getNotNullStringAndKNullable()<!>)
a.foo1(getNullableStringAndKNullable())
a.foo1(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
a.foo1(<!TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
a.foo2(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getNotNullStringAndKNullable()<!>)
a.foo2(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getNullableStringAndKNullable()<!>)
a.foo2(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
a.foo2(<!TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
a.foo3(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getNotNullStringAndKNullable()<!>)
a.foo3(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getNullableStringAndKNullable()<!>)
a.foo3(<!TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
a.foo3(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS, TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
a.foo4(<!TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
a.foo4(<!TYPE_MISMATCH!>getArrayOfNullableString()<!>)
a.foo4(getArrayOfNotNullK())
a.foo4(<!NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS!>getArrayOfNullableK()<!>)
a.foo5(getArrayOfNotNullString())
a.foo5(getArrayOfNullableString())
a.foo5(getArrayOfNotNullK())
a.foo5(getArrayOfNullableK())
a.foo41(getNotNullString())
a.foo411(<!TYPE_MISMATCH!>getNotNullString()<!>)
}