Change Signature: Propagate nullability annotations to overriding methods in Java

This commit is contained in:
Alexey Sedunov
2014-11-28 14:37:51 +03:00
parent c9873428de
commit 250940c824
16 changed files with 231 additions and 37 deletions
@@ -0,0 +1,27 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
class X extends A {
@NotNull
@Override
String foo(int n, @NotNull String s, @Nullable Object o) {
return "";
}
}
class Y extends X {
@NotNull
@Override
String foo(int n, @NotNull String s, @Nullable Object o) {
return super.foo(n, s, o);
}
}
class Test {
void test() {
new A().foo(1, "abc", "def");
new B().foo(2, "abc", "def");
new X().foo(3, "abc", "def");
new Y().foo(4, "abc", "def");
}
}
@@ -0,0 +1,7 @@
open class A {
open fun foo(n: Int, s: String, o: Any?): String = ""
}
class B: A() {
override fun foo(n: Int, s: String, o: Any?): String = ""
}
@@ -1,22 +0,0 @@
class X extends A {
@Override
String foo(int n, String s) {
return "";
}
}
class Y extends X {
@Override
String foo(int n, String s) {
return super.foo(n, s);
}
}
class Test {
void test() {
new A().foo(1, "abc");
new B().foo(2, "abc");
new X().foo(3, "abc");
new Y().foo(4, "abc");
}
}
@@ -1,7 +0,0 @@
open class A {
open fun foo(n: Int, s: String): String = ""
}
class B: A() {
override fun foo(n: Int, s: String): String = ""
}
@@ -0,0 +1,26 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
class X extends A {
@NotNull
@Override
String foo(int n, @Nullable String s, @NotNull Object o) {
return "";
}
}
class Y extends A {
@Nullable
@Override
String foo(int n, @Nullable String s, @NotNull Object o) {
return "";
}
}
class Z extends A {
@Nullable
@Override
String foo(int n, @Nullable String s, @NotNull Object o) {
return "";
}
}
@@ -0,0 +1,3 @@
open class A {
open fun foo(n: Int, s: String?, o: Any): String? = ""
}
@@ -0,0 +1,25 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
class X extends A {
@NotNull
@Override
String foo(int n, @NotNull String s, @Nullable Object o) {
return "";
}
}
class Y extends A {
@Override
String foo(int n, String s, Object o) {
return "";
}
}
class Z extends A {
@Nullable
@Override
String foo(int n, @Nullable String s, @NotNull Object o) {
return "";
}
}
@@ -0,0 +1,3 @@
open class A {
open fun <caret>foo(n: Int, s: String, o: Any?): String = ""
}
@@ -0,0 +1,10 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
class Y extends A {
@Nullable
@Override
Object foo(@Nullable String n, int s, @Nullable Long o) {
return "";
}
}
@@ -0,0 +1,3 @@
open class A {
open fun <caret>foo(n: String?, s: Int, o: Long?): Any? = ""
}
@@ -0,0 +1,9 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
class Y extends A {
@Override
String foo(int n, String s, Object o) {
return "";
}
}
@@ -0,0 +1,3 @@
open class A {
open fun <caret>foo(n: Int, s: String, o: Any?): String = ""
}