// !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 { public interface A {} 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 getNotNullStringAndKNullable() = null as ValueParameter.A fun getNullableStringAndKNullable() = null as ValueParameter.A fun getNotNullStringAndNotNullK() = null as ValueParameter.A fun getNullableStringAndNotNullK() = null as ValueParameter.A fun getNotNullString() = null as String fun getArrayOfNotNullString() = null as Array fun getArrayOfNullableString() = null as Array fun getArrayOfNotNullK() = null as Array fun getArrayOfNullableK() = null as Array fun main(a: ValueParameter) { a.foo1(getNotNullStringAndKNullable()) a.foo1(getNullableStringAndKNullable()) a.foo1(getNotNullStringAndNotNullK()) a.foo1(getNullableStringAndNotNullK()) a.foo2(getNotNullStringAndKNullable()) a.foo2(getNullableStringAndKNullable()) a.foo2(getNotNullStringAndNotNullK()) a.foo2(getNullableStringAndNotNullK()) a.foo3(getNotNullStringAndKNullable()) a.foo3(getNullableStringAndKNullable()) a.foo3(getNotNullStringAndNotNullK()) a.foo3(getNullableStringAndNotNullK()) a.foo4(getArrayOfNotNullString()) a.foo4(getArrayOfNullableString()) a.foo4(getArrayOfNotNullK()) a.foo4(getArrayOfNullableK()) a.foo5(getArrayOfNotNullString()) a.foo5(getArrayOfNullableString()) a.foo5(getArrayOfNotNullK()) a.foo5(getArrayOfNullableK()) a.foo41(getNotNullString()) a.foo411(getNotNullString()) }