Generate foreign annotation test data for FIR
This commit is contained in:
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// JAVAC_EXPECTED_FILE
|
||||
// FILE: AnnotatedTypeArguments.java
|
||||
import org.checkerframework.checker.nullness.qual.*;
|
||||
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/classTypeParameterBound.fir.kt
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
// !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<String?>, y: ClassTypeParameterBound<String>, a: String?, b: String) {
|
||||
val x2 = ClassTypeParameterBound<String?>()
|
||||
val y2 = ClassTypeParameterBound<String>()
|
||||
|
||||
val x3 = ClassTypeParameterBound(a)
|
||||
val y3 = ClassTypeParameterBound(b)
|
||||
|
||||
val x4: ClassTypeParameterBound<String?> = ClassTypeParameterBound()
|
||||
val y4: ClassTypeParameterBound<String> = ClassTypeParameterBound()
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
// !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<String?>, y: ClassTypeParameterBoundWithWarnings<String>, a: String?, b: String) {
|
||||
val x2 = ClassTypeParameterBoundWithWarnings<String?>()
|
||||
val y2 = ClassTypeParameterBoundWithWarnings<String>()
|
||||
|
||||
val x3 = ClassTypeParameterBoundWithWarnings(a)
|
||||
val y3 = ClassTypeParameterBoundWithWarnings(b)
|
||||
|
||||
val x4: ClassTypeParameterBoundWithWarnings<String?> = ClassTypeParameterBoundWithWarnings()
|
||||
val y4: ClassTypeParameterBoundWithWarnings<String> = ClassTypeParameterBoundWithWarnings()
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// FILE: I1.java
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// JAVAC_EXPECTED_FILE
|
||||
// FILE: Outer.java
|
||||
import org.checkerframework.checker.nullness.qual.*;
|
||||
|
||||
compiler/testData/diagnostics/foreignAnnotationsTests/java8Tests/misc/notNullVarargsOverrides.fir.kt
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// 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
|
||||
override fun loadCache(vararg args: Any?) {
|
||||
super.loadCache(*args)
|
||||
}
|
||||
}
|
||||
|
||||
class B : BaseClass() {
|
||||
override fun loadCache(vararg args: Any) {
|
||||
super.loadCache(*args)
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
// !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 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnType.A<kotlin.String?, R..R?!>..ReturnType.A<kotlin.String?, R..R?!>?!")!>a.foo1()<!>
|
||||
takeNotNullStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNullableStringAndKNullable(x1)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNotNullString(a.foo41.foo411)
|
||||
|
||||
val x2 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnType.A<kotlin.String, R..R?!>..ReturnType.A<kotlin.String, R..R?!>?!")!>a.foo2()<!>
|
||||
takeNotNullStringAndKNullable(x2)
|
||||
takeNullableStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
|
||||
val x3 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnType.A<kotlin.String, R..R?!>..ReturnType.A<kotlin.String, R..R?!>?!")!>a.foo3<!>
|
||||
takeNotNullStringAndKNullable(x3)
|
||||
takeNullableStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
|
||||
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R..R?!>..kotlin.Array<out R..R?!>")!>a.foo4<!>
|
||||
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNullableK(x4)
|
||||
|
||||
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String..kotlin.String?!>?..kotlin.Array<out kotlin.String..kotlin.String?!>??")!>a.foo5()<!>
|
||||
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNullableK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// JAVAC_EXPECTED_FILE
|
||||
// FILE: Outer.java
|
||||
import org.checkerframework.checker.nullness.qual.*;
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
// 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(): Derived<String?> { return bar2(); }
|
||||
}
|
||||
Vendored
+67
@@ -0,0 +1,67 @@
|
||||
// !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 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnTypeWithWarnings.A<kotlin.String?, R..R?!>..ReturnTypeWithWarnings.A<kotlin.String?, R..R?!>?!")!>a.foo1()<!>
|
||||
takeNotNullStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNullableStringAndKNullable(x1)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x1<!>)
|
||||
takeNotNullString(a.foo41.foo411)
|
||||
|
||||
val x2 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnTypeWithWarnings.A<kotlin.String, R..R?!>..ReturnTypeWithWarnings.A<kotlin.String, R..R?!>?!")!>a.foo2()<!>
|
||||
takeNotNullStringAndKNullable(x2)
|
||||
takeNullableStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x2<!>)
|
||||
|
||||
val x3 = <!DEBUG_INFO_EXPRESSION_TYPE("ReturnTypeWithWarnings.A<kotlin.String, R..R?!>..ReturnTypeWithWarnings.A<kotlin.String, R..R?!>?!")!>a.foo3<!>
|
||||
takeNotNullStringAndKNullable(x3)
|
||||
takeNullableStringAndKNullable(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
takeNotNullStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
takeNullableStringAndNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x3<!>)
|
||||
|
||||
val x4 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<R..R?!>..kotlin.Array<out R..R?!>")!>a.foo4<!>
|
||||
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x4<!>)
|
||||
takeArrayOfNullableK(x4)
|
||||
|
||||
val x5 = <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Array<kotlin.String..kotlin.String?!>?..kotlin.Array<out kotlin.String..kotlin.String?!>??")!>a.foo5()<!>
|
||||
takeArrayOfNotNullString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNullableString(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNotNullK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
takeArrayOfNullableK(<!ARGUMENT_TYPE_MISMATCH!>x5<!>)
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: A.java
|
||||
import org.checkerframework.checker.nullness.qual.*;
|
||||
import java.util.*;
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// SKIP_TXT
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// FILE: MapLike.java
|
||||
public interface MapLike<@org.jetbrains.annotations.NotNull K> {
|
||||
void put(K x);
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun test2(map : MapLike<Int>, x2: Int?) {
|
||||
map.put(x2)
|
||||
}
|
||||
Vendored
+62
@@ -0,0 +1,62 @@
|
||||
// !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(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndKNullable()<!>)
|
||||
a.foo1(getNullableStringAndKNullable())
|
||||
a.foo1(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo1(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo2(getNotNullStringAndKNullable())
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo3(getNotNullStringAndKNullable())
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
|
||||
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableString()<!>)
|
||||
a.foo4(getArrayOfNotNullK())
|
||||
a.foo4(getArrayOfNullableK())
|
||||
|
||||
a.foo5(getArrayOfNotNullString())
|
||||
a.foo5(getArrayOfNullableString())
|
||||
a.foo5(getArrayOfNotNullK())
|
||||
a.foo5(getArrayOfNullableK())
|
||||
|
||||
a.foo41(getNotNullString())
|
||||
a.foo411(<!ARGUMENT_TYPE_MISMATCH!>getNotNullString()<!>)
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
// !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(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndKNullable()<!>)
|
||||
a.foo1(getNullableStringAndKNullable())
|
||||
a.foo1(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo1(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo2(getNotNullStringAndKNullable())
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo2(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo3(getNotNullStringAndKNullable())
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndKNullable()<!>)
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNotNullStringAndNotNullK()<!>)
|
||||
a.foo3(<!ARGUMENT_TYPE_MISMATCH!>getNullableStringAndNotNullK()<!>)
|
||||
|
||||
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNotNullString()<!>)
|
||||
a.foo4(<!ARGUMENT_TYPE_MISMATCH!>getArrayOfNullableString()<!>)
|
||||
a.foo4(getArrayOfNotNullK())
|
||||
a.foo4(getArrayOfNullableK())
|
||||
|
||||
a.foo5(getArrayOfNotNullString())
|
||||
a.foo5(getArrayOfNullableString())
|
||||
a.foo5(getArrayOfNotNullK())
|
||||
a.foo5(getArrayOfNullableK())
|
||||
|
||||
a.foo41(getNotNullString())
|
||||
a.foo411(<!ARGUMENT_TYPE_MISMATCH!>getNotNullString()<!>)
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// !LANGUAGE: -TypeEnhancementImprovementsInStrictMode
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
// MUTE_FOR_PSI_CLASS_FILES_READING
|
||||
|
||||
// We've already had errors in source mode, so it's relevant only for binaries for now
|
||||
|
||||
// FILE: Base.java
|
||||
// INCLUDE_JAVA_AS_BINARY
|
||||
public class Base<K> {}
|
||||
|
||||
// FILE: Test.java
|
||||
// INCLUDE_JAVA_AS_BINARY
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
class Test extends Base<@Nullable String> {}
|
||||
|
||||
// FILE: main.kt
|
||||
fun takeBaseOfNotNullStrings(x: Base<String>) {}
|
||||
|
||||
fun main() {
|
||||
val x = takeBaseOfNotNullStrings(Test())
|
||||
}
|
||||
Reference in New Issue
Block a user