mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +00:00
1
This commit is contained in:
81
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/AnnotatedBoundsOfWildcard.java
vendored
Normal file
81
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/AnnotatedBoundsOfWildcard.java
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
public class AnnotatedBoundsOfWildcard {
|
||||
public void superAsIs(Test<? super @NullnessUnspecified Base, ? super @NullnessUnspecified Base, ? super @NullnessUnspecified Base> a) {}
|
||||
public void superNotNull(Test<? super Base, ? super Base, ? super Base> a) {}
|
||||
public void superNullable(Test<? super @Nullable Base, ? super @Nullable Base, ? super @Nullable Base> a) {}
|
||||
|
||||
public void extendsAsIs(Test<? extends @NullnessUnspecified Base, ? extends @NullnessUnspecified Base, ? extends @NullnessUnspecified Base> a) {}
|
||||
public void extendsNotNull(Test<? extends Base, ? extends Base, ? extends Base> a) {}
|
||||
public void extendsNullable(Test<? extends @Nullable Base, ? extends @Nullable Base, ? extends @Nullable Base> a) {}
|
||||
|
||||
public void noBounds(Test<@NullnessUnspecified ?, @NullnessUnspecified ?, @NullnessUnspecified ?> a) {}
|
||||
}
|
||||
|
||||
class Base {}
|
||||
class Derived extends Base {}
|
||||
|
||||
@DefaultNonNull
|
||||
class Test<T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> { }
|
||||
|
||||
@DefaultNonNull
|
||||
class Use {
|
||||
public void main(
|
||||
Test<Derived, Derived, Derived> aNotNullNotNullNotNull,
|
||||
Test<Derived, Derived, @Nullable Derived> aNotNullNotNullNull,
|
||||
Test<Derived, @Nullable Derived, Derived> aNotNullNullNotNull,
|
||||
Test<Derived, @Nullable Derived, @Nullable Derived> aNotNullNullNull,
|
||||
|
||||
Test<Object, Object, Object> aObjectNotNullNotNullNotNull,
|
||||
Test<Object, Object, @Nullable Object> aObjectNotNullNotNullNull,
|
||||
Test<Object, @Nullable Object, Object> aObjectNotNullNullNotNull,
|
||||
Test<Object, @Nullable Object, @Nullable Object> aObjectNotNullNullNull,
|
||||
|
||||
AnnotatedWildcards b
|
||||
) {
|
||||
// jspecify_nullness_mismatch
|
||||
b.superAsIs(aObjectNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.superAsIs(aObjectNotNullNotNullNull);
|
||||
b.superAsIs(aObjectNotNullNullNotNull);
|
||||
b.superAsIs(aObjectNotNullNullNull);
|
||||
|
||||
b.superNotNull(aObjectNotNullNotNullNotNull);
|
||||
b.superNotNull(aObjectNotNullNotNullNull);
|
||||
b.superNotNull(aObjectNotNullNullNotNull);
|
||||
b.superNotNull(aObjectNotNullNullNull);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
b.superNullable(aObjectNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.superNullable(aObjectNotNullNotNullNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.superNullable(aObjectNotNullNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.superNullable(aObjectNotNullNullNull);
|
||||
|
||||
b.extendsAsIs(aNotNullNotNullNotNull);
|
||||
b.extendsAsIs(aNotNullNotNullNull);
|
||||
b.extendsAsIs(aNotNullNullNotNull);
|
||||
b.extendsAsIs(aNotNullNullNull);
|
||||
|
||||
b.extendsNotNull(aNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.extendsNotNull(aNotNullNotNullNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.extendsNotNull(aNotNullNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.extendsNotNull(aNotNullNullNull);
|
||||
|
||||
b.extendsNullable(aNotNullNotNullNotNull);
|
||||
b.extendsNullable(aNotNullNotNullNull);
|
||||
b.extendsNullable(aNotNullNullNotNull);
|
||||
b.extendsNullable(aNotNullNullNull);
|
||||
|
||||
b.noBounds(aNotNullNotNullNotNull);
|
||||
b.noBounds(aNotNullNotNullNull);
|
||||
b.noBounds(aNotNullNullNotNull);
|
||||
b.noBounds(aNotNullNullNull);
|
||||
}
|
||||
}
|
||||
44
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/Defaults.java
vendored
Normal file
44
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/Defaults.java
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
public class Defaults {
|
||||
public Foo defaultField = null;
|
||||
@Nullable public Foo field = null;
|
||||
|
||||
public Foo everythingNotNullable(Foo x) { return null; }
|
||||
|
||||
public @Nullable Foo everythingNullable(@Nullable Foo x) { return null; }
|
||||
|
||||
public @NullnessUnspecified Foo everythingUnknown(@NullnessUnspecified Foo x) { return null; }
|
||||
|
||||
public @Nullable Foo mixed(Foo x) { return null; }
|
||||
|
||||
public Foo explicitlyNullnessUnspecified(@NullnessUnspecified Foo x) { return null; }
|
||||
}
|
||||
|
||||
class Foo {
|
||||
public Object foo() { return null; }
|
||||
}
|
||||
|
||||
class Use {
|
||||
static void main(Defaults a, Foo x) {
|
||||
// jspecify_nullness_mismatch
|
||||
a.everythingNotNullable(null).foo();
|
||||
a.everythingNotNullable(x).foo();
|
||||
|
||||
a.everythingNullable(null).foo();
|
||||
|
||||
a.everythingUnknown(null).foo();
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
a.mixed(null).foo();
|
||||
a.mixed(x).foo();
|
||||
|
||||
a.explicitlyNullnessUnspecified(x).foo();
|
||||
a.explicitlyNullnessUnspecified(null).foo();
|
||||
|
||||
a.defaultField.foo();
|
||||
|
||||
a.field.foo();
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
public class IgnoreAnnotations {
|
||||
public static class Base {
|
||||
void foo() {}
|
||||
}
|
||||
public static class Derived extends Base { }
|
||||
|
||||
@Nullable public Derived field = null;
|
||||
|
||||
@Nullable
|
||||
@@ -13,10 +9,31 @@ public class IgnoreAnnotations {
|
||||
return null;
|
||||
}
|
||||
|
||||
static void main(IgnoreAnnotations a) {
|
||||
a.foo(new Derived(), null).foo();
|
||||
a.foo(null, new Derived()).foo();
|
||||
public Derived everythingNotNullable(Derived x) { return null; }
|
||||
|
||||
public @Nullable Derived everythingNullable(@Nullable Derived x) { return null; }
|
||||
|
||||
public @NullnessUnspecified Derived everythingUnknown(@NullnessUnspecified Derived x) { return null; }
|
||||
}
|
||||
|
||||
class Base {
|
||||
void foo() {}
|
||||
}
|
||||
|
||||
class Derived extends Base { }
|
||||
|
||||
class Use {
|
||||
static void main(IgnoreAnnotations a, Derived x) {
|
||||
a.foo(x, null).foo();
|
||||
a.foo(null, x).foo();
|
||||
|
||||
a.field.foo();
|
||||
|
||||
a.everythingNotNullable(null).foo();
|
||||
a.everythingNotNullable(x).foo();
|
||||
|
||||
a.everythingNullable(null).foo();
|
||||
|
||||
a.everythingUnknown(null).foo();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,26 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
public class NonPlatformTypeParameter<T extends @Nullable Object> {
|
||||
public static class Test {}
|
||||
|
||||
public void foo(T t) {}
|
||||
public <E extends @Nullable Object> void bar(E e) {}
|
||||
}
|
||||
|
||||
public static void main(NonPlatformTypeParameter<Object> a1, NonPlatformTypeParameter<Test> a2) {
|
||||
class Test {}
|
||||
|
||||
@DefaultNonNull
|
||||
class Use {
|
||||
public <T extends Test> void main(NonPlatformTypeParameter<@Nullable Object> a1, NonPlatformTypeParameter<Test> a2, T x) {
|
||||
a1.foo(null);
|
||||
a1.<Test>bar(null);
|
||||
a1.<Test>bar(new Test());
|
||||
a1.<@Nullable Test>bar(null);
|
||||
// jspecify_nullness_mismatch
|
||||
a1.<T>bar(null);
|
||||
a1.<T>bar(x);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
a2.foo(null);
|
||||
a2.<Test>bar(null);
|
||||
a2.<Test>bar(new Test());
|
||||
a2.<@Nullable Test>bar(null);
|
||||
// jspecify_nullness_mismatch
|
||||
a2.<T>bar(null);
|
||||
a2.<T>bar(x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,32 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
public class Simple {
|
||||
public static class Base {}
|
||||
public static class Derived extends Base {
|
||||
void foo() {}
|
||||
}
|
||||
|
||||
@Nullable public Simple.Derived field = null;
|
||||
@Nullable public Derived field = null;
|
||||
|
||||
@Nullable
|
||||
public Simple.Derived foo(Derived x, @NullnessUnspecified Base y) {
|
||||
public Derived foo(Derived x, @NullnessUnspecified Base y) {
|
||||
return null;
|
||||
}
|
||||
|
||||
static public void main(Simple a) {
|
||||
a.foo(new Derived(), null).foo();
|
||||
a.foo(null, new Derived()).foo();
|
||||
public Derived bar() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class Base {}
|
||||
class Derived extends Base {
|
||||
void foo() {}
|
||||
}
|
||||
|
||||
@DefaultNonNull
|
||||
class Use {
|
||||
static public void main(Simple a, Derived x) {
|
||||
a.foo(x, null).foo();
|
||||
// jspecify_nullness_mismatch
|
||||
a.foo(null, x).foo();
|
||||
|
||||
a.bar().foo();
|
||||
|
||||
a.field.foo();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
public class TypeArgumentsFromParameterBounds<T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> { }
|
||||
|
||||
class A {
|
||||
public void bar(TypeArgumentsFromParameterBounds<@Nullable Test, @Nullable Test, @Nullable Test> a) {}
|
||||
}
|
||||
|
||||
@DefaultNonNull
|
||||
class B {
|
||||
public void bar(TypeArgumentsFromParameterBounds<Test, Test, Test> a) {}
|
||||
}
|
||||
|
||||
class C {
|
||||
public void bar(TypeArgumentsFromParameterBounds<Test, Test, Test> a) {}
|
||||
}
|
||||
|
||||
class Test {}
|
||||
|
||||
@DefaultNonNull
|
||||
class Use {
|
||||
static public void main(
|
||||
TypeArgumentsFromParameterBounds<Test, Test, Test> aNotNullNotNullNotNull,
|
||||
TypeArgumentsFromParameterBounds<Test, Test, @Nullable Test> aNotNullNotNullNull,
|
||||
TypeArgumentsFromParameterBounds<Test, @Nullable Test, Test> aNotNullNullNotNull,
|
||||
TypeArgumentsFromParameterBounds<Test, @Nullable Test, @Nullable Test> aNotNullNullNull,
|
||||
A a, B b, C c
|
||||
) {
|
||||
// jspecify_nullness_mismatch
|
||||
a.bar(aNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
a.bar(aNotNullNotNullNull);
|
||||
// jspecify_nullness_mismatch
|
||||
a.bar(aNotNullNullNotNull);
|
||||
a.bar(aNotNullNullNull);
|
||||
|
||||
b.bar(aNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.bar(aNotNullNotNullNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.bar(aNotNullNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.bar(aNotNullNullNull);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
c.bar(aNotNullNotNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
c.bar(aNotNullNotNullNull);
|
||||
c.bar(aNotNullNullNotNull);
|
||||
c.bar(aNotNullNullNull);
|
||||
}
|
||||
}
|
||||
44
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/TypeParameterBounds.java
vendored
Normal file
44
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/TypeParameterBounds.java
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNonNull
|
||||
class A<T> {
|
||||
public void foo(@NullnessUnspecified T t) {}
|
||||
public <E> void bar(E e) {}
|
||||
}
|
||||
|
||||
@DefaultNonNull
|
||||
class B<T> {
|
||||
public void foo(T t) {}
|
||||
public <E> void bar(E e) {}
|
||||
}
|
||||
|
||||
class Test {}
|
||||
|
||||
@DefaultNonNull
|
||||
public class TypeParameterBounds {
|
||||
<T extends Test> void main(A<@Nullable Object> a1, A<Test> a2, B<@Nullable Object> b1, B<Test> b2, T x) {
|
||||
// jspecify_nullness_mismatch
|
||||
a1.foo(null);
|
||||
// jspecify_nullness_mismatch
|
||||
a1.<@Nullable T>bar(null);
|
||||
a1.<T>bar(x);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
a2.foo(null);
|
||||
// jspecify_nullness_mismatch
|
||||
a2.<@Nullable T>bar(null);
|
||||
a2.<T>bar(x);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
b1.foo(null);
|
||||
// jspecify_nullness_mismatch
|
||||
b1.<@Nullable T>bar(null);
|
||||
b1.<T>bar(x);
|
||||
|
||||
// jspecify_nullness_mismatch
|
||||
b2.foo(null);
|
||||
// jspecify_nullness_mismatch
|
||||
b2.<@Nullable T>bar(null);
|
||||
b2.<T>bar(x);
|
||||
}
|
||||
}
|
||||
37
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/WildcardsWithDefault.java
vendored
Normal file
37
compiler/testData/foreignAnnotationsJava8/tests/jspecify/java/WildcardsWithDefault.java
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
// COMPILER_ARGUMENTS: -Xjspecify-annotations
|
||||
|
||||
import org.jspecify.annotations.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@DefaultNonNull
|
||||
public class WildcardsWithDefault {
|
||||
public void noBoundsNotNull(WildcardsWithDefault.A<?, ?, ?> a) {}
|
||||
public void noBoundsNullable(WildcardsWithDefault.A<@Nullable ?, @Nullable ?, @Nullable ?> a) {}
|
||||
|
||||
public class A <T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {}
|
||||
}
|
||||
|
||||
@DefaultNonNull
|
||||
class Use {
|
||||
public static void main(
|
||||
WildcardsWithDefault.A<Object, Object, Object> aNotNullNotNullNotNull,
|
||||
WildcardsWithDefault.A<Object, Object, @Nullable Object> aNotNullNotNullNull,
|
||||
WildcardsWithDefault.A<Object, @Nullable Object, Object> aNotNullNullNotNull,
|
||||
WildcardsWithDefault.A<Object, @Nullable Object, @Nullable Object> aNotNullNullNull,
|
||||
WildcardsWithDefault b
|
||||
) {
|
||||
// jspecify_nullness_mismatch
|
||||
b.noBoundsNotNull(aNotNullNotNullNotNull);
|
||||
b.noBoundsNotNull(aNotNullNotNullNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.noBoundsNotNull(aNotNullNullNotNull);
|
||||
// jspecify_nullness_mismatch
|
||||
b.noBoundsNotNull(aNotNullNullNull);
|
||||
|
||||
b.noBoundsNullable(aNotNullNotNullNotNull);
|
||||
b.noBoundsNullable(aNotNullNotNullNull);
|
||||
b.noBoundsNullable(aNotNullNullNotNull);
|
||||
b.noBoundsNullable(aNotNullNullNull);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
public class AnnotatedWildcardsA<T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> { }
|
||||
@@ -1,53 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
public class AnnotatedWildcardsB {
|
||||
public static class Base {}
|
||||
public static class Derived extends Base {}
|
||||
|
||||
public void superAsIs(AnnotatedWildcardsA<? super Base, ? super Base, ? super Base> a) {}
|
||||
public void superNullable(AnnotatedWildcardsA<? super @Nullable Base, ? super @Nullable Base, ? super @Nullable Base> a) {}
|
||||
|
||||
public void extendsAsIs(AnnotatedWildcardsA<? extends Base, ? extends Base, ? extends Base> a) {}
|
||||
public void extendsNullable(AnnotatedWildcardsA<? extends @Nullable Base, ? extends @Nullable Base, ? extends @Nullable Base> a) {}
|
||||
|
||||
public void noBounds(AnnotatedWildcardsA<?, ?, ?> a) {}
|
||||
|
||||
public void main(
|
||||
AnnotatedWildcardsA<Derived, Derived, Derived> aNullUnspecNullUnspecNullUnspec,
|
||||
AnnotatedWildcardsA<Derived, Derived, @Nullable Derived> aNullUnspecNullUnspecNull,
|
||||
AnnotatedWildcardsA<Derived, @Nullable Derived, Derived> aNullUnspecNullNullUnspec,
|
||||
AnnotatedWildcardsA<Derived, @Nullable Derived, @Nullable Derived> aNullUnspecNullNull,
|
||||
|
||||
AnnotatedWildcardsA<Object, Object, Object> aObjectNullUnspecNullUnspecNullUnspec,
|
||||
AnnotatedWildcardsA<Object, Object, @Nullable Object> aObjectNullUnspecNullUnspecNull,
|
||||
AnnotatedWildcardsA<Object, @Nullable Object, Object> aObjectNullUnspecNullNullUnspec,
|
||||
AnnotatedWildcardsA<Object, @Nullable Object, @Nullable Object> aObjectNullUnspecNullNull,
|
||||
|
||||
AnnotatedWildcardsB b
|
||||
) {
|
||||
b.superAsIs(aObjectNullUnspecNullUnspecNullUnspec);
|
||||
b.superAsIs(aObjectNullUnspecNullUnspecNull);
|
||||
b.superAsIs(aObjectNullUnspecNullNullUnspec);
|
||||
b.superAsIs(aObjectNullUnspecNullNull);
|
||||
|
||||
b.superNullable(aObjectNullUnspecNullUnspecNullUnspec);
|
||||
b.superNullable(aObjectNullUnspecNullUnspecNull);
|
||||
b.superNullable(aObjectNullUnspecNullNullUnspec);
|
||||
b.superNullable(aObjectNullUnspecNullNull);
|
||||
|
||||
b.extendsAsIs(aNullUnspecNullUnspecNullUnspec);
|
||||
b.extendsAsIs(aNullUnspecNullUnspecNull);
|
||||
b.extendsAsIs(aNullUnspecNullNullUnspec);
|
||||
b.extendsAsIs(aNullUnspecNullNull);
|
||||
|
||||
b.extendsNullable(aNullUnspecNullUnspecNullUnspec);
|
||||
b.extendsNullable(aNullUnspecNullUnspecNull);
|
||||
b.extendsNullable(aNullUnspecNullNullUnspec);
|
||||
b.extendsNullable(aNullUnspecNullNull);
|
||||
|
||||
b.noBounds(aNullUnspecNullUnspecNullUnspec);
|
||||
b.noBounds(aNullUnspecNullUnspecNull);
|
||||
b.noBounds(aNullUnspecNullNullUnspec);
|
||||
b.noBounds(aNullUnspecNullNull);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNotNull
|
||||
public class DefaultsA {
|
||||
static class Test {
|
||||
public Test foo() { return null; }
|
||||
}
|
||||
|
||||
public Test defaultField = null;
|
||||
@Nullable public Test field = null;
|
||||
|
||||
public Test everythingNotNullable(Test x) { return null; }
|
||||
|
||||
public Test explicitlyNullnessUnspecified(@NullnessUnspecified Test x) { return null; }
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
public class DefaultsB {
|
||||
static void main(DefaultsA a) {
|
||||
a.everythingNotNullable(null).foo();
|
||||
a.everythingNotNullable(new DefaultsA.Test()).foo();
|
||||
|
||||
a.explicitlyNullnessUnspecified(new DefaultsA.Test()).foo();
|
||||
a.explicitlyNullnessUnspecified(null).foo();
|
||||
|
||||
a.defaultField.foo();
|
||||
|
||||
a.field.foo();
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
public class TypeArgumentsFromParameterBoundsA<T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {
|
||||
static public void main(
|
||||
TypeArgumentsFromParameterBoundsA<TypeArgumentsFromParameterBoundsC.Test, TypeArgumentsFromParameterBoundsC.Test, TypeArgumentsFromParameterBoundsC.Test> aNullUnspecNullUnspecNullUnspec,
|
||||
TypeArgumentsFromParameterBoundsA<TypeArgumentsFromParameterBoundsC.Test, TypeArgumentsFromParameterBoundsC.Test, @Nullable TypeArgumentsFromParameterBoundsC.Test> aNullUnspecNullUnspecNull,
|
||||
TypeArgumentsFromParameterBoundsA<TypeArgumentsFromParameterBoundsC.Test, @Nullable TypeArgumentsFromParameterBoundsC.Test, TypeArgumentsFromParameterBoundsC.Test> aNullUnspecNullNullUnspec,
|
||||
TypeArgumentsFromParameterBoundsA<TypeArgumentsFromParameterBoundsC.Test, @Nullable TypeArgumentsFromParameterBoundsC.Test, @Nullable TypeArgumentsFromParameterBoundsC.Test> aNullUnspecNullNull,
|
||||
TypeArgumentsFromParameterBoundsC c
|
||||
) {
|
||||
c.bar(aNullUnspecNullUnspecNullUnspec);
|
||||
c.bar(aNullUnspecNullUnspecNull);
|
||||
c.bar(aNullUnspecNullNullUnspec);
|
||||
c.bar(aNullUnspecNullNull);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNotNull
|
||||
public class TypeArgumentsFromParameterBoundsC {
|
||||
static public class Test {}
|
||||
|
||||
public void bar(TypeArgumentsFromParameterBoundsA<Test, Test, Test> a) {}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNotNull
|
||||
public class TypeParameterBoundsB<T> {
|
||||
static public class Test {}
|
||||
|
||||
public void foo(T t) {}
|
||||
public <E> void bar(E e) {}
|
||||
public void boo(Test e) {}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
public class TypeParameterBoundsC {
|
||||
public static void main(TypeParameterBoundsB<@Nullable Object> b1, TypeParameterBoundsB<TypeParameterBoundsB.Test> b2) {
|
||||
b1.foo(null);
|
||||
b1.<@Nullable TypeParameterBoundsB.Test>bar(null);
|
||||
b1.<TypeParameterBoundsB.Test>bar(new TypeParameterBoundsB.Test());
|
||||
|
||||
b2.foo(null);
|
||||
b2.boo(null);
|
||||
b2.<@Nullable TypeParameterBoundsB.Test>bar(null);
|
||||
b2.<TypeParameterBoundsB.Test>bar(new TypeParameterBoundsB.Test());
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
public class WildcardsWithDefaultA<T extends Object, E extends @Nullable Object, F extends @NullnessUnspecified Object> {
|
||||
public static void main(
|
||||
WildcardsWithDefaultA<Object, Object, Object> aNullUnspecNullUnspecNullUnspec,
|
||||
WildcardsWithDefaultA<Object, Object, @Nullable Object> aNullUnspecNullUnspecNull,
|
||||
WildcardsWithDefaultA<Object, @Nullable Object, Object> aNullUnspecNullNullUnspec,
|
||||
WildcardsWithDefaultA<Object, @Nullable Object, @Nullable Object> aNullUnspecNullNull,
|
||||
WildcardsWithDefaultB b
|
||||
) {
|
||||
b.noBoundsNotNull(aNullUnspecNullUnspecNullUnspec);
|
||||
b.noBoundsNotNull(aNullUnspecNullUnspecNull);
|
||||
b.noBoundsNotNull(aNullUnspecNullNullUnspec);
|
||||
b.noBoundsNotNull(aNullUnspecNullNull);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import org.jspecify.annotations.*;
|
||||
|
||||
@DefaultNotNull
|
||||
public class WildcardsWithDefaultB {
|
||||
public void noBoundsNotNull(WildcardsWithDefaultA<?, ?, ?> a) {}
|
||||
}
|
||||
Reference in New Issue
Block a user