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:
Mikhail Glukhikh
2015-10-01 21:10:50 +03:00
committed by Mikhail Glukhikh
parent fa32aa2950
commit 0cc861f00b
73 changed files with 965 additions and 108 deletions
@@ -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
View File
@@ -3,4 +3,4 @@ private enum class MethodKind {
STATIC
}
fun MethodKind.hasThis() = this == MethodKind.INSTANCE
private fun MethodKind.hasThis() = this == MethodKind.INSTANCE
+1 -1
View File
@@ -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
}
+25
View File
@@ -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
}
+22
View File
@@ -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() {}
}
+13
View File
@@ -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
}
+6
View File
@@ -0,0 +1,6 @@
internal open class My
internal class Outer {
// Ok, effectively internal from internal
class Your: My()
}
+22
View File
@@ -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
}
}
+23
View File
@@ -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
}
+34
View File
@@ -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
}
+17
View File
@@ -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
}
@@ -8,4 +8,4 @@ package a
import pack1.*
class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER!>SomeClass<!>()
private class X : <!INVISIBLE_REFERENCE, INVISIBLE_MEMBER!>SomeClass<!>()
@@ -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<!>()
@@ -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,5 +1,5 @@
// FILE: Super.java
class Super {
public class Super {
void foo(Runnable r) {
}
}
@@ -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
+1 -1
View File
@@ -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,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) {}
@@ -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,6 +1,6 @@
// FILE: JavaInterface.java
interface JavaInterface {
public interface JavaInterface {
void foo(int javaName);
}
@@ -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
@@ -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
@@ -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!>!
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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.
@@ -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
@@ -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);
}
@@ -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
@@ -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();
}
@@ -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
+2 -2
View File
@@ -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 {
+2 -2
View File
@@ -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