diff --git a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt index afdd74d3c32..218075e83b9 100644 --- a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt +++ b/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializer.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots +import org.jetbrains.kotlin.cli.metadata.MetadataSerializer import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.addKotlinSourceRoots @@ -36,7 +37,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.serialization.MetadataSerializer +import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase import org.jetbrains.kotlin.storage.LockBasedStorageManager import java.io.File @@ -102,6 +103,8 @@ class BuiltInsSerializer(dependOnOldBuiltIns: Boolean) : MetadataSerializer(depe } } + override fun createSerializerExtension(): KotlinSerializerExtensionBase = BuiltInsSerializerExtension() + // Serialize metadata for kotlin.Cloneable manually for compatibility with kotlin-reflect 1.0 which expects this metadata to be there. // Since Kotlin 1.1, we always discard this class during deserialization (see ClassDeserializer.kt). private fun createCloneable(module: ModuleDescriptor): ClassDescriptor { diff --git a/compiler/cli/cli.iml b/compiler/cli/cli.iml index 66cb898b486..1e543e4aaeb 100644 --- a/compiler/cli/cli.iml +++ b/compiler/cli/cli.iml @@ -21,7 +21,6 @@ - diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt index 6f738f16bba..3512b456671 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt @@ -33,7 +33,6 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.config.addKotlinSourceRoot import org.jetbrains.kotlin.load.java.JvmAbi -import org.jetbrains.kotlin.serialization.MetadataSerializer import java.io.File class K2MetadataCompiler : CLICompiler() { diff --git a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/MetadataSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt similarity index 95% rename from compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/MetadataSerializer.kt rename to compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt index f6eebc38da0..68f0bc2ec6a 100644 --- a/compiler/builtins-serializer/src/org/jetbrains/kotlin/serialization/MetadataSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.serialization +package org.jetbrains.kotlin.cli.metadata import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.analyzer.common.DefaultAnalyzerFacade @@ -39,7 +39,9 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter -import org.jetbrains.kotlin.serialization.builtins.BuiltInsSerializerExtension +import org.jetbrains.kotlin.serialization.DescriptorSerializer +import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase +import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment.Companion.DOT_METADATA_FILE_EXTENSION import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable import java.io.ByteArrayOutputStream @@ -130,6 +132,8 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) { kotlinModuleFile.writeBytes(packageTableBytes) } + protected open fun createSerializerExtension(): KotlinSerializerExtensionBase = MetadataSerializerExtension() + private fun getPackageFilePath(packageFqName: FqName, fileName: String): String = packageFqName.asString().replace('.', '/') + "/" + PackagePartClassUtils.getFilePartShortName(fileName) + DOT_METADATA_FILE_EXTENSION @@ -144,7 +148,7 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) { private val destFile: File ) { private val proto = ProtoBuf.PackageFragment.newBuilder() - private val extension = BuiltInsSerializerExtension() + private val extension = createSerializerExtension() fun run() { serializeClasses(classes) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializerExtension.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializerExtension.kt new file mode 100644 index 00000000000..6c0ba5c4a52 --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializerExtension.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2010-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.cli.metadata + +import org.jetbrains.kotlin.builtins.BuiltInSerializerProtocol +import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase + +class MetadataSerializerExtension : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) { + override fun shouldUseTypeTable(): Boolean = true +}