jvm-abi-gen: Remove effectively private classes from ABI
#KT-64590 Fixed
This commit is contained in:
committed by
Space Team
parent
7cf793f308
commit
11d3ead975
@@ -0,0 +1,5 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package test
|
||||
|
||||
fun f() {}
|
||||
@@ -0,0 +1,5 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package test
|
||||
|
||||
// Removal of function from a multi-file class should result in a different ABI even though the multi-file part class is package-private.
|
||||
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
class Class {
|
||||
private companion object {}
|
||||
private class PrivateClass {
|
||||
companion object {}
|
||||
class NestedClass
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
@@ -0,0 +1,3 @@
|
||||
package test
|
||||
|
||||
class Class
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
class SomeClass {
|
||||
private interface PrivateInterface {
|
||||
fun d() = "Default implementation of removed interface should not affect abi."
|
||||
}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
class SomeClass {
|
||||
private interface PrivateInterface {
|
||||
fun d(): String
|
||||
}
|
||||
}
|
||||
Vendored
+9
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
class Outer {
|
||||
class Public : NestedClass.I
|
||||
|
||||
private class NestedClass {
|
||||
interface I
|
||||
}
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
plugins/jvm-abi-gen/testData/compare/privateOuterClassForEffectivelyVisibleInterface/sameAbi/test.kt
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
package test
|
||||
|
||||
class Outer {
|
||||
class Public : NestedClass.I
|
||||
|
||||
private class NestedClass {
|
||||
interface I
|
||||
|
||||
fun someFun() = Unit
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
class Class
|
||||
|
||||
private class PrivateClass
|
||||
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
@@ -0,0 +1,3 @@
|
||||
package test
|
||||
|
||||
class Class
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
class Class
|
||||
|
||||
private class PrivateClass
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
package test
|
||||
|
||||
class Class
|
||||
@@ -0,0 +1,5 @@
|
||||
package app
|
||||
|
||||
//UnexpectedInnerClass although declared in a separate module
|
||||
//appear to be an inner class of the class generated from this file
|
||||
fun runAppAndReturnOk() = AppKt.UnexpectedInnerClass.result()
|
||||
@@ -0,0 +1,7 @@
|
||||
package app
|
||||
|
||||
class AppKt {
|
||||
object UnexpectedInnerClass {
|
||||
fun result() = "OK"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
f1()
|
||||
if (v1 != "OK") return "Fail 1"
|
||||
f2()
|
||||
if (v2 != "OK") return "Fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T1 = String
|
||||
fun f1() {}
|
||||
val v1: T1 = "OK"
|
||||
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T2 = String
|
||||
fun f2() {}
|
||||
val v2: T2 = "OK"
|
||||
@@ -0,0 +1,12 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
f1()
|
||||
if (v1 != "OK") return "Fail 1"
|
||||
f2()
|
||||
if (v2 != "OK") return "Fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
// INHERIT_MULTIFILE_PARTS
|
||||
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T1 = String
|
||||
fun f1() {}
|
||||
val v1: T1 = "OK"
|
||||
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T2 = String
|
||||
fun f2() {}
|
||||
val v2: T2 = "OK"
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
f1()
|
||||
if (v1 != "OK") return "Fail 1"
|
||||
f2()
|
||||
if (v2 != "OK") return "Fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
// INHERIT_MULTIFILE_PARTS
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T1 = String
|
||||
fun f1() {}
|
||||
val v1: T1 = "OK"
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T2 = String
|
||||
fun f2() {}
|
||||
val v2: T2 = "OK"
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
f1()
|
||||
if (v1 != "OK") return "Fail 1"
|
||||
f2()
|
||||
if (v2 != "OK") return "Fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T1 = String
|
||||
fun f1() {}
|
||||
val v1: T1 = "OK"
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Multifile")
|
||||
package lib
|
||||
|
||||
typealias T2 = String
|
||||
fun f2() {}
|
||||
val v2: T2 = "OK"
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
return Outer.Public.result()
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
// REMOVE_PRIVATE_CLASSES
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package lib
|
||||
|
||||
class Outer {
|
||||
object Public : Private
|
||||
|
||||
private interface Private: Secret.EffectivelyPrivate
|
||||
|
||||
private object Secret {
|
||||
interface EffectivelyPrivate {
|
||||
fun result(): String = "OK"
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
class Outer {
|
||||
private object Annotations {
|
||||
annotation class EffectivelyPrivateAnnotation
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
@java.lang.annotation.Retention(value=RUNTIME)
|
||||
@kotlin.Metadata
|
||||
public annotation class test/Outer$Annotations$EffectivelyPrivateAnnotation {
|
||||
// source: 'annotation.kt'
|
||||
private final inner class test/Outer$Annotations
|
||||
public inner class test/Outer$Annotations$EffectivelyPrivateAnnotation
|
||||
}
|
||||
@kotlin.Metadata
|
||||
final class test/Outer$Annotations {
|
||||
// source: 'annotation.kt'
|
||||
private final inner class test/Outer$Annotations
|
||||
public inner class test/Outer$Annotations$EffectivelyPrivateAnnotation
|
||||
public final static @org.jetbrains.annotations.NotNull field INSTANCE: test.Outer$Annotations
|
||||
}
|
||||
@kotlin.Metadata
|
||||
public final class test/Outer {
|
||||
// source: 'annotation.kt'
|
||||
private final inner class test/Outer$Annotations
|
||||
public method <init>(): void
|
||||
}
|
||||
Reference in New Issue
Block a user