Do not consider protected members in final class as public API

This commit is contained in:
Ilya Gorbunov
2016-03-23 22:27:43 +03:00
parent 4e250e4dd1
commit f2cb5edf1a
6 changed files with 6 additions and 33 deletions
@@ -59,7 +59,11 @@ fun List<ClassBinarySignature>.filterOutNonPublic(): List<ClassBinarySignature>
val classByName = associateBy { it.name }
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] })
@@ -36,7 +36,7 @@ interface MemberBinarySignature {
val isInlineExposed: Boolean
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)
val signature: String
@@ -41,9 +41,6 @@ public static final field Companion Lcases/companions/PublicClasses$ProtectedCom
public fun <init> ()V
------------------
protected final class cases/companions/PublicClasses$ProtectedCompanion$Companion
------------------
public final class cases/companions/PublicClasses$PublicCompanion
public static final field Companion Lcases/companions/PublicClasses$PublicCompanion$Companion;
public fun <init> ()V
@@ -21,21 +21,10 @@ public final class cases/nestedClasses/PublicClass
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 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 fun <init> ()V
------------------
@@ -43,10 +32,6 @@ public fun <init> ()V
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 static final field INSTANCE Lcases/nestedClasses/PublicClass$ObjPublic;
------------------
@@ -7,11 +7,6 @@ protected abstract fun setProtectedVar (Ljava/lang/Object;)V
------------------
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
@@ -349,7 +349,6 @@ public final class kotlin/jvm/internal/BooleanSpreadBuilder: kotlin/jvm/internal
public fun <init> (I)V
public final fun add (Z)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([Z)I
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 final fun add (B)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([B)I
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 final fun add (C)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([C)I
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 final fun add (D)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([D)I
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 final fun add (F)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([F)I
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 final fun add (I)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([I)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 final fun add (J)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([J)I
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 final fun add (S)V
public synthetic fun getSize (Ljava/lang/Object;)I
protected fun getSize ([S)I
public final fun toArray ()[S
------------------