Take into account field kotlin visibility

This commit is contained in:
Ilya Gorbunov
2016-03-22 20:21:48 +03:00
parent bd8c83bee2
commit 0aaf0ba60f
4 changed files with 5 additions and 4 deletions
@@ -47,7 +47,7 @@ fun getBinaryAPI(classStreams: Sequence<InputStream>, visibilityMap: Map<String,
val modifiers = getModifierString(effectiveAccess and Opcodes.ACC_STATIC.inv())
val memberSignatures =
fields.filter { it.isPublic() }
fields.filter { it.isEffectivelyPublic(classVisibility) }
.sortedBy { it.name }
.map { with(it) { MemberBinarySignature(name, "${getModifierString(access)} field $name $desc", isStatic(access) ) } } +
methods.filter { it.isEffectivelyPublic(classVisibility) }
@@ -46,6 +46,10 @@ fun MethodNode.isEffectivelyPublic(classVisibility: ClassVisibility?) =
&& (classVisibility?.members?.get(MemberSignature(name, desc))?.isPublic() ?: true)
&& !isAccessMethod()
fun FieldNode.isEffectivelyPublic(classVisibility: ClassVisibility?) =
isPublic()
&& (classVisibility?.members?.get(MemberSignature(name, desc))?.isPublic() ?: true)
// TODO: lateinit exposed field
fun ClassNode.isLocal() = innerClasses.filter { it.name == name && it.innerName == null && it.outerName == null }.count() == 1
@@ -1,5 +1,4 @@
public final class cases/special/ClassWithLateInitMembers
public field internalLateInit Ljava/lang/String;
public field publicLateInitWithInternalSet Ljava/lang/String;
public final fun getPublicLateInitWithInternalSet ()Ljava/lang/String;
------------------
@@ -1589,9 +1589,7 @@ public static final fun readLine ()Ljava/lang/String;
------------------
public final class kotlin/io/ConstantsKt
public static final field DEFAULT_BLOCK_SIZE I
public static final field DEFAULT_BUFFER_SIZE I
public static final field MINIMUM_BLOCK_SIZE I
------------------
public final class kotlin/io/FileAlreadyExistsException: kotlin/io/FileSystemException