Pull Up: Kotlin -> Java interoperability
This commit is contained in:
committed by
Alexey Sedunov
parent
ffc56a7c31
commit
a9783ffe81
@@ -0,0 +1,3 @@
|
||||
class A {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
abstract class A {
|
||||
|
||||
public final int x;
|
||||
|
||||
abstract boolean foo(int n);
|
||||
|
||||
abstract void bar(@NotNull String s);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class <caret>B: A() {
|
||||
// INFO: {"checked": "true"}
|
||||
val x = 1
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(n: Int): Boolean = n > 0
|
||||
// INFO: {"checked": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class B: A() {
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
override fun foo(n: Int): Boolean = n > 0
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A {
|
||||
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
abstract class A {
|
||||
|
||||
public final int x;
|
||||
|
||||
abstract boolean foo(int n);
|
||||
|
||||
abstract void bar(@NotNull String s);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class <caret>B: A() {
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val x = 1
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
fun foo(n: Int): Boolean = n > 0
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class B: A() {
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
override fun foo(n: Int): Boolean = n > 0
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true", "toAbstract": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A<T extends I, U extends I, V> {
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
abstract class A<T extends I, U extends I, V> {
|
||||
|
||||
@NotNull
|
||||
public final T foo1;
|
||||
@NotNull
|
||||
public final Z<T> foo2;
|
||||
public final Object foo3;
|
||||
@NotNull
|
||||
public final Z foo4;
|
||||
@NotNull
|
||||
public final T foo5;
|
||||
@NotNull
|
||||
public final Z<T> foo6;
|
||||
public final Object foo7;
|
||||
@NotNull
|
||||
public final Z foo8;
|
||||
|
||||
abstract <S extends T> void foo(@NotNull T x1, @NotNull Z<T> x2, Object y1, @NotNull Z y2, @NotNull I w1, @NotNull Z w2, @NotNull S s1, @NotNull Z<S> s2);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// WITH_RUNTIME
|
||||
interface I
|
||||
|
||||
interface Z<T>
|
||||
|
||||
class C<W: I> {
|
||||
inner class <caret>B<X: I, Y>(x: X, y: Y): A<X, I, Z<Y>>() {
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo<S : X>(x1: X, x2: Z<X>, y1: Y, y2: Z<Y>, w1: W, w2: Z<W>, s1: S, s2: Z<S>) {
|
||||
|
||||
}
|
||||
// INFO: {"checked": "true"}
|
||||
val foo1: X
|
||||
// INFO: {"checked": "true"}
|
||||
val foo2: Z<X>
|
||||
// INFO: {"checked": "true"}
|
||||
val foo3: Y
|
||||
// INFO: {"checked": "true"}
|
||||
val foo4: Z<Y>
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
val foo5 = x
|
||||
// INFO: {"checked": "true"}
|
||||
val foo6 = object: Z<X> {}
|
||||
// INFO: {"checked": "true"}
|
||||
val foo7 = y
|
||||
// INFO: {"checked": "true"}
|
||||
val foo8 = object: Z<Y> {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// WITH_RUNTIME
|
||||
interface I
|
||||
|
||||
interface Z<T>
|
||||
|
||||
class C<W: I> {
|
||||
inner class B<X: I, Y>(x: X, y: Y): A<X, I, Z<Y>>() {
|
||||
// INFO: {"checked": "true"}
|
||||
override fun foo<S : X>(x1: X, x2: Z<X>, y1: Y, y2: Z<Y>, w1: W, w2: Z<W>, s1: S, s2: Z<S>) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
interface I {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
interface I {
|
||||
|
||||
boolean foo(int n);
|
||||
|
||||
void bar(@NotNull String s);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class <caret>B: I {
|
||||
// INFO: {"checked": "true"}
|
||||
val x = 1
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(n: Int): Boolean = n > 0
|
||||
// INFO: {"checked": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class B: I {
|
||||
// INFO: {"checked": "true"}
|
||||
val x = 1
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
override fun foo(n: Int): Boolean = n > 0
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class T {
|
||||
static class A {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
class T {
|
||||
static abstract class A {
|
||||
|
||||
public final int x;
|
||||
|
||||
abstract boolean foo(int n);
|
||||
|
||||
abstract void bar(@NotNull String s);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class <caret>B: T.A() {
|
||||
// INFO: {"checked": "true"}
|
||||
val x = 1
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
fun foo(n: Int): Boolean = n > 0
|
||||
// INFO: {"checked": "true"}
|
||||
abstract fun bar(s: String)
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// WITH_RUNTIME
|
||||
abstract class B: T.A() {
|
||||
// INFO: {"checked": "true"}
|
||||
val y: Int get() = 2
|
||||
// INFO: {"checked": "true"}
|
||||
val z: Int by lazy { 3 }
|
||||
// INFO: {"checked": "true"}
|
||||
abstract val t: Int
|
||||
// INFO: {"checked": "true"}
|
||||
override fun foo(n: Int): Boolean = n > 0
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
inner class X {
|
||||
|
||||
}
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
class Y {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A implements Z {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A implements Z, X {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X
|
||||
|
||||
// INFO: {"checked": "false"}
|
||||
interface Y
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z
|
||||
|
||||
class <caret>B: A(), X, Y, Z
|
||||
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X
|
||||
|
||||
// INFO: {"checked": "false"}
|
||||
interface Y
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z
|
||||
|
||||
class B: A(), Y
|
||||
@@ -0,0 +1,3 @@
|
||||
interface I extends Z {
|
||||
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
interface I extends Z, X {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X
|
||||
|
||||
// INFO: {"checked": "false"}
|
||||
interface Y
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z
|
||||
|
||||
class <caret>B: I, X, Y, Z
|
||||
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X
|
||||
|
||||
// INFO: {"checked": "false"}
|
||||
interface Y
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z
|
||||
|
||||
class B: I, Y
|
||||
@@ -0,0 +1,3 @@
|
||||
class A<T> implements Z<T> {
|
||||
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
class A<T> implements Z<T>, X, Y<T> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X<T, U>
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Y<V : Any>
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z<T>
|
||||
|
||||
class <caret>B<S : Any, U : S, V>: A<S>(), X<U, V>, Y<S>, Z<U>
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// INFO: {"checked": "true"}
|
||||
interface X<T, U>
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Y<V : Any>
|
||||
|
||||
// INFO: {"checked": "true"}
|
||||
interface Z<T>
|
||||
|
||||
class B<S : Any, U : S, V>: A<S>()
|
||||
@@ -0,0 +1,3 @@
|
||||
interface I {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
interface I {
|
||||
|
||||
int foo();
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
class <caret>A: I {
|
||||
// INFO: {"checked": "true"}
|
||||
public fun foo(): Int = 1
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
class A: I {
|
||||
// INFO: {"checked": "true"}
|
||||
override fun foo(): Int = 1
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
abstract class A {
|
||||
|
||||
protected abstract int foo();
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class <caret>B: A() {
|
||||
// INFO: {"checked": "true"}
|
||||
private fun foo(): Int = 1
|
||||
|
||||
fun bar() = foo() + 1
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class B: A() {
|
||||
// INFO: {"checked": "true"}
|
||||
protected override fun foo(): Int = 1
|
||||
|
||||
fun bar() = foo() + 1
|
||||
}
|
||||
Reference in New Issue
Block a user