KLIB API constants clean-up
This commit is contained in:
committed by
alexander-gorshenev
parent
781c73335d
commit
5985c0c02b
+2
-2
@@ -21,8 +21,8 @@ import org.jetbrains.kotlin.storage.getValue
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||
|
||||
// FIXME(ddol): decouple and move interop-specific logic back to Kotlin/Native.
|
||||
open class KlibMetadataDeserializedPackageFragmentsFactoryImpl: KlibMetadataDeserializedPackageFragmentsFactory {
|
||||
// TODO decouple and move interop-specific logic back to Kotlin/Native.
|
||||
open class KlibMetadataDeserializedPackageFragmentsFactoryImpl : KlibMetadataDeserializedPackageFragmentsFactory {
|
||||
|
||||
override fun createDeserializedPackageFragments(
|
||||
library: KotlinLibrary,
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.utils.Printer
|
||||
|
||||
// TODO: eliminate Native specifics.
|
||||
class KlibResolvedModuleDescriptorsFactoryImpl(
|
||||
override val moduleDescriptorFactory: KlibMetadataModuleDescriptorFactory
|
||||
override val moduleDescriptorFactory: KlibMetadataModuleDescriptorFactory
|
||||
): KlibResolvedModuleDescriptorsFactory {
|
||||
|
||||
override fun createResolved(
|
||||
@@ -169,7 +169,7 @@ class ForwardDeclarationsPackageFragmentDescriptor(
|
||||
override fun getMemberScope(): MemberScope = memberScope
|
||||
}
|
||||
|
||||
// FIXME(ddol): decouple and move interop-specific logic back to Kotlin/Native.
|
||||
// TODO decouple and move interop-specific logic back to Kotlin/Native.
|
||||
internal object ForwardDeclarationsFqNames {
|
||||
|
||||
val packageName = FqName("kotlinx.cinterop")
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.idea.inspections.gradle.getResolvedVersionByModuleData
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
|
||||
@@ -8,12 +8,11 @@ package org.jetbrains.kotlin.ide.konan
|
||||
import com.intellij.ide.highlighter.ArchiveFileType
|
||||
import com.intellij.openapi.fileTypes.FileTypeConsumer
|
||||
import com.intellij.openapi.fileTypes.FileTypeFactory
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.konan.library.KDEFINITIONS_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
|
||||
class KotlinNativeFileTypeFactory : FileTypeFactory() {
|
||||
override fun createFileTypes(consumer: FileTypeConsumer) {
|
||||
consumer.consume(ArchiveFileType.INSTANCE, KLIB_FILE_EXTENSION)
|
||||
consumer.consume(NativeDefinitionsFileType, KDEFINITIONS_FILE_EXTENSION)
|
||||
consumer.consume(NativeDefinitionsFileType, KOTLIN_NATIVE_DEFINITIONS_FILE_EXTENSION)
|
||||
}
|
||||
}
|
||||
@@ -21,37 +21,36 @@ import javax.swing.Icon
|
||||
import java.io.Reader
|
||||
import org.jetbrains.kotlin.ide.konan.psi.*
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import org.jetbrains.kotlin.konan.library.KDEFINITIONS_FILE_EXTENSION
|
||||
|
||||
|
||||
const val NATIVE_DEFINITIONS_ID = "KND"
|
||||
const val NATIVE_DEFINITIONS_NAME = "Kotlin/Native Def"
|
||||
const val NATIVE_DEFINITIONS_DESCRIPTION = "Definitions file for Kotlin/Native C interop"
|
||||
const val KOTLIN_NATIVE_DEFINITIONS_FILE_EXTENSION = "def"
|
||||
const val KOTLIN_NATIVE_DEFINITIONS_ID = "KND"
|
||||
const val KOTLIN_NATIVE_DEFINITIONS_NAME = "Kotlin/Native Def"
|
||||
const val KOTLIN_NATIVE_DEFINITIONS_DESCRIPTION = "Definitions file for Kotlin/Native C interop"
|
||||
|
||||
object NativeDefinitionsFileType : LanguageFileType(NativeDefinitionsLanguage.INSTANCE) {
|
||||
|
||||
override fun getName(): String = NATIVE_DEFINITIONS_NAME
|
||||
override fun getName(): String = KOTLIN_NATIVE_DEFINITIONS_NAME
|
||||
|
||||
override fun getDescription(): String = NATIVE_DEFINITIONS_DESCRIPTION
|
||||
override fun getDescription(): String = KOTLIN_NATIVE_DEFINITIONS_DESCRIPTION
|
||||
|
||||
override fun getDefaultExtension(): String = KDEFINITIONS_FILE_EXTENSION
|
||||
override fun getDefaultExtension(): String = KOTLIN_NATIVE_DEFINITIONS_FILE_EXTENSION
|
||||
|
||||
override fun getIcon(): Icon = KotlinIcons.NATIVE
|
||||
}
|
||||
|
||||
class NativeDefinitionsLanguage private constructor() : Language(NATIVE_DEFINITIONS_ID) {
|
||||
class NativeDefinitionsLanguage private constructor() : Language(KOTLIN_NATIVE_DEFINITIONS_ID) {
|
||||
companion object {
|
||||
val INSTANCE = NativeDefinitionsLanguage()
|
||||
}
|
||||
|
||||
override fun getDisplayName(): String = NATIVE_DEFINITIONS_NAME
|
||||
override fun getDisplayName(): String = KOTLIN_NATIVE_DEFINITIONS_NAME
|
||||
}
|
||||
|
||||
class NativeDefinitionsFile(viewProvider: FileViewProvider) : PsiFileBase(viewProvider, NativeDefinitionsLanguage.INSTANCE) {
|
||||
|
||||
override fun getFileType(): FileType = NativeDefinitionsFileType
|
||||
|
||||
override fun toString(): String = NATIVE_DEFINITIONS_DESCRIPTION
|
||||
override fun toString(): String = KOTLIN_NATIVE_DEFINITIONS_DESCRIPTION
|
||||
|
||||
override fun getIcon(flags: Int): Icon? = super.getIcon(flags)
|
||||
}
|
||||
|
||||
@@ -32,11 +32,13 @@ import org.jetbrains.kotlin.idea.caches.project.lazyClosure
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.BuiltInsCacheKey
|
||||
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.konan.library.*
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
|
||||
import org.jetbrains.kotlin.konan.library.KonanFactories
|
||||
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_METADATA_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
||||
import org.jetbrains.kotlin.library.isInterop
|
||||
import org.jetbrains.kotlin.library.metadata.parseModuleHeader
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||
@@ -136,7 +138,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P
|
||||
val project = projectContext.project
|
||||
val storageManager = projectContext.storageManager
|
||||
|
||||
val stdlibInfo = moduleInfo.findNativeStdlib(project) ?: return DefaultBuiltIns.Instance
|
||||
val stdlibInfo = moduleInfo.findNativeStdlib() ?: return DefaultBuiltIns.Instance
|
||||
val konanLibrary = stdlibInfo.getCapability(NativeLibraryInfo.NATIVE_LIBRARY_CAPABILITY)!!
|
||||
|
||||
val builtInsModule = KonanFactories.DefaultDescriptorFactory.createDescriptorAndNewBuiltIns(
|
||||
@@ -176,7 +178,7 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P
|
||||
return builtInsModule.builtIns
|
||||
}
|
||||
|
||||
private fun ModuleInfo.findNativeStdlib(project: Project): NativeLibraryInfo? =
|
||||
private fun ModuleInfo.findNativeStdlib(): NativeLibraryInfo? =
|
||||
dependencies().lazyClosure { it.dependencies() }
|
||||
.filterIsInstance<NativeLibraryInfo>()
|
||||
.firstOrNull { it.isStdlib }
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.components.BaseComponent
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.util.containers.ContainerUtil.createConcurrentWeakValueMap
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_METADATA_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_METADATA_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_MODULE_METADATA_FILE_NAME
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
|
||||
import org.jetbrains.kotlin.library.metadata.parseModuleHeader
|
||||
|
||||
+3
-3
@@ -9,7 +9,7 @@ import com.intellij.openapi.fileTypes.FileType
|
||||
import com.intellij.openapi.fileTypes.FileTypeConsumer
|
||||
import com.intellij.openapi.fileTypes.FileTypeFactory
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_METADATA_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.KLIB_METADATA_FILE_EXTENSION
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||
import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer
|
||||
@@ -43,10 +43,10 @@ object KotlinNativeMetaFileType : FileType {
|
||||
override fun getName() = "KNM"
|
||||
override fun getDescription() = "Kotlin/Native Metadata"
|
||||
override fun getDefaultExtension() = KLIB_METADATA_FILE_EXTENSION
|
||||
override fun getIcon() = null
|
||||
override fun getIcon(): Nothing? = null
|
||||
override fun isBinary() = true
|
||||
override fun isReadOnly() = true
|
||||
override fun getCharset(file: VirtualFile, content: ByteArray) = null
|
||||
override fun getCharset(file: VirtualFile, content: ByteArray): Nothing? = null
|
||||
|
||||
const val STUB_VERSION = 2
|
||||
}
|
||||
|
||||
+8
-22
@@ -7,30 +7,16 @@ package org.jetbrains.kotlin.konan.library
|
||||
|
||||
import java.io.File
|
||||
|
||||
const val KLIB_FILE_EXTENSION = "klib"
|
||||
const val KLIB_FILE_EXTENSION_WITH_DOT = ".$KLIB_FILE_EXTENSION"
|
||||
|
||||
const val KLIB_METADATA_FILE_EXTENSION = "knm"
|
||||
const val KLIB_METADATA_FILE_EXTENSION_WITH_DOT = ".$KLIB_METADATA_FILE_EXTENSION"
|
||||
|
||||
const val KDEFINITIONS_FILE_EXTENSION = "def"
|
||||
|
||||
const val KONAN_STDLIB_NAME = "stdlib"
|
||||
|
||||
const val KLIB_DIR_NAME = "klib"
|
||||
const val KONAN_COMMON_LIBS_DIR_NAME = "common"
|
||||
const val KONAN_PLATFORM_LIBS_DIR_NAME = "platform"
|
||||
const val KONAN_DISTRIBUTION_KLIB_DIR = "klib"
|
||||
const val KONAN_DISTRIBUTION_COMMON_LIBS_DIR = "common"
|
||||
const val KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR = "platform"
|
||||
|
||||
const val KONAN_SOURCES_DIR_NAME = "sources"
|
||||
const val KONAN_DISTRIBUTION_SOURCES_DIR = "sources"
|
||||
|
||||
val KONAN_COMMON_LIBS_PATH: File
|
||||
get() = File(KLIB_DIR_NAME, KONAN_COMMON_LIBS_DIR_NAME)
|
||||
fun konanCommonLibraryPath(libraryName: String) =
|
||||
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_COMMON_LIBS_DIR).resolve(libraryName)
|
||||
|
||||
val KONAN_ALL_PLATFORM_LIBS_PATH: File
|
||||
get() = File(KLIB_DIR_NAME, KONAN_PLATFORM_LIBS_DIR_NAME)
|
||||
|
||||
fun konanCommonLibraryPath(libraryName: String): File = KONAN_COMMON_LIBS_PATH.resolve(libraryName)
|
||||
|
||||
fun konanSpecificPlatformLibrariesPath(platform: String): File = KONAN_ALL_PLATFORM_LIBS_PATH.resolve(platform)
|
||||
|
||||
fun konanPlatformLibraryPath(libraryName: String, platform: String): File = konanSpecificPlatformLibrariesPath(platform).resolve(libraryName)
|
||||
fun konanPlatformLibraryPath(libraryName: String, platform: String) =
|
||||
File(KONAN_DISTRIBUTION_KLIB_DIR, KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR).resolve(platform).resolve(libraryName)
|
||||
|
||||
+4
-4
@@ -64,7 +64,7 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
|
||||
private val konanHomeDir: Path? by lazy {
|
||||
customKonanHomeDir?.takeIf {
|
||||
// small sanity check to ensure that it's a valid Kotlin/Native home directory
|
||||
customKonanHomeDir.resolve(KLIB_DIR_NAME).isDirectory
|
||||
customKonanHomeDir.resolve(KONAN_DISTRIBUTION_KLIB_DIR).isDirectory
|
||||
}?.toPath()
|
||||
}
|
||||
|
||||
@@ -105,11 +105,11 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
|
||||
fun getDataDir(platformDir: File): File = platformDir.parentFile.parentFile
|
||||
|
||||
return when (parentDirName) {
|
||||
KONAN_COMMON_LIBS_DIR_NAME -> null to getDataDir(parentDir)
|
||||
KONAN_DISTRIBUTION_COMMON_LIBS_DIR -> null to getDataDir(parentDir)
|
||||
else -> {
|
||||
val grandParentDir = parentDir.parentFile ?: return null
|
||||
when {
|
||||
grandParentDir.name == KONAN_PLATFORM_LIBS_DIR_NAME -> parentDirName to getDataDir(grandParentDir)
|
||||
grandParentDir.name == KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR -> parentDirName to getDataDir(grandParentDir)
|
||||
else -> return null
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,7 @@ private class FromDistributionLiteKonanLibraryProvider(customKonanHomeDir: File?
|
||||
}
|
||||
|
||||
private fun getStdlibSources(dataDir: File): Collection<File> {
|
||||
val sourcesDir = dataDir.resolve(KONAN_SOURCES_DIR_NAME).takeIf { it.isDirectory } ?: return emptyList()
|
||||
val sourcesDir = dataDir.resolve(KONAN_DISTRIBUTION_SOURCES_DIR).takeIf { it.isDirectory } ?: return emptyList()
|
||||
|
||||
return sourcesDir.walkTopDown().maxDepth(1)
|
||||
.filter { it.isFile }
|
||||
|
||||
+10
-10
@@ -5,9 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.konan.library.lite
|
||||
|
||||
import org.jetbrains.kotlin.konan.library.KLIB_DIR_NAME
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_COMMON_LIBS_DIR_NAME
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_PLATFORM_LIBS_DIR_NAME
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_KLIB_DIR
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_COMMON_LIBS_DIR
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR
|
||||
import org.jetbrains.kotlin.konan.library.KONAN_STDLIB_NAME
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Test
|
||||
@@ -71,8 +71,8 @@ class LiteKonanLibraryFacadeTests {
|
||||
private fun getPotentialLibraryPathsOnLocalFS(): List<File> {
|
||||
val roots = mutableListOf(externalLibsDir)
|
||||
|
||||
roots += klibDir.resolve(KONAN_COMMON_LIBS_DIR_NAME)
|
||||
roots += klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME).listFiles(FileFilter { it.isDirectory }).toList()
|
||||
roots += klibDir.resolve(KONAN_DISTRIBUTION_COMMON_LIBS_DIR)
|
||||
roots += klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR).listFiles(FileFilter { it.isDirectory }).toList()
|
||||
|
||||
return roots.flatMap { it.listFiles().toList() }
|
||||
}
|
||||
@@ -81,10 +81,10 @@ class LiteKonanLibraryFacadeTests {
|
||||
getPotentialLibraryPathsOnLocalFS().mapNotNull { libraryProvider.getLibrary(it) }.toLibraryMap()
|
||||
|
||||
private fun librariesExpectedInDistribution(): Map<File, FakeLibraryForTest> = listOf(
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_COMMON_LIBS_DIR_NAME, KONAN_STDLIB_NAME)),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "foo"), platform = "macos_x64"),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "bar"), platform = "macos_x64"),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_PLATFORM_LIBS_DIR_NAME, "macos_x64", "baz"), platform = "macos_x64")
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_COMMON_LIBS_DIR, KONAN_STDLIB_NAME)),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "foo"), platform = "macos_x64"),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "bar"), platform = "macos_x64"),
|
||||
FakeLibraryForTest(klibDir.resolve(KONAN_DISTRIBUTION_PLATFORM_LIBS_DIR, "macos_x64", "baz"), platform = "macos_x64")
|
||||
).toLibraryMap()
|
||||
|
||||
private fun librariesExpectedInExternalDir(): Map<File, FakeLibraryForTest> = listOf(
|
||||
@@ -107,7 +107,7 @@ class LiteKonanLibraryFacadeTests {
|
||||
}
|
||||
|
||||
private companion object {
|
||||
val klibDir = konanHomeDir.resolve(KLIB_DIR_NAME)
|
||||
val klibDir = konanHomeDir.resolve(KONAN_DISTRIBUTION_KLIB_DIR)
|
||||
val externalLibsDir = testDataDir.resolve("external-libs")
|
||||
|
||||
fun <T : LiteKonanLibrary> List<T>.toLibraryMap() = map { it.path to it }.toMap()
|
||||
|
||||
Reference in New Issue
Block a user