Add some marginal tests for types enhancement
This commit is contained in:
Vendored
+38
@@ -0,0 +1,38 @@
|
||||
// FILE: AnnotatedTypeArguments.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface P<X, Y> {}
|
||||
interface L<T> {}
|
||||
interface S<T> {}
|
||||
|
||||
class AnnotatedTypeArguments {
|
||||
|
||||
class A {
|
||||
L<P<L<String>, S<?>>> foo(L<P<L<String>, S<?>>> x) {return null;}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
// some complicated type tree
|
||||
// return type and argument's type differ only by nullability of outermost type
|
||||
@Nullable
|
||||
L<P<@NotNull L<@Nullable String>, @NotNull S<?>>> foo(@NotNull L<P<@NotNull L<@Nullable String>, @NotNull S<?>>> x) {return null;}
|
||||
}
|
||||
|
||||
class C extends B {
|
||||
// signature should be the same as in A
|
||||
L<P<L<String>, S<?>>> foo(L<P<L<String>, S<?>>> x) {return null;}
|
||||
}
|
||||
|
||||
class D1 extends C {
|
||||
// signature should be the same as in A, but annotated String-type should be platform
|
||||
L<P<L<@NotNull String>, S<?>>> foo(L<P<L<@NotNull String>, S<?>>> x) {return null;}
|
||||
}
|
||||
|
||||
class D2 extends C {
|
||||
// return type refined to not-nullable
|
||||
// argument type here same as in A except outermost type (it becomes flexible because of conflict)
|
||||
@NotNull
|
||||
L<P<L<String>, S<?>>> foo(@Nullable L<P<L<String>, S<?>>> x) {return null;}
|
||||
}
|
||||
}
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
package
|
||||
|
||||
public/*package*/ open class AnnotatedTypeArguments {
|
||||
public/*package*/ constructor AnnotatedTypeArguments()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public/*package*/ open inner class A {
|
||||
public/*package*/ constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open fun foo(/*0*/ x: L<P<L<kotlin.String!>!, S<*>!>!>!): L<P<L<kotlin.String!>!, S<*>!>!>!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class B : AnnotatedTypeArguments.A {
|
||||
public/*package*/ constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.Nullable() public/*package*/ open override /*1*/ fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: L<P<L<kotlin.String?>, S<*>>!>): L<P<L<kotlin.String?>, S<*>>!>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class C : AnnotatedTypeArguments.B {
|
||||
public/*package*/ constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open override /*1*/ fun foo(/*0*/ x: L<P<L<kotlin.String?>, S<*>>!>): L<P<L<kotlin.String?>, S<*>>!>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class D1 : AnnotatedTypeArguments.C {
|
||||
public/*package*/ constructor D1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open override /*1*/ fun foo(/*0*/ x: L<P<L<kotlin.String!>, S<*>>!>): L<P<L<kotlin.String!>, S<*>>!>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class D2 : AnnotatedTypeArguments.C {
|
||||
public/*package*/ constructor D2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(/*0*/ org.jetbrains.annotations.Nullable() x: L<P<L<kotlin.String?>, S<*>>!>!): L<P<L<kotlin.String?>, S<*>>!>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
Vendored
+51
@@ -0,0 +1,51 @@
|
||||
// FILE: Outer.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface X<T> {}
|
||||
interface Y<T> {}
|
||||
|
||||
class Outer {
|
||||
class A {
|
||||
<K, V> V foo(K x) { return null; }
|
||||
|
||||
<T> X<T> bar(Y<T> x) { return null; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
// OK, non-platform types
|
||||
@Override
|
||||
<T1, T2> @NotNull T2 foo(@Nullable T1 x) { return null; }
|
||||
|
||||
// Parameter type is fully non-flexible (OK)
|
||||
// Return type is `X<R!>?`.
|
||||
// The reason is that we do not treat it as equal to return type of A.bar because they are base on different type parameters,
|
||||
// so type enhancing happens only for outermost type.
|
||||
// TODO: We should properly compare equality with specific local equality axioms (as when calculating overriden descriptors)
|
||||
@Override
|
||||
<R> @Nullable X<@Nullable R> bar(@NotNull Y<@NotNull R> x) { return null; }
|
||||
}
|
||||
|
||||
class C extends B {
|
||||
// OK, non-platform types
|
||||
@Override
|
||||
<I, J> J foo(I x) { return null; }
|
||||
|
||||
// Parameter type is fully non-flexible (OK)
|
||||
// Return type is `X<R!>?`, same is in B
|
||||
@Override
|
||||
<E> X<E> bar(Y<E> x) { return null; }
|
||||
}
|
||||
|
||||
class D extends C {
|
||||
// Return type is not-nullable, covariantly overridden, OK
|
||||
// Parameter type is flexible, because of conflict with supertype, OK
|
||||
@Override
|
||||
@NotNull
|
||||
<U, W> W foo(@Nullable U x) { return null; }
|
||||
|
||||
|
||||
@Override
|
||||
<F> @NotNull X<@NotNull F> bar(@Nullable Y<@Nullable F> x) { return null; }
|
||||
}
|
||||
}
|
||||
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
package
|
||||
|
||||
public/*package*/ open class Outer {
|
||||
public/*package*/ constructor Outer()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public/*package*/ open inner class A {
|
||||
public/*package*/ constructor A()
|
||||
public/*package*/ open fun </*0*/ T> bar(/*0*/ x: Y<T!>!): X<T!>!
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open fun </*0*/ K, /*1*/ V> foo(/*0*/ x: K!): V!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class B : Outer.A {
|
||||
public/*package*/ constructor B()
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ R> bar(/*0*/ org.jetbrains.annotations.NotNull() x: Y<R>): X<R!>?
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ T1, /*1*/ T2> foo(/*0*/ org.jetbrains.annotations.Nullable() x: T1?): T2
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class C : Outer.B {
|
||||
public/*package*/ constructor C()
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ E> bar(/*0*/ x: Y<E>): X<E!>?
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ I, /*1*/ J> foo(/*0*/ x: I?): J
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class D : Outer.C {
|
||||
public/*package*/ constructor D()
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun </*0*/ F> bar(/*0*/ org.jetbrains.annotations.Nullable() x: Y<F!>!): X<F!>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun </*0*/ U, /*1*/ W> foo(/*0*/ org.jetbrains.annotations.Nullable() x: U?): W
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
// FILE: A.kt
|
||||
open class A {
|
||||
open fun String.foo(y: String?): Int = 1
|
||||
open fun String?.bar(y: String): Int = 1
|
||||
}
|
||||
|
||||
class E : B1() {
|
||||
fun baz() {
|
||||
val x: String? = ""
|
||||
|
||||
x<!UNSAFE_CALL!>.<!>foo(x)
|
||||
x<!UNSAFE_CALL!>.<!>foo("")
|
||||
x.bar(<!TYPE_MISMATCH!>x<!>)
|
||||
x.bar("")
|
||||
}
|
||||
|
||||
override fun String.foo(y: String?): Int = 1
|
||||
override fun String?.bar(y: String): Int = 1
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// Just inherit enhanced types
|
||||
class B extends A {
|
||||
@Override
|
||||
int foo(String x, String y);
|
||||
@Override
|
||||
int bar(String x, String y);
|
||||
}
|
||||
|
||||
// FILE: B1.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// Just inherit enhanced types (annotations without conflicts)
|
||||
class B1 extends A {
|
||||
@Override
|
||||
int foo(@NotNull String x, String y);
|
||||
@Override
|
||||
int bar(@Nullable String x, String y);
|
||||
}
|
||||
|
||||
// FILE: C.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// Conflicting annotations. Everything is flexible
|
||||
class C extends A {
|
||||
@Override
|
||||
int foo(@Nullable String x, @NotNull String y);
|
||||
@Override
|
||||
int bar(@NotNull String x, @Nullable String y);
|
||||
}
|
||||
|
||||
// FILE: D.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// Just inherit enhanced types (annotations without conflicts)
|
||||
class D extends B {
|
||||
@Override
|
||||
int foo(@Nullable String x, @Nullable String y);
|
||||
@Override
|
||||
int bar(@NotNull String x, @NotNull String y);
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package
|
||||
|
||||
internal open class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
internal open fun kotlin.String?.bar(/*0*/ y: kotlin.String): kotlin.Int
|
||||
internal open fun kotlin.String.foo(/*0*/ y: kotlin.String?): kotlin.Int
|
||||
}
|
||||
|
||||
public/*package*/ open class B : A {
|
||||
public/*package*/ constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String?.bar(/*0*/ y: kotlin.String): kotlin.Int
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String.foo(/*0*/ y: kotlin.String?): kotlin.Int
|
||||
}
|
||||
|
||||
public/*package*/ open class B1 : A {
|
||||
public/*package*/ constructor B1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String?.bar(/*0*/ y: kotlin.String): kotlin.Int
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String.foo(/*0*/ y: kotlin.String?): kotlin.Int
|
||||
}
|
||||
|
||||
public/*package*/ open class C : A {
|
||||
public/*package*/ constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String!.bar(/*0*/ org.jetbrains.annotations.Nullable() y: kotlin.String!): kotlin.Int
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String!.foo(/*0*/ org.jetbrains.annotations.NotNull() y: kotlin.String!): kotlin.Int
|
||||
}
|
||||
|
||||
public/*package*/ open class D : B {
|
||||
public/*package*/ constructor D()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String!.bar(/*0*/ org.jetbrains.annotations.NotNull() y: kotlin.String): kotlin.Int
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun kotlin.String!.foo(/*0*/ org.jetbrains.annotations.Nullable() y: kotlin.String?): kotlin.Int
|
||||
}
|
||||
|
||||
internal final class E : B1 {
|
||||
public constructor E()
|
||||
internal final fun baz(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
internal open override /*1*/ fun kotlin.String?.bar(/*0*/ y: kotlin.String): kotlin.Int
|
||||
internal open override /*1*/ fun kotlin.String.foo(/*0*/ y: kotlin.String?): kotlin.Int
|
||||
}
|
||||
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
// FILE: Outer.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface Base<T> {}
|
||||
interface Derived<E> extends Base<E> {}
|
||||
|
||||
class Outer {
|
||||
class A {
|
||||
@Nullable Base<@NotNull String> foo() { return null; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
@Override
|
||||
Base<String> foo() {}
|
||||
}
|
||||
|
||||
class C extends A {
|
||||
@Override
|
||||
@NotNull Base<String> foo() {}
|
||||
}
|
||||
|
||||
class D extends A {
|
||||
@Override
|
||||
Derived<String> foo() {}
|
||||
}
|
||||
|
||||
class E extends A {
|
||||
@Override
|
||||
@NotNull Derived<String> foo() {}
|
||||
}
|
||||
|
||||
class F extends A {
|
||||
@Override
|
||||
@NotNull Derived<@NotNull String> foo() {}
|
||||
}
|
||||
}
|
||||
compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/returnTypeDifferentConstructor.txt
Vendored
+56
@@ -0,0 +1,56 @@
|
||||
package
|
||||
|
||||
public/*package*/ open class Outer {
|
||||
public/*package*/ constructor Outer()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public/*package*/ open inner class A {
|
||||
public/*package*/ constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.Nullable() public/*package*/ open fun foo(): Base<kotlin.String>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class B : Outer.A {
|
||||
public/*package*/ constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun foo(): Base<kotlin.String>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class C : Outer.A {
|
||||
public/*package*/ constructor C()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Base<kotlin.String>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class D : Outer.A {
|
||||
public/*package*/ constructor D()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class E : Outer.A {
|
||||
public/*package*/ constructor E()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open inner class F : Outer.A {
|
||||
public/*package*/ constructor F()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
java.lang.Override() org.jetbrains.annotations.NotNull() public/*package*/ open override /*1*/ fun foo(): Derived<kotlin.String!>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
// FILE: A.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public class A {
|
||||
@Nullable Base<@NotNull String> foo() { return null; }
|
||||
}
|
||||
|
||||
// FILE: a.kt
|
||||
|
||||
interface Base<T> {}
|
||||
interface Derived<E> : Base<E> {}
|
||||
|
||||
fun bar1(): Derived<String> = null!!
|
||||
fun bar2(): Derived<String?> = null!!
|
||||
|
||||
class B : A() {
|
||||
override fun foo(): Base<String> { return bar1(); }
|
||||
}
|
||||
|
||||
class C1 : A() {
|
||||
override fun foo(): Derived<String> { return bar1(); }
|
||||
}
|
||||
|
||||
class C2 : A() {
|
||||
override fun foo(): Derived<String>? { return bar1(); }
|
||||
}
|
||||
|
||||
class C3 : A() {
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Derived<String?><!> { return bar2(); }
|
||||
}
|
||||
Vendored
+56
@@ -0,0 +1,56 @@
|
||||
package
|
||||
|
||||
internal fun bar1(): Derived<kotlin.String>
|
||||
internal fun bar2(): Derived<kotlin.String?>
|
||||
|
||||
public open class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.Nullable() public/*package*/ open fun foo(): Base<kotlin.String>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class B : A {
|
||||
public constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal open override /*1*/ fun foo(): Base<kotlin.String>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal interface Base</*0*/ T> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C1 : A {
|
||||
public constructor C1()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal open override /*1*/ fun foo(): Derived<kotlin.String>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C2 : A {
|
||||
public constructor C2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal open override /*1*/ fun foo(): Derived<kotlin.String>?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C3 : A {
|
||||
public constructor C3()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
internal open override /*1*/ fun foo(): Derived<kotlin.String?>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal interface Derived</*0*/ E> : Base<E> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface A {
|
||||
void foo(@Nullable String x);
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B {
|
||||
void foo(@NotNull String x);
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C1<!> : A, B {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String)<!> {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C2<!> : A, B {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String?)<!> {}
|
||||
}
|
||||
|
||||
interface <!ACCIDENTAL_OVERRIDE!>I<!> : A, B
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C3<!> : I {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String)<!> {}
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class C4<!> : I {
|
||||
<!ACCIDENTAL_OVERRIDE!>override fun foo(x: String?)<!> {}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package
|
||||
|
||||
public/*package*/ /*synthesized*/ fun A(/*0*/ function: (kotlin.String!) -> kotlin.Unit): A
|
||||
public/*package*/ /*synthesized*/ fun B(/*0*/ function: (kotlin.String!) -> kotlin.Unit): B
|
||||
|
||||
public/*package*/ interface A {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ org.jetbrains.annotations.Nullable() x: kotlin.String?): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ interface B {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C1 : A, B {
|
||||
public constructor C1()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(/*0*/ x: kotlin.String): kotlin.Unit
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.Nullable() x: kotlin.String?): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C2 : A, B {
|
||||
public constructor C2()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String): kotlin.Unit
|
||||
public open override /*1*/ fun foo(/*0*/ x: kotlin.String?): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C3 : I {
|
||||
public constructor C3()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(/*0*/ x: kotlin.String): kotlin.Unit
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.Nullable() x: kotlin.String?): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C4 : I {
|
||||
public constructor C4()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String): kotlin.Unit
|
||||
public open override /*1*/ fun foo(/*0*/ x: kotlin.String?): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal interface I : A, B {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String): kotlin.Unit
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ org.jetbrains.annotations.Nullable() x: kotlin.String?): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface A {
|
||||
@Nullable
|
||||
String foo();
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B {
|
||||
@NotNull
|
||||
String foo();
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
class C1 : A, B {
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = ""
|
||||
}
|
||||
|
||||
class C2 : A, B {
|
||||
override fun foo(): String = ""
|
||||
}
|
||||
|
||||
interface I : A, B
|
||||
|
||||
class C3 : I {
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = ""
|
||||
}
|
||||
|
||||
class C4 : I {
|
||||
override fun foo(): String = ""
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package
|
||||
|
||||
public/*package*/ /*synthesized*/ fun A(/*0*/ function: () -> kotlin.String!): A
|
||||
public/*package*/ /*synthesized*/ fun B(/*0*/ function: () -> kotlin.String!): B
|
||||
|
||||
public/*package*/ interface A {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.Nullable() public abstract fun foo(): kotlin.String?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ interface B {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.NotNull() public abstract fun foo(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C1 : A, B {
|
||||
public constructor C1()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ fun foo(): kotlin.String?
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C2 : A, B {
|
||||
public constructor C2()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ fun foo(): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C3 : I {
|
||||
public constructor C3()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(): kotlin.String?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final class C4 : I {
|
||||
public constructor C4()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal interface I : A, B {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
org.jetbrains.annotations.NotNull() public abstract override /*2*/ /*fake_override*/ fun foo(): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -10115,6 +10115,57 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class TypeEnhancement extends AbstractJetDiagnosticsTest {
|
||||
public void testAllFilesPresentInTypeEnhancement() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("annotatedTypeArguments.kt")
|
||||
public void testAnnotatedTypeArguments() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/annotatedTypeArguments.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("methodWithTypeParameter.kt")
|
||||
public void testMethodWithTypeParameter() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/methodWithTypeParameter.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("overriddenExtensions.kt")
|
||||
public void testOverriddenExtensions() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/overriddenExtensions.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("returnTypeDifferentConstructor.kt")
|
||||
public void testReturnTypeDifferentConstructor() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/returnTypeDifferentConstructor.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("returnTypeOverrideInKotlin.kt")
|
||||
public void testReturnTypeOverrideInKotlin() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/returnTypeOverrideInKotlin.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("supertypeDifferentParameterNullability.kt")
|
||||
public void testSupertypeDifferentParameterNullability() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/supertypeDifferentParameterNullability.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("supertypeDifferentReturnNullability.kt")
|
||||
public void testSupertypeDifferentReturnNullability() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/supertypeDifferentReturnNullability.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/diagnostics/tests/recovery")
|
||||
|
||||
Reference in New Issue
Block a user