From 7e69c414d4f9fe82724b16b6adbcda6df8d17871 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Wed, 22 Apr 2015 21:51:25 +0300 Subject: [PATCH] JS: support new names for built-in metadata files starting with dot --- .../js/KotlinJavascriptSerializationUtil.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt index d57452142f2..f2dcae39021 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt @@ -41,7 +41,7 @@ import java.util.zip.GZIPOutputStream import kotlin.platform.platformStatic public object KotlinJavascriptSerializationUtil { - private val PACKAGE_FILE_SUFFIX = "/.kotlin_package" + private val PACKAGE_FILE_EXT = ".kotlin_package" platformStatic public fun createPackageFragmentProvider(moduleDescriptor: ModuleDescriptor, metadata: ByteArray, storageManager: StorageManager): PackageFragmentProvider? { @@ -117,19 +117,25 @@ public object KotlinJavascriptSerializationUtil { val fragments = module.getPackageFragmentProvider().getPackageFragments(fqName) val packageProto = serializer.packageProto(fragments, skip).build() ?: error("Package fragments not serialized: $fragments") packageProto.writeTo(packageStream) - // TODO: don't use fallback paths here - writeFun(BuiltInsSerializationUtil.FallbackPaths.getPackageFilePath(fqName), packageStream) + writeFun(BuiltInsSerializationUtil.getPackageFilePath(fqName), packageStream) val nameStream = ByteArrayOutputStream() val strings = serializer.getStringTable() SerializationUtil.serializeStringTable(nameStream, strings.serializeSimpleNames(), strings.serializeQualifiedNames()) - writeFun(BuiltInsSerializationUtil.FallbackPaths.getStringTableFilePath(fqName), nameStream) + writeFun(BuiltInsSerializationUtil.getStringTableFilePath(fqName), nameStream) } fun getFileName(classDescriptor: ClassDescriptor): String { return BuiltInsSerializationUtil.getClassMetadataPath(classDescriptor.classId) } + private fun getPackageName(filePath: String): String { + val lastIndexOfSep = filePath.lastIndexOf('/') + assert(lastIndexOfSep >= 0, "expected / in $filePath") + return filePath.substring(0, lastIndexOfSep).replace('/', '.') + + } + private fun getPackages(contentMap: Map): List = - contentMap.keySet().filter { it.endsWith(PACKAGE_FILE_SUFFIX) } map { it.substring(0, it.length() - PACKAGE_FILE_SUFFIX.length()).replace('/', '.') } + contentMap.keySet().filter { it.endsWith(PACKAGE_FILE_EXT) }.map { getPackageName(it) } } \ No newline at end of file