Exposed visibility checking, a set of exposed visibility tests, some test fixes
Effective visibility mechanism introduced. Local is considered as public, java protected as Kotlin protected, java package private as Kotlin private.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
fa32aa2950
commit
0cc861f00b
+1
-1
@@ -10,6 +10,6 @@ class A {
|
||||
}
|
||||
}
|
||||
|
||||
fun f1() = A.Companion.B.<!INVISIBLE_MEMBER!>C<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>f1<!>() = A.Companion.B.<!INVISIBLE_MEMBER!>C<!>
|
||||
|
||||
fun f2() = A.Companion.B.C.<!INVISIBLE_MEMBER!>foo<!>()
|
||||
@@ -7,4 +7,4 @@ enum class E {
|
||||
fun foo() = E.values()
|
||||
fun bar() = E.valueOf("ENTRY")
|
||||
fun baz() = E.ENTRY
|
||||
fun quux() = <!INVISIBLE_MEMBER!>E<!>
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>quux<!>() = <!INVISIBLE_MEMBER!>E<!>
|
||||
+1
-1
@@ -3,4 +3,4 @@ private enum class MethodKind {
|
||||
STATIC
|
||||
}
|
||||
|
||||
fun MethodKind.hasThis() = this == MethodKind.INSTANCE
|
||||
private fun MethodKind.hasThis() = this == MethodKind.INSTANCE
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package
|
||||
|
||||
public fun MethodKind.hasThis(): kotlin.Boolean
|
||||
private fun MethodKind.hasThis(): kotlin.Boolean
|
||||
|
||||
private final enum class MethodKind : kotlin.Enum<MethodKind> {
|
||||
enum entry INSTANCE
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
interface My
|
||||
|
||||
internal class Your: My
|
||||
|
||||
// Code is valid, despite of delegate is internal
|
||||
class His: My by Your()
|
||||
@@ -0,0 +1,21 @@
|
||||
package
|
||||
|
||||
public final class His : My {
|
||||
public constructor His()
|
||||
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 interface My {
|
||||
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 Your : My {
|
||||
public constructor Your()
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
internal class My
|
||||
|
||||
class Your
|
||||
|
||||
// Both arguments should be exposed
|
||||
fun foo(<!EXPOSED_PARAMETER_TYPE!>my: My<!>, <!EXPOSED_PARAMETER_TYPE!>f: (My) -> Unit<!>) = f(my)
|
||||
|
||||
// Ok
|
||||
fun bar(your: Your, f: (Your) -> Unit) = f(your)
|
||||
|
||||
// Exposed, returns My
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>gav<!>(<!EXPOSED_PARAMETER_TYPE!>f: () -> My<!>) = f()
|
||||
@@ -0,0 +1,19 @@
|
||||
package
|
||||
|
||||
public fun bar(/*0*/ your: Your, /*1*/ f: (Your) -> kotlin.Unit): kotlin.Unit
|
||||
public fun foo(/*0*/ my: My, /*1*/ f: (My) -> kotlin.Unit): kotlin.Unit
|
||||
public fun gav(/*0*/ f: () -> My): My
|
||||
|
||||
internal final class My {
|
||||
public constructor My()
|
||||
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 final class Your {
|
||||
public constructor Your()
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
private interface My
|
||||
|
||||
// valid, it's allowed to implement worse-visible interface
|
||||
class Your: My
|
||||
@@ -0,0 +1,14 @@
|
||||
package
|
||||
|
||||
private interface My {
|
||||
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 final class Your : My {
|
||||
public constructor Your()
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
internal open class My
|
||||
|
||||
// valid, internal from internal
|
||||
internal open class Your: My() {
|
||||
// valid, effectively internal
|
||||
fun foo() = My()
|
||||
}
|
||||
|
||||
// error, public from internal
|
||||
open class His: <!EXPOSED_SUPER_CLASS!>Your()<!> {
|
||||
protected open class Nested
|
||||
// error, public from internal
|
||||
<!EXPOSED_PROPERTY_TYPE!>val x = My()<!>
|
||||
// valid, private from internal
|
||||
private fun bar() = My()
|
||||
// valid, internal from internal
|
||||
internal var y: My? = null
|
||||
// error, protected from internal
|
||||
protected fun <!EXPOSED_FUNCTION_RETURN_TYPE!>baz<!>() = Your()
|
||||
}
|
||||
|
||||
internal class Their: His() {
|
||||
// error, effectively internal from protected
|
||||
class InnerDerived: <!EXPOSED_SUPER_CLASS!>His.Nested()<!>
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package
|
||||
|
||||
public open class His : Your {
|
||||
public constructor His()
|
||||
public final val x: My
|
||||
internal final var y: My?
|
||||
private final fun bar(): My
|
||||
protected final fun baz(): Your
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): My
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
protected open class Nested {
|
||||
public constructor Nested()
|
||||
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 class My {
|
||||
public constructor My()
|
||||
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 Their : His {
|
||||
public constructor Their()
|
||||
public final override /*1*/ /*fake_override*/ val x: My
|
||||
internal final override /*1*/ /*fake_override*/ var y: My?
|
||||
invisible_fake final override /*1*/ /*fake_override*/ fun bar(): My
|
||||
protected final override /*1*/ /*fake_override*/ fun baz(): Your
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): My
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
public final class InnerDerived : His.Nested {
|
||||
public constructor InnerDerived()
|
||||
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 class Your : My {
|
||||
public constructor Your()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): My
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
fun <T> run(f: () -> T): T {
|
||||
return f()
|
||||
}
|
||||
|
||||
// valid, A here is effectively Any
|
||||
fun foo() = run {
|
||||
class A
|
||||
A()
|
||||
}
|
||||
|
||||
// valid, B here is also effectively Any
|
||||
fun gav() = {
|
||||
class B
|
||||
B()
|
||||
}
|
||||
|
||||
abstract class My
|
||||
|
||||
// valid, object literal here is also effectively Any
|
||||
fun bar() = run {
|
||||
object: My() {}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package
|
||||
|
||||
public fun bar(): My
|
||||
public fun foo(): foo.<anonymous>.A
|
||||
public fun gav(): () -> gav.<anonymous>.B
|
||||
public fun </*0*/ T> run(/*0*/ f: () -> T): T
|
||||
|
||||
public abstract class My {
|
||||
public constructor My()
|
||||
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
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
internal open class My
|
||||
|
||||
internal class Outer {
|
||||
// Ok, effectively internal from internal
|
||||
class Your: My()
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package
|
||||
|
||||
internal open class My {
|
||||
public constructor My()
|
||||
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 Outer {
|
||||
public 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 final class Your : My {
|
||||
public constructor Your()
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
open class A {
|
||||
// protected relative to A
|
||||
protected open class B {
|
||||
fun foo() {}
|
||||
}
|
||||
public open class C {
|
||||
// protected relative to C, must be an error
|
||||
protected open class D : <!EXPOSED_SUPER_CLASS!>B()<!>
|
||||
}
|
||||
}
|
||||
|
||||
class E : A.C() {
|
||||
// F has invisible grandparent class B (E does not inherit from A)
|
||||
class F : <!EXPOSED_SUPER_CLASS!>A.C.D()<!> {
|
||||
init {
|
||||
// Invoke function from invisible grandparent
|
||||
foo()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package
|
||||
|
||||
public 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
|
||||
|
||||
protected open class B {
|
||||
public constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class C {
|
||||
public 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
|
||||
|
||||
protected open class D : A.B {
|
||||
public constructor D()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final class E : A.C {
|
||||
public constructor 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
|
||||
|
||||
public final class F : A.C.D {
|
||||
public constructor F()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
// FILE: Outer.java
|
||||
|
||||
public abstract class Outer {
|
||||
protected static class My {}
|
||||
protected static class Your extends My {}
|
||||
abstract protected Your foo(My my);
|
||||
}
|
||||
|
||||
// FILE: OuterDerived.kt
|
||||
|
||||
class OuterDerived: Outer() {
|
||||
// valid, My has better visibility
|
||||
protected class His: Outer.My()
|
||||
// valid, My and Your have better visibility
|
||||
override fun foo(my: Outer.My) = Outer.Your()
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package
|
||||
|
||||
public abstract class Outer {
|
||||
public constructor Outer()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected/*protected and package*/ abstract fun foo(/*0*/ my: Outer.My!): Outer.Your!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
protected/*protected static*/ open class My {
|
||||
protected/*protected and package*/ constructor My()
|
||||
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
|
||||
}
|
||||
|
||||
protected/*protected static*/ open class Your : Outer.My {
|
||||
protected/*protected and package*/ constructor Your()
|
||||
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 final class OuterDerived : Outer {
|
||||
public constructor OuterDerived()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected open override /*1*/ fun foo(/*0*/ my: Outer.My): Outer.Your
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
protected final class His : Outer.My {
|
||||
public constructor His()
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
abstract class Outer {
|
||||
protected open class My
|
||||
// Both valid: same way protected
|
||||
protected class Your: My()
|
||||
abstract protected fun foo(my: My): Your
|
||||
}
|
||||
|
||||
class OuterDerived: Outer() {
|
||||
// valid, My has better visibility
|
||||
protected class His: Outer.My()
|
||||
// valid, My and Your have better visibility
|
||||
override fun foo(my: Outer.My) = Outer.Your()
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package
|
||||
|
||||
public abstract class Outer {
|
||||
public constructor Outer()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected abstract fun foo(/*0*/ my: Outer.My): Outer.Your
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
protected open class My {
|
||||
public constructor My()
|
||||
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
|
||||
}
|
||||
|
||||
protected final class Your : Outer.My {
|
||||
public constructor Your()
|
||||
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 final class OuterDerived : Outer {
|
||||
public constructor OuterDerived()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
protected open override /*1*/ fun foo(/*0*/ my: Outer.My): Outer.Your
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
protected final class His : Outer.My {
|
||||
public constructor His()
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
private interface My
|
||||
|
||||
private open class Base
|
||||
|
||||
public interface Your: <!EXPOSED_SUPER_INTERFACE!>My<!> {
|
||||
fun <T: Base> foo(): T
|
||||
}
|
||||
|
||||
public class Derived<<!EXPOSED_TYPE_PARAMETER_BOUND!>T: My<!>>(<!EXPOSED_PARAMETER_TYPE!>val x: My<!>): <!EXPOSED_SUPER_CLASS!>Base()<!> {
|
||||
|
||||
constructor(<!EXPOSED_PARAMETER_TYPE!>xx: My?<!>, <!EXPOSED_PARAMETER_TYPE!>x: My<!>): this(xx ?: x)
|
||||
|
||||
<!EXPOSED_PROPERTY_TYPE!>val y: Base? = null<!>
|
||||
|
||||
val <!EXPOSED_RECEIVER_TYPE!>My<!>.z: Int
|
||||
get() = 42
|
||||
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(<!EXPOSED_PARAMETER_TYPE!>m: My<!>): My = m
|
||||
|
||||
fun <!EXPOSED_RECEIVER_TYPE!>My<!>.<!EXPOSED_FUNCTION_RETURN_TYPE!>bar<!>(): My = this
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package
|
||||
|
||||
private open class Base {
|
||||
public constructor Base()
|
||||
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 final class Derived</*0*/ T : My> : Base {
|
||||
public constructor Derived</*0*/ T : My>(/*0*/ x: My)
|
||||
public constructor Derived</*0*/ T : My>(/*0*/ xx: My?, /*1*/ x: My)
|
||||
public final val x: My
|
||||
public final val y: Base? = null
|
||||
public final val My.z: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(/*0*/ m: My): My
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public final fun My.bar(): My
|
||||
}
|
||||
|
||||
private interface My {
|
||||
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 interface Your : My {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun </*0*/ T : Base> foo(): T
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
internal open class My
|
||||
|
||||
abstract class Your {
|
||||
// invalid, List<My> is effectively internal
|
||||
abstract fun <!EXPOSED_FUNCTION_RETURN_TYPE!>give<!>(): List<My>
|
||||
}
|
||||
|
||||
// invalid, List<My> is effectively internal
|
||||
interface His: <!EXPOSED_SUPER_INTERFACE!>List<My><!>
|
||||
|
||||
// invalid, My is internal
|
||||
interface Generic<<!EXPOSED_TYPE_PARAMETER_BOUND!>E: My<!>>
|
||||
|
||||
interface Our {
|
||||
// invalid, Generic<My> is effectively internal
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>foo<!>(): Generic<*>
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package
|
||||
|
||||
public interface Generic</*0*/ E : My> {
|
||||
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 interface His : kotlin.List<My> {
|
||||
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ o: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ c: kotlin.Collection<kotlin.Any?>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): My
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun indexOf(/*0*/ o: kotlin.Any?): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.Iterator<My>
|
||||
public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ o: kotlin.Any?): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun listIterator(): kotlin.ListIterator<My>
|
||||
public abstract override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.ListIterator<My>
|
||||
public abstract override /*1*/ /*fake_override*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.List<My>
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal open class My {
|
||||
public constructor My()
|
||||
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 interface Our {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(): Generic<*>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public abstract class Your {
|
||||
public constructor Your()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun give(): kotlin.List<My>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
@@ -7,8 +7,8 @@ open class Foo {
|
||||
}
|
||||
|
||||
class Bar: Foo() {
|
||||
fun foo(): Nested? = null
|
||||
protected fun foo(): Nested? = null
|
||||
}
|
||||
|
||||
fun foo(): <!INVISIBLE_REFERENCE!>Nested<!>? = null
|
||||
fun bar(): p.Foo.<!INVISIBLE_REFERENCE!>Nested<!>? = null
|
||||
private fun foo(): <!INVISIBLE_REFERENCE!>Nested<!>? = null
|
||||
private fun bar(): p.Foo.<!INVISIBLE_REFERENCE!>Nested<!>? = null
|
||||
@@ -1,13 +1,13 @@
|
||||
package
|
||||
|
||||
package p {
|
||||
public fun bar(): p.Foo.Nested?
|
||||
public fun foo(): p.Foo.Nested?
|
||||
private fun bar(): p.Foo.Nested?
|
||||
private fun foo(): p.Foo.Nested?
|
||||
|
||||
public final class Bar : p.Foo {
|
||||
public constructor Bar()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): p.Foo.Nested?
|
||||
protected final fun foo(): p.Foo.Nested?
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,4 +8,4 @@ package a
|
||||
|
||||
import pack1.*
|
||||
|
||||
class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER!>SomeClass<!>()
|
||||
private class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER!>SomeClass<!>()
|
||||
+1
-1
@@ -2,7 +2,7 @@ package
|
||||
|
||||
package a {
|
||||
|
||||
public final class X : pack1.SomeClass {
|
||||
private final class X : pack1.SomeClass {
|
||||
public constructor X()
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -11,4 +11,4 @@ package a
|
||||
|
||||
import pack1.SomeClass.*
|
||||
|
||||
class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER, FINAL_SUPERTYPE!>N<!>()
|
||||
private class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER, FINAL_SUPERTYPE!>N<!>()
|
||||
+1
-1
@@ -2,7 +2,7 @@ package
|
||||
|
||||
package a {
|
||||
|
||||
public final class X : pack1.SomeClass.N {
|
||||
private final class X : pack1.SomeClass.N {
|
||||
public constructor X()
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// FILE: Super.java
|
||||
class Super {
|
||||
public class Super {
|
||||
void foo(Runnable r) {
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -9,8 +9,8 @@ public final class Sub : Super {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ open class Super {
|
||||
public/*package*/ constructor Super()
|
||||
public open class Super {
|
||||
public constructor Super()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open fun foo(/*0*/ r: java.lang.Runnable!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// FILE: B.java
|
||||
|
||||
abstract class B implements A {
|
||||
public abstract class B implements A {
|
||||
public int size = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ public interface A {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ abstract class B : A {
|
||||
public/*package*/ constructor B()
|
||||
public abstract class B : A {
|
||||
public constructor B()
|
||||
public final var size: kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
|
||||
@@ -16,29 +16,29 @@ class MyJavaClass {
|
||||
//FILE:a.kt
|
||||
package a
|
||||
|
||||
val mc = MyJavaClass()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val mc = MyJavaClass()<!>
|
||||
val x = MyJavaClass.staticMethod()
|
||||
val y = MyJavaClass.NestedClass.staticMethodOfNested()
|
||||
val z = MyJavaClass.NestedClass()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val z = MyJavaClass.NestedClass()<!>
|
||||
|
||||
//FILE: b.kt
|
||||
package b
|
||||
|
||||
import a.<!INVISIBLE_REFERENCE!>MyJavaClass<!>
|
||||
|
||||
val mc1 = <!INVISIBLE_MEMBER!>MyJavaClass<!>()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val mc1 = <!INVISIBLE_MEMBER!>MyJavaClass<!>()<!>
|
||||
|
||||
val x = MyJavaClass.<!INVISIBLE_MEMBER!>staticMethod<!>()
|
||||
val y = MyJavaClass.NestedClass.<!INVISIBLE_MEMBER!>staticMethodOfNested<!>()
|
||||
val z = MyJavaClass.<!INVISIBLE_MEMBER!>NestedClass<!>()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val z = MyJavaClass.<!INVISIBLE_MEMBER!>NestedClass<!>()<!>
|
||||
|
||||
//FILE: c.kt
|
||||
package a.c
|
||||
|
||||
import a.<!INVISIBLE_REFERENCE!>MyJavaClass<!>
|
||||
|
||||
val mc1 = <!INVISIBLE_MEMBER!>MyJavaClass<!>()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val mc1 = <!INVISIBLE_MEMBER!>MyJavaClass<!>()<!>
|
||||
|
||||
val x = MyJavaClass.<!INVISIBLE_MEMBER!>staticMethod<!>()
|
||||
val y = MyJavaClass.NestedClass.<!INVISIBLE_MEMBER!>staticMethodOfNested<!>()
|
||||
val z = MyJavaClass.<!INVISIBLE_MEMBER!>NestedClass<!>()
|
||||
<!EXPOSED_PROPERTY_TYPE!>val z = MyJavaClass.<!INVISIBLE_MEMBER!>NestedClass<!>()<!>
|
||||
@@ -1,6 +1,6 @@
|
||||
// FILE: B.java
|
||||
|
||||
abstract class B implements A {
|
||||
public abstract class B implements A {
|
||||
private int size = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ public interface A {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ abstract class B : A {
|
||||
public/*package*/ constructor B()
|
||||
public abstract class B : A {
|
||||
public constructor B()
|
||||
private final var size: kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// FILE: Bad.java
|
||||
|
||||
class Bad<T extends Bad> {}
|
||||
public class Bad<T extends Bad> {}
|
||||
|
||||
// FILE: X.java
|
||||
|
||||
class X {
|
||||
public class X {
|
||||
Bad foo() {return null;}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,15 +2,15 @@ package
|
||||
|
||||
public fun foo(/*0*/ p: X): Bad<(raw) Bad<*>!>!
|
||||
|
||||
public/*package*/ open class Bad</*0*/ T : Bad<(raw) Bad<*>>!> {
|
||||
public/*package*/ constructor Bad</*0*/ T : Bad<(raw) Bad<*>>!>()
|
||||
public open class Bad</*0*/ T : Bad<(raw) Bad<*>>!> {
|
||||
public constructor Bad</*0*/ T : Bad<(raw) Bad<*>>!>()
|
||||
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 class X {
|
||||
public/*package*/ constructor X()
|
||||
public open class X {
|
||||
public constructor X()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open fun foo(): Bad<(raw) Bad<*>!>!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -10,6 +10,6 @@ class K : J<String>(), ML<String>
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class J<T> extends ML<T> {
|
||||
public class J<T> extends ML<T> {
|
||||
public List<T> foo() { return null; }
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package
|
||||
|
||||
public/*package*/ open class J</*0*/ T : kotlin.Any!> : ML<T!> {
|
||||
public/*package*/ constructor J</*0*/ T : kotlin.Any!>()
|
||||
public open class J</*0*/ T : kotlin.Any!> : ML<T!> {
|
||||
public constructor J</*0*/ T : kotlin.Any!>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun foo(): kotlin.MutableList<T!>
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// FILE: JavaSuperClass.java
|
||||
|
||||
class JavaSuperClass {
|
||||
public class JavaSuperClass {
|
||||
public void foo(int javaName) {}
|
||||
|
||||
public void multipleParameters(int first, long second, String third) {}
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ public fun unresolvedParameter(): kotlin.Unit
|
||||
public fun viaFakeOverride(): kotlin.Unit
|
||||
public fun viaRealOverride(): kotlin.Unit
|
||||
|
||||
public/*package*/ open class JavaSuperClass {
|
||||
public/*package*/ constructor JavaSuperClass()
|
||||
public open class JavaSuperClass {
|
||||
public constructor JavaSuperClass()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun foo(/*0*/ javaName: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// FILE: JavaInterface.java
|
||||
|
||||
interface JavaInterface {
|
||||
public interface JavaInterface {
|
||||
void foo(int javaName);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
package
|
||||
|
||||
public/*package*/ /*synthesized*/ fun JavaInterface(/*0*/ function: (kotlin.Int) -> kotlin.Unit): JavaInterface
|
||||
public /*synthesized*/ fun JavaInterface(/*0*/ function: (kotlin.Int) -> kotlin.Unit): JavaInterface
|
||||
|
||||
public/*package*/ interface JavaInterface {
|
||||
public interface JavaInterface {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ javaName: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class A<T extends CharSequence> {
|
||||
public class A<T extends CharSequence> {
|
||||
A<List<T>> foo(T x, Map<String, List<T>> y, HashMap<T, T> z) {}
|
||||
|
||||
void bar(List<Double[]>[][] d) {}
|
||||
@@ -11,7 +11,7 @@ class A<T extends CharSequence> {
|
||||
|
||||
// FILE: RawADerived.java
|
||||
|
||||
class RawADerived extends A {
|
||||
public class RawADerived extends A {
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
package
|
||||
|
||||
public/*package*/ open class A</*0*/ T : kotlin.CharSequence!> {
|
||||
public/*package*/ constructor A</*0*/ T : kotlin.CharSequence!>()
|
||||
public open class A</*0*/ T : kotlin.CharSequence!> {
|
||||
public constructor A</*0*/ T : kotlin.CharSequence!>()
|
||||
public/*package*/ open fun bar(/*0*/ d: kotlin.Array<(out) kotlin.Array<(out) kotlin.(Mutable)List<kotlin.Array<(out) kotlin.Double!>!>!>!>!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public/*package*/ open fun foo(/*0*/ x: T!, /*1*/ y: kotlin.(Mutable)Map<kotlin.String!, kotlin.(Mutable)List<T!>!>!, /*2*/ z: java.util.HashMap<T!, T!>!): A<kotlin.(Mutable)List<T!>!>!
|
||||
@@ -47,8 +47,8 @@ public final class B4 : RawADerived {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String(raw)
|
||||
}
|
||||
|
||||
public/*package*/ open class RawADerived : A<kotlin.CharSequence!> {
|
||||
public/*package*/ constructor RawADerived()
|
||||
public open class RawADerived : A<kotlin.CharSequence!> {
|
||||
public constructor RawADerived()
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun bar(/*0*/ d: kotlin.Array<(out) kotlin.Array<(out) kotlin.(Mutable)List<(raw) kotlin.Any?>!>!>!): kotlin.Unit(raw)
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any(raw)?): kotlin.Boolean(raw)
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun foo(/*0*/ x: kotlin.CharSequence(raw)!, /*1*/ y: kotlin.(Mutable)Map<(raw) kotlin.Any?, (raw) kotlin.Any?>!, /*2*/ z: java.util.HashMap<(raw) kotlin.Any!, (raw) kotlin.Any!>!): A<(raw) kotlin.CharSequence!>!
|
||||
|
||||
+2
-2
@@ -3,13 +3,13 @@
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class A<T extends CharSequence> {}
|
||||
public class A<T extends CharSequence> {}
|
||||
|
||||
// FILE: B.java
|
||||
|
||||
import java.util.*;
|
||||
|
||||
class B<E extends A> {}
|
||||
public class B<E extends A> {}
|
||||
|
||||
// FILE: Test.java
|
||||
|
||||
|
||||
+4
-4
@@ -2,15 +2,15 @@ package
|
||||
|
||||
public fun main(/*0*/ x: B<*>): kotlin.Unit
|
||||
|
||||
public/*package*/ open class A</*0*/ T : kotlin.CharSequence!> {
|
||||
public/*package*/ constructor A</*0*/ T : kotlin.CharSequence!>()
|
||||
public open class A</*0*/ T : kotlin.CharSequence!> {
|
||||
public constructor A</*0*/ T : kotlin.CharSequence!>()
|
||||
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 class B</*0*/ E : A<(raw) kotlin.CharSequence!>!> {
|
||||
public/*package*/ constructor B</*0*/ E : A<(raw) kotlin.CharSequence!>!>()
|
||||
public open class B</*0*/ E : A<(raw) kotlin.CharSequence!>!> {
|
||||
public constructor B</*0*/ E : A<(raw) kotlin.CharSequence!>!>()
|
||||
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
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ class B extends A {
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
// Just inherit enhanced types (annotations without conflicts)
|
||||
class B1 extends A {
|
||||
public class B1 extends A {
|
||||
@Override
|
||||
public int foo(@NotNull String x, String y);
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -18,8 +18,8 @@ public/*package*/ open class B : A {
|
||||
@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 class B1 : A {
|
||||
public 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
|
||||
|
||||
compiler/testData/diagnostics/tests/platformTypes/typeEnhancement/saveAnnotationAfterSubstitution.kt
Vendored
+4
-4
@@ -2,19 +2,19 @@
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface A<T> {
|
||||
public interface A<T> {
|
||||
void foo(@NotNull T x, @Nullable T y);
|
||||
}
|
||||
|
||||
// FILE: B1.java
|
||||
|
||||
// contains fake_override fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String, /*1*/ org.jetbrains.annotations.Nullable() y: kotlin.String?)
|
||||
interface B1 extends A<String> {}
|
||||
public interface B1 extends A<String> {}
|
||||
|
||||
// FILE: B2.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B2 extends A<String> {
|
||||
public interface B2 extends A<String> {
|
||||
// Ok, consistent override
|
||||
// override fun foo(/*0*/ org.jetbrains.annotations.NotNull() x: kotlin.String, /*1*/ org.jetbrains.annotations.Nullable() y: kotlin.String?)
|
||||
void foo(@NotNull String x, @Nullable String y);
|
||||
@@ -23,7 +23,7 @@ interface B2 extends A<String> {
|
||||
// FILE: B3.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B3 extends A<String> {
|
||||
public interface B3 extends A<String> {
|
||||
// inconsistent override, second parameter type is platform
|
||||
// TODO: first one should be platform too, but it's not because when substituting T -> String!,
|
||||
// value parameter type becomes platform and it can be overridden with @NotNull String.
|
||||
|
||||
+8
-8
@@ -1,32 +1,32 @@
|
||||
package
|
||||
|
||||
public/*package*/ /*synthesized*/ fun </*0*/ T : kotlin.Any!> A(/*0*/ function: (T!, T!) -> kotlin.Unit): A<T>
|
||||
public/*package*/ /*synthesized*/ fun B1(/*0*/ function: (kotlin.String!, kotlin.String?) -> kotlin.Unit): B1
|
||||
public/*package*/ /*synthesized*/ fun B2(/*0*/ function: (kotlin.String!, kotlin.String!) -> kotlin.Unit): B2
|
||||
public/*package*/ /*synthesized*/ fun B3(/*0*/ function: (kotlin.String!, kotlin.String!) -> kotlin.Unit): B3
|
||||
public /*synthesized*/ fun </*0*/ T : kotlin.Any!> A(/*0*/ function: (T!, T!) -> kotlin.Unit): A<T>
|
||||
public /*synthesized*/ fun B1(/*0*/ function: (kotlin.String!, kotlin.String?) -> kotlin.Unit): B1
|
||||
public /*synthesized*/ fun B2(/*0*/ function: (kotlin.String!, kotlin.String!) -> kotlin.Unit): B2
|
||||
public /*synthesized*/ fun B3(/*0*/ function: (kotlin.String!, kotlin.String!) -> kotlin.Unit): B3
|
||||
|
||||
public/*package*/ interface A</*0*/ T : kotlin.Any!> {
|
||||
public interface A</*0*/ T : kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(/*0*/ @org.jetbrains.annotations.NotNull() x: T, /*1*/ @org.jetbrains.annotations.Nullable() y: T?): 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 B1 : A<kotlin.String!> {
|
||||
public interface B1 : A<kotlin.String!> {
|
||||
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, /*1*/ @org.jetbrains.annotations.Nullable() y: 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 B2 : A<kotlin.String!> {
|
||||
public interface B2 : A<kotlin.String!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ fun foo(/*0*/ @org.jetbrains.annotations.NotNull() x: kotlin.String, /*1*/ @org.jetbrains.annotations.Nullable() y: 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 B3 : A<kotlin.String!> {
|
||||
public interface B3 : A<kotlin.String!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ fun foo(/*0*/ @org.jetbrains.annotations.Nullable() x: kotlin.String?, /*1*/ @org.jetbrains.annotations.NotNull() y: kotlin.String!): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface A {
|
||||
public interface A {
|
||||
void foo(@Nullable String x);
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B {
|
||||
public interface B {
|
||||
void foo(@NotNull String x);
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -1,16 +1,16 @@
|
||||
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 /*synthesized*/ fun A(/*0*/ function: (kotlin.String!) -> kotlin.Unit): A
|
||||
public /*synthesized*/ fun B(/*0*/ function: (kotlin.String!) -> kotlin.Unit): B
|
||||
|
||||
public/*package*/ interface A {
|
||||
public 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 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
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface A {
|
||||
public interface A {
|
||||
@Nullable
|
||||
String foo();
|
||||
}
|
||||
@@ -9,7 +9,7 @@ interface A {
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
interface B {
|
||||
public interface B {
|
||||
@NotNull
|
||||
String foo();
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,16 +1,16 @@
|
||||
package
|
||||
|
||||
public/*package*/ /*synthesized*/ fun A(/*0*/ function: () -> kotlin.String!): A
|
||||
public/*package*/ /*synthesized*/ fun B(/*0*/ function: () -> kotlin.String!): B
|
||||
public /*synthesized*/ fun A(/*0*/ function: () -> kotlin.String!): A
|
||||
public /*synthesized*/ fun B(/*0*/ function: () -> kotlin.String!): B
|
||||
|
||||
public/*package*/ interface A {
|
||||
public 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 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
|
||||
|
||||
@@ -20,7 +20,7 @@ private fun bar() {
|
||||
xx = 30
|
||||
}
|
||||
|
||||
fun makeA() = A()
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>makeA<!>() = A()
|
||||
|
||||
private object PO {}
|
||||
|
||||
@@ -43,7 +43,7 @@ fun test() {
|
||||
<!INVISIBLE_SETTER(xx; private; file)!>xx<!> = 40
|
||||
}
|
||||
|
||||
class B : <!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>() {}
|
||||
class B : <!EXPOSED_SUPER_CLASS!><!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>()<!> {}
|
||||
|
||||
class Q {
|
||||
class W {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// FILE: A.java
|
||||
|
||||
class A {}
|
||||
public class A {}
|
||||
|
||||
// FILE: Wrapper.java
|
||||
|
||||
abstract class Wrapper<T extends A> {
|
||||
public abstract class Wrapper<T extends A> {
|
||||
protected T t;
|
||||
|
||||
Wrapper(T t) { this.t = t; }
|
||||
|
||||
@@ -2,8 +2,8 @@ package
|
||||
|
||||
public fun foo(): kotlin.String
|
||||
|
||||
public/*package*/ open class A {
|
||||
public/*package*/ constructor A()
|
||||
public 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
|
||||
@@ -44,7 +44,7 @@ public final class TheirWrapper : Wrapper<E> {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ abstract class Wrapper</*0*/ T : A!> {
|
||||
public abstract class Wrapper</*0*/ T : A!> {
|
||||
public/*package*/ constructor Wrapper</*0*/ T : A!>(/*0*/ t: T!)
|
||||
protected/*protected and package*/ final var t: T!
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
|
||||
@@ -9,7 +9,7 @@ private open class A {
|
||||
|
||||
private fun foo() {}
|
||||
|
||||
fun makeA() = A()
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>makeA<!>() = A()
|
||||
|
||||
private object PO {}
|
||||
|
||||
@@ -33,7 +33,7 @@ fun test() {
|
||||
val po = <!INVISIBLE_MEMBER(PO; private; file)!>PO<!>
|
||||
}
|
||||
|
||||
class B : <!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>() {}
|
||||
class B : <!EXPOSED_SUPER_CLASS!><!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>()<!> {}
|
||||
|
||||
class Q {
|
||||
class W {
|
||||
|
||||
@@ -16,7 +16,7 @@ private fun bar() {
|
||||
x = 20
|
||||
}
|
||||
|
||||
fun makeA() = A()
|
||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>makeA<!>() = A()
|
||||
|
||||
private object PO {}
|
||||
|
||||
@@ -36,7 +36,7 @@ fun test() {
|
||||
val po = <!INVISIBLE_MEMBER(PO; private; file)!>PO<!>
|
||||
}
|
||||
|
||||
class B : <!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>() {}
|
||||
class B : <!EXPOSED_SUPER_CLASS!><!INVISIBLE_REFERENCE(A; private; file), INVISIBLE_MEMBER(A; private; file)!>A<!>()<!> {}
|
||||
|
||||
class Q {
|
||||
class W {
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
// FILE: Base.java
|
||||
|
||||
interface Base {}
|
||||
public interface Base {}
|
||||
|
||||
// FILE: Other.java
|
||||
|
||||
interface Other {}
|
||||
public interface Other {}
|
||||
|
||||
// FILE: Derived.java
|
||||
|
||||
final class Derived<T> implements Base, Other {}
|
||||
public final class Derived<T> implements Base, Other {}
|
||||
|
||||
// FILE: Exotic.java
|
||||
|
||||
final class Exotic implements Base, Other {
|
||||
public final class Exotic implements Base, Other {
|
||||
|
||||
int x;
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package
|
||||
|
||||
public/*package*/ interface Base {
|
||||
public interface Base {
|
||||
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*/ final class Derived</*0*/ T : kotlin.Any!> : Base, Other {
|
||||
public/*package*/ constructor Derived</*0*/ T : kotlin.Any!>()
|
||||
public final class Derived</*0*/ T : kotlin.Any!> : Base, Other {
|
||||
public constructor Derived</*0*/ T : kotlin.Any!>()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
@@ -21,7 +21,7 @@ public final class DerivedWrapper : Wrapper<Derived<*>> {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ final class Exotic : Base, Other {
|
||||
public final class Exotic : Base, Other {
|
||||
public/*package*/ constructor Exotic(/*0*/ x: kotlin.Int)
|
||||
public/*package*/ final var x: kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -57,7 +57,7 @@ public object MyBase {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public/*package*/ interface Other {
|
||||
public interface Other {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user