Support .jar archives in friend paths (for internal visibility)

This commit is contained in:
Alexander Udalov
2017-04-26 15:51:50 +03:00
parent ac8fbce249
commit 939f969f12
4 changed files with 102 additions and 3 deletions
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedTypeAliasDescriptor
import java.io.File
import java.nio.file.Paths
interface ModuleVisibilityManager {
val chunk: Collection<Module>
@@ -66,10 +67,12 @@ fun isContainedByCompiledPartOfOurModule(descriptor: DeclarationDescriptor, outD
if (binaryClass is VirtualFileKotlinClass) {
val file = binaryClass.file
if (file.fileSystem.protocol == StandardFileSystems.FILE_PROTOCOL) {
val ioFile = VfsUtilCore.virtualToIoFile(file)
return ioFile.absolutePath.startsWith(outDirectory.absolutePath + File.separator)
val ioFile = when (file.fileSystem.protocol) {
StandardFileSystems.FILE_PROTOCOL -> VfsUtilCore.virtualToIoFile(file)
StandardFileSystems.JAR_PROTOCOL -> VfsUtilCore.getVirtualFileForJar(file)?.let(VfsUtilCore::virtualToIoFile)
else -> null
}
return ioFile != null && Paths.get(ioFile.toURI()).startsWith(Paths.get(outDirectory.toURI()))
}
return false