Tests for public API dump tool.

This commit is contained in:
Ilya Gorbunov
2016-03-23 18:37:21 +03:00
parent da032e371a
commit 472b386101
58 changed files with 4699 additions and 1 deletions
@@ -0,0 +1,102 @@
package cases.companions
object PublicClasses {
class PublicCompanion {
companion object
}
class ProtectedCompanion {
protected companion object
}
abstract class AbstractProtectedCompanion {
protected companion object
}
class InternalCompanion {
internal companion object
}
class PrivateCompanion {
private companion object
}
}
object PublicInterfaces {
interface PublicCompanion {
companion object
}
interface PrivateCompanion {
private companion object
}
}
object InternalClasses {
internal class PublicCompanion {
companion object
}
internal class ProtectedCompanion {
protected companion object
}
internal abstract class AbstractProtectedCompanion {
protected companion object
}
internal class InternalCompanion {
internal companion object
}
internal class PrivateCompanion {
private companion object
}
}
object InternalInterfaces {
internal interface PublicCompanion {
companion object
}
internal interface PrivateCompanion {
private companion object
}
}
object PrivateClasses {
private class PublicCompanion {
companion object
}
private class ProtectedCompanion {
protected companion object
}
private abstract class AbstractProtectedCompanion {
protected companion object
}
private class InternalCompanion {
internal companion object
}
private class PrivateCompanion {
private companion object
}
}
object PrivateInterfaces {
private interface PublicCompanion {
companion object
}
private interface PrivateCompanion {
private companion object
}
}
@@ -0,0 +1,22 @@
@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
package cases.inline
@kotlin.internal.InlineExposed
internal fun exposedForInline() {}
@kotlin.internal.InlineExposed
internal class InternalClassExposed
@kotlin.internal.InlineExposed
internal constructor() {
@kotlin.internal.InlineExposed
internal fun funExposed() {}
@kotlin.internal.InlineExposed
internal var propertyExposed: String? = null
@JvmField
@kotlin.internal.InlineExposed
internal var fieldExposed: String? = null
}
@@ -0,0 +1,5 @@
package cases.inline
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
@kotlin.internal.InlineOnly
public inline fun inlineOnly(f: () -> Unit) = f()
@@ -0,0 +1,7 @@
package cases.internal
internal class InternalClass {
public val property = 1
public fun function() = property
}
@@ -0,0 +1,5 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.internal
internal fun internalFun1() = internalVal
@@ -0,0 +1,5 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.internal
internal val internalVal = "Internal"
@@ -0,0 +1,7 @@
package cases.internal
internal fun internalFun() {
}
// TODO: var, val, const
@@ -0,0 +1,9 @@
package cases.internal
public class PublicClass internal constructor() {
internal val property = 1
internal fun function() = property
}
@@ -0,0 +1,11 @@
package cases.java;
class Part1 {
public static void publicMethod(String param) { }
}
class Part2 extends Part1 {
public static void publicMethod(int param) { }
}
public class Facade extends Part2 { }
@@ -0,0 +1,5 @@
package cases.localClasses
import kotlin.comparisons.compareBy
private val COMPARER = compareBy<String> { it.length }
@@ -0,0 +1,19 @@
package cases.localClasses
class L {
internal fun a(lambda: () -> Unit) = lambda()
internal inline fun inlineLambda() {
a {
println("OK")
}
}
}
fun box() {
L().inlineLambda()
}
// TODO: inline lambda from stdlib
@@ -0,0 +1,23 @@
package cases.localClasses
class A {
fun a() : String {
class B() {
fun s() : String = "OK"
inner class C {}
}
return B().s()
}
}
class B {
fun a(p: String) : String {
class B() {
fun s() : String = p
}
return B().s()
}
}
@@ -0,0 +1,24 @@
package cases.nestedClasses
internal class InternalClass {
public object ObjPublic
internal object ObjInternal
protected object ObjProtected
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
protected class NestedProtected
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
protected interface NestedProtectedInterface
private interface NestedPrivateInterface
public inner class InnerPublic
internal inner class InnerInternal
protected inner class InnerProtected
private inner class InnerPrivate
}
@@ -0,0 +1,14 @@
package cases.nestedClasses
internal interface InternalInterface {
public object ObjPublic
private object ObjPrivate
public class NestedPublic
private class NestedPrivate
public interface NestedPublicInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,17 @@
package cases.nestedClasses
internal object InternalObject {
public object ObjPublic
internal object ObjInternal
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,24 @@
package cases.nestedClasses
private class PrivateClass {
public object ObjPublic
internal object ObjInternal
protected object ObjProtected
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
protected class NestedProtected
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
protected interface NestedProtectedInterface
private interface NestedPrivateInterface
public inner class InnerPublic
internal inner class InnerInternal
protected inner class InnerProtected
private inner class InnerPrivate
}
@@ -0,0 +1,14 @@
package cases.nestedClasses
private interface PrivateInterface {
public object ObjPublic
private object ObjPrivate
public class NestedPublic
private class NestedPrivate
public interface NestedPublicInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,17 @@
package cases.nestedClasses
private object PrivateObject {
public object ObjPublic
internal object ObjInternal
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,12 @@
package cases.nestedClasses
public abstract class PublicAbstractClass {
protected object ObjProtected
protected class NestedProtected
protected interface NestedProtectedInterface
protected inner class InnerProtected
}
@@ -0,0 +1,24 @@
package cases.nestedClasses
public class PublicClass {
public object ObjPublic
internal object ObjInternal
protected object ObjProtected
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
protected class NestedProtected
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
protected interface NestedProtectedInterface
private interface NestedPrivateInterface
public inner class InnerPublic
internal inner class InnerInternal
protected inner class InnerProtected
private inner class InnerPrivate
}
@@ -0,0 +1,14 @@
package cases.nestedClasses
public interface PublicInterface {
public object ObjPublic
private object ObjPrivate
public class NestedPublic
private class NestedPrivate
public interface NestedPublicInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,17 @@
package cases.nestedClasses
public object PublicObject {
public object ObjPublic
internal object ObjInternal
private object ObjPrivate
public class NestedPublic
internal class NestedInternal
private class NestedPrivate
public interface NestedPublicInterface
internal interface NestedInternalInterface
private interface NestedPrivateInterface
}
@@ -0,0 +1,12 @@
package cases.nestedClasses
public open class PublicOpenClass {
protected object ObjProtected
protected class NestedProtected
protected interface NestedProtectedInterface
protected inner class InnerProtected
}
@@ -0,0 +1,7 @@
package cases.private
private open class PrivateClass public constructor() {
internal val internalVal = 1
protected fun protectedFun() = internalVal
}
@@ -0,0 +1,8 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.private
private val privateVal: Any? = 1
private var privateVar: Any? = 1
@@ -0,0 +1,19 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.private
// const
private const val privateConst: Int = 4
// fun
private fun privateFun(x: Any) {}
private class PrivateClassInMultifile {
internal fun accessUsage() {
privateFun(privateConst)
}
}
@@ -0,0 +1,23 @@
package cases.private
// properties
private val privateVal: Any? = 1
private var privateVar: Any? = 1
// constants
private const val privateConst: Int = 4
// fun
private fun privateFun(a: Any?) = privateConst
// access
private class PrivateClassInPart {
internal fun accessUsage() {
privateFun(privateVal)
privateFun(privateVar)
privateFun(privateConst)
}
}
@@ -0,0 +1,8 @@
package cases.protected
public abstract class PublicAbstractClass protected constructor() {
protected abstract val protectedVal: Int
protected abstract var protectedVar: Any?
protected abstract fun protectedFun()
}
@@ -0,0 +1,8 @@
package cases.protected
public class PublicFinalClass protected constructor() {
protected val protectedVal = 1
protected var protectedVar = 2
protected fun protectedFun() = protectedVal
}
@@ -0,0 +1,8 @@
package cases.protected
public open class PublicOpenClass protected constructor() {
protected val protectedVal = 1
protected var protectedVar = 2
protected fun protectedFun() = protectedVal
}
@@ -0,0 +1,5 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.public
public fun publicFun1() = publicVal
@@ -0,0 +1,5 @@
@file:JvmName("MultifileKt")
@file:JvmMultifileClass
package cases.public
public val publicVal = "Public"
@@ -0,0 +1,5 @@
package cases.public
public fun publicFun() {
}
@@ -0,0 +1,25 @@
package cases.special
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
public class HiddenClass
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
public constructor() {
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
val hiddenVal = 1
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
var hiddenVar = 2
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
fun hiddenFun() {}
public var varWithHiddenAccessors: String = ""
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
get
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
set
}
@Deprecated("For binary compatibility", level = DeprecationLevel.HIDDEN)
fun hiddenTopLevelFun() {}
@@ -0,0 +1,10 @@
package cases.special
public class ClassWithLateInitMembers internal constructor() {
public lateinit var publicLateInitWithInternalSet: String
internal set
internal lateinit var internalLateInit: String
}
@@ -0,0 +1,22 @@
package cases.special
@JvmName("internalFun")
internal fun internalRenamedFun() {}
internal var internalVar: Int = 1
@JvmName("internalVarGetter")
get
@JvmName("internalVarSetter")
set
@JvmName("publicFun")
public fun publicRenamedFun() {}
public var publicVar: Int = 1
@JvmName("publicVarGetter")
get
@JvmName("publicVarSetter")
set
@@ -0,0 +1,17 @@
package cases.special
@JvmOverloads
public fun publicFunWithOverloads(a: Int = 0, b: String? = null) {}
@JvmOverloads
internal fun internalFunWithOverloads(a: Int = 0, b: String? = null) {}
public class ClassWithOverloads
@JvmOverloads
internal constructor(val a: Int = 0, val b: String? = null) {
@JvmOverloads
internal fun internalFunWithOverloads(a: Int = 0, b: String? = null) {}
}
@@ -0,0 +1,20 @@
package cases.whenMappings
enum class SampleEnum {
A,
B,
C
}
fun SampleEnum.deacronimize() = when (this) {
SampleEnum.A -> "Apple"
SampleEnum.B -> "Biscuit"
SampleEnum.C -> "Cinnamon"
}
inline fun SampleEnum.switch(thenA: () -> Unit, thenB: () -> Unit, thenC: () -> Unit) = when (this) {
SampleEnum.C -> thenC()
SampleEnum.B -> thenB()
SampleEnum.A -> thenA()
}
@@ -0,0 +1,20 @@
package cases.whenMappings
sealed class SampleSealed {
class A : SampleSealed()
class B : SampleSealed()
class C : SampleSealed()
}
fun SampleSealed.deacronimize() = when (this) {
is SampleSealed.A -> "Apple"
is SampleSealed.B -> "Biscuit"
is SampleSealed.C -> "Cinnamon"
}
inline fun SampleSealed.switch(thenA: () -> Unit, thenB: () -> Unit, thenC: () -> Unit) = when (this) {
is SampleSealed.C -> thenC()
is SampleSealed.B -> thenB()
is SampleSealed.A -> thenA()
}