Remove "FIR" foreign annotation tests
They do not actually use FIR.
This commit is contained in:
Vendored
-38
@@ -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;}
|
||||
}
|
||||
}
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/annotatedTypeArguments.fir.txt
Vendored
-48
@@ -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
|
||||
}
|
||||
}
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/classTypeParameterBound.fir.kt
Vendored
-25
@@ -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()
|
||||
}
|
||||
-25
@@ -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()
|
||||
}
|
||||
-11
@@ -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()
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/methodWithTypeParameter.fir.kt
Vendored
-54
@@ -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; }
|
||||
}
|
||||
}
|
||||
-44
@@ -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
|
||||
}
|
||||
}
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/notNullVarargsOverrides.fir.kt
Vendored
-21
@@ -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)
|
||||
}
|
||||
}
|
||||
-26
@@ -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
|
||||
}
|
||||
-21
@@ -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)
|
||||
}
|
||||
}
|
||||
-26
@@ -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
|
||||
}
|
||||
-65
@@ -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)
|
||||
}
|
||||
-37
@@ -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; }
|
||||
}
|
||||
}
|
||||
-56
@@ -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
|
||||
}
|
||||
}
|
||||
-31
@@ -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(); }
|
||||
}
|
||||
-56
@@ -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
|
||||
}
|
||||
Vendored
-67
@@ -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<!>)
|
||||
}
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
// FILE: A.java
|
||||
import org.checkerframework.checker.nullness.qual.*;
|
||||
import java.util.*;
|
||||
|
||||
class A {
|
||||
List<@NonNull String> foo() { return null; }
|
||||
}
|
||||
-9
@@ -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
|
||||
}
|
||||
Vendored
-62
@@ -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()<!>)
|
||||
}
|
||||
-64
@@ -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()<!>)
|
||||
}
|
||||
Reference in New Issue
Block a user