[FIR] Fix duplicate WRONG_NULLABILITY_FOR_JAVA_OVERRIDE
Also, the test shows a missing warning in K1 which is present in K2. #KT-63600 Fixed #KT-63599 #KT-63745 #KT-63746
This commit is contained in:
committed by
Space Team
parent
54c2339dfb
commit
4882ac6599
+64
@@ -0,0 +1,64 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// JSR305_GLOBAL_REPORT: warn
|
||||
|
||||
// FILE: test/NonNullApi.java
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.meta.TypeQualifierDefault;
|
||||
|
||||
@Target(ElementType.PACKAGE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Nonnull
|
||||
@TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER, ElementType.PACKAGE})
|
||||
public @interface NonNullApi {
|
||||
}
|
||||
|
||||
// FILE: test/package-info.java
|
||||
@NonNullApi
|
||||
package test;
|
||||
|
||||
// FILE: test/Provider.java
|
||||
package test;
|
||||
|
||||
import javax.annotation.*;
|
||||
|
||||
public interface Provider<T> {
|
||||
T get();
|
||||
@Nullable T getNullable();
|
||||
void set(T x);
|
||||
void setNullable(@Nullable T x);
|
||||
|
||||
T getSet(T x);
|
||||
@Nullable T getSetNullable(@Nullable T x);
|
||||
}
|
||||
|
||||
// FILE: test/I.java
|
||||
package test;
|
||||
|
||||
import javax.annotation.*;
|
||||
|
||||
public interface I<T> {
|
||||
T get();
|
||||
void set(T x);
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
package test;
|
||||
|
||||
abstract class Multiple<T> : Provider<T>, I<T> {
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun get(): T = null!!
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun set(x: T) {} // Missing warning in K1, K2 get's this right
|
||||
}
|
||||
|
||||
abstract class A<T> : Provider<T> {
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun get(): T = null!!
|
||||
override fun getNullable(): T = null!!
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun set(x: T) {} // Missing warning in K1, K2 get's this right
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun setNullable(x: T) {}
|
||||
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun getSet(x: T): T = x
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun getSetNullable(x: T): T = x
|
||||
}
|
||||
Vendored
+64
@@ -0,0 +1,64 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE -UNUSED_PARAMETER
|
||||
// JSR305_GLOBAL_REPORT: warn
|
||||
|
||||
// FILE: test/NonNullApi.java
|
||||
package test;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.meta.TypeQualifierDefault;
|
||||
|
||||
@Target(ElementType.PACKAGE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@Nonnull
|
||||
@TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER, ElementType.PACKAGE})
|
||||
public @interface NonNullApi {
|
||||
}
|
||||
|
||||
// FILE: test/package-info.java
|
||||
@NonNullApi
|
||||
package test;
|
||||
|
||||
// FILE: test/Provider.java
|
||||
package test;
|
||||
|
||||
import javax.annotation.*;
|
||||
|
||||
public interface Provider<T> {
|
||||
T get();
|
||||
@Nullable T getNullable();
|
||||
void set(T x);
|
||||
void setNullable(@Nullable T x);
|
||||
|
||||
T getSet(T x);
|
||||
@Nullable T getSetNullable(@Nullable T x);
|
||||
}
|
||||
|
||||
// FILE: test/I.java
|
||||
package test;
|
||||
|
||||
import javax.annotation.*;
|
||||
|
||||
public interface I<T> {
|
||||
T get();
|
||||
void set(T x);
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
package test;
|
||||
|
||||
abstract class Multiple<T> : Provider<T>, I<T> {
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun get(): T = null!!
|
||||
override fun set(x: T) {} // Missing warning in K1, K2 get's this right
|
||||
}
|
||||
|
||||
abstract class A<T> : Provider<T> {
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun get(): T = null!!
|
||||
override fun getNullable(): T = null!!
|
||||
override fun set(x: T) {} // Missing warning in K1, K2 get's this right
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun setNullable(x: T) {}
|
||||
|
||||
<!WRONG_NULLABILITY_FOR_JAVA_OVERRIDE!>override<!> fun getSet(x: T): T = x
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun getSetNullable(x: T): T = x
|
||||
}
|
||||
Reference in New Issue
Block a user