Do not consider protected members in final class as public API
This commit is contained in:
+5
-1
@@ -59,7 +59,11 @@ fun List<ClassBinarySignature>.filterOutNonPublic(): List<ClassBinarySignature>
|
|||||||
val classByName = associateBy { it.name }
|
val classByName = associateBy { it.name }
|
||||||
|
|
||||||
fun ClassBinarySignature.isPublicAndAccessible(): Boolean =
|
fun ClassBinarySignature.isPublicAndAccessible(): Boolean =
|
||||||
isEffectivelyPublic && (outerName == null || classByName[outerName]?.isPublicAndAccessible() ?: true)
|
isEffectivelyPublic &&
|
||||||
|
(outerName == null || classByName[outerName]?.let { outerClass ->
|
||||||
|
!(this.access.isProtected && outerClass.access.isFinal)
|
||||||
|
&& outerClass.isPublicAndAccessible()
|
||||||
|
} ?: true)
|
||||||
|
|
||||||
fun supertypes(superName: String) = generateSequence({ classByName[superName] }, { classByName[it.superName] })
|
fun supertypes(superName: String) = generateSequence({ classByName[superName] }, { classByName[it.superName] })
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ interface MemberBinarySignature {
|
|||||||
val isInlineExposed: Boolean
|
val isInlineExposed: Boolean
|
||||||
|
|
||||||
fun isEffectivelyPublic(classAccess: AccessFlags, classVisibility: ClassVisibility?)
|
fun isEffectivelyPublic(classAccess: AccessFlags, classVisibility: ClassVisibility?)
|
||||||
= access.isPublic // && !(access.isProtected && classAccess.isFinal)
|
= access.isPublic && !(access.isProtected && classAccess.isFinal)
|
||||||
&& (classVisibility?.members?.get(MemberSignature(name, desc))?.isPublic(isInlineExposed) ?: true)
|
&& (classVisibility?.members?.get(MemberSignature(name, desc))?.isPublic(isInlineExposed) ?: true)
|
||||||
|
|
||||||
val signature: String
|
val signature: String
|
||||||
|
|||||||
-3
@@ -41,9 +41,6 @@ public static final field Companion Lcases/companions/PublicClasses$ProtectedCom
|
|||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
protected final class cases/companions/PublicClasses$ProtectedCompanion$Companion
|
|
||||||
------------------
|
|
||||||
|
|
||||||
public final class cases/companions/PublicClasses$PublicCompanion
|
public final class cases/companions/PublicClasses$PublicCompanion
|
||||||
public static final field Companion Lcases/companions/PublicClasses$PublicCompanion$Companion;
|
public static final field Companion Lcases/companions/PublicClasses$PublicCompanion$Companion;
|
||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
|
|||||||
-15
@@ -21,21 +21,10 @@ public final class cases/nestedClasses/PublicClass
|
|||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
protected final class cases/nestedClasses/PublicClass$InnerProtected
|
|
||||||
public fun <init> (Lcases/nestedClasses/PublicClass;)V
|
|
||||||
------------------
|
|
||||||
|
|
||||||
public final class cases/nestedClasses/PublicClass$InnerPublic
|
public final class cases/nestedClasses/PublicClass$InnerPublic
|
||||||
public fun <init> (Lcases/nestedClasses/PublicClass;)V
|
public fun <init> (Lcases/nestedClasses/PublicClass;)V
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
protected final class cases/nestedClasses/PublicClass$NestedProtected
|
|
||||||
public fun <init> ()V
|
|
||||||
------------------
|
|
||||||
|
|
||||||
protected abstract interface class cases/nestedClasses/PublicClass$NestedProtectedInterface
|
|
||||||
------------------
|
|
||||||
|
|
||||||
public final class cases/nestedClasses/PublicClass$NestedPublic
|
public final class cases/nestedClasses/PublicClass$NestedPublic
|
||||||
public fun <init> ()V
|
public fun <init> ()V
|
||||||
------------------
|
------------------
|
||||||
@@ -43,10 +32,6 @@ public fun <init> ()V
|
|||||||
public abstract interface class cases/nestedClasses/PublicClass$NestedPublicInterface
|
public abstract interface class cases/nestedClasses/PublicClass$NestedPublicInterface
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
protected final class cases/nestedClasses/PublicClass$ObjProtected
|
|
||||||
public static final field INSTANCE Lcases/nestedClasses/PublicClass$ObjProtected;
|
|
||||||
------------------
|
|
||||||
|
|
||||||
public final class cases/nestedClasses/PublicClass$ObjPublic
|
public final class cases/nestedClasses/PublicClass$ObjPublic
|
||||||
public static final field INSTANCE Lcases/nestedClasses/PublicClass$ObjPublic;
|
public static final field INSTANCE Lcases/nestedClasses/PublicClass$ObjPublic;
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
-5
@@ -7,11 +7,6 @@ protected abstract fun setProtectedVar (Ljava/lang/Object;)V
|
|||||||
------------------
|
------------------
|
||||||
|
|
||||||
public final class cases/protected/PublicFinalClass
|
public final class cases/protected/PublicFinalClass
|
||||||
protected fun <init> ()V
|
|
||||||
protected final fun getProtectedVal ()I
|
|
||||||
protected final fun getProtectedVar ()I
|
|
||||||
protected final fun protectedFun ()I
|
|
||||||
protected final fun setProtectedVar (I)V
|
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
public class cases/protected/PublicOpenClass
|
public class cases/protected/PublicOpenClass
|
||||||
|
|||||||
-8
@@ -349,7 +349,6 @@ public final class kotlin/jvm/internal/BooleanSpreadBuilder: kotlin/jvm/internal
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (Z)V
|
public final fun add (Z)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([Z)I
|
|
||||||
public final fun toArray ()[Z
|
public final fun toArray ()[Z
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -357,7 +356,6 @@ public final class kotlin/jvm/internal/ByteSpreadBuilder: kotlin/jvm/internal/Pr
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (B)V
|
public final fun add (B)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([B)I
|
|
||||||
public final fun toArray ()[B
|
public final fun toArray ()[B
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -381,7 +379,6 @@ public final class kotlin/jvm/internal/CharSpreadBuilder: kotlin/jvm/internal/Pr
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (C)V
|
public final fun add (C)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([C)I
|
|
||||||
public final fun toArray ()[C
|
public final fun toArray ()[C
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -413,7 +410,6 @@ public final class kotlin/jvm/internal/DoubleSpreadBuilder: kotlin/jvm/internal/
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (D)V
|
public final fun add (D)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([D)I
|
|
||||||
public final fun toArray ()[D
|
public final fun toArray ()[D
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -421,7 +417,6 @@ public final class kotlin/jvm/internal/FloatSpreadBuilder: kotlin/jvm/internal/P
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (F)V
|
public final fun add (F)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([F)I
|
|
||||||
public final fun toArray ()[F
|
public final fun toArray ()[F
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -492,7 +487,6 @@ public final class kotlin/jvm/internal/IntSpreadBuilder: kotlin/jvm/internal/Pri
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (I)V
|
public final fun add (I)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([I)I
|
|
||||||
public final fun toArray ()[I
|
public final fun toArray ()[I
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -541,7 +535,6 @@ public final class kotlin/jvm/internal/LongSpreadBuilder: kotlin/jvm/internal/Pr
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (J)V
|
public final fun add (J)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([J)I
|
|
||||||
public final fun toArray ()[J
|
public final fun toArray ()[J
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
@@ -833,7 +826,6 @@ public final class kotlin/jvm/internal/ShortSpreadBuilder: kotlin/jvm/internal/P
|
|||||||
public fun <init> (I)V
|
public fun <init> (I)V
|
||||||
public final fun add (S)V
|
public final fun add (S)V
|
||||||
public synthetic fun getSize (Ljava/lang/Object;)I
|
public synthetic fun getSize (Ljava/lang/Object;)I
|
||||||
protected fun getSize ([S)I
|
|
||||||
public final fun toArray ()[S
|
public final fun toArray ()[S
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user