// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER // FILE: A.java import jspecify.annotations.*; public class A { } // FILE: B.java import jspecify.annotations.*; public class B { public void superAsIs(A a) {} public void superNotNull(A a) {} public void superNullable(A a) {} public void extendsAsIs(A a) {} public void extendsNotNull(A a) {} public void extendsNullable(A a) {} public void noBounds(A a) {} } // FILE: main.kt fun main( aNotNullNotNullNotNull: A, aNotNullNotNullNull: A, aNotNullNullNotNull: A, aNotNullNullNull: A, aAnyNotNullNotNullNotNull: A, aAnyNotNullNotNullNull: A, aAnyNotNullNullNotNull: A, aAnyNotNullNullNull: A, b: B ) { b.superAsIs(aAnyNotNullNotNullNotNull) b.superAsIs(aAnyNotNullNotNullNull) b.superAsIs(aAnyNotNullNullNotNull) b.superAsIs(aAnyNotNullNullNull) b.superNotNull(aAnyNotNullNotNullNotNull) b.superNotNull(aAnyNotNullNotNullNull) b.superNotNull(aAnyNotNullNullNotNull) b.superNotNull(aAnyNotNullNullNull) // TODO: Bound for the first argument in "superNullable" contradicts to declared nullability of the parameter // Do we need to ignore such arguments' nullability? b.superNullable(aAnyNotNullNotNullNotNull) b.superNullable(aAnyNotNullNotNullNull) b.superNullable(aAnyNotNullNullNotNull) b.superNullable(aAnyNotNullNullNull) b.extendsAsIs(aNotNullNotNullNotNull) b.extendsAsIs(aNotNullNotNullNull) b.extendsAsIs(aNotNullNullNotNull) b.extendsAsIs(aNotNullNullNull) b.extendsNotNull(aNotNullNotNullNotNull) b.extendsNotNull(aNotNullNotNullNull) b.extendsNotNull(aNotNullNullNotNull) 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) }