diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt index 59e462f5a72..84e35901390 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt @@ -137,8 +137,8 @@ open class IncrementalJsCache( } for ((srcFile, irData) in incrementalResults.irFileData) { - val (fileData, types, signatures, strings, declarations, bodies, fqn) = irData - irTranslationResults.put(srcFile, fileData, types, signatures, strings, declarations, bodies, fqn) + val (fileData, types, signatures, strings, declarations, bodies, fqn, debugInfos) = irData + irTranslationResults.put(srcFile, fileData, types, signatures, strings, declarations, bodies, fqn, debugInfos) } } @@ -269,6 +269,7 @@ private object IrTranslationResultValueExternalizer : DataExternalizer + return declareIrField(null) { symbol -> irFactory.createField( startOffset, endOffset, origin, symbol, name, inferredType, @@ -713,6 +710,12 @@ class Fir2IrDeclarationStorage( else symbolTable.declareProperty(signature, { Fir2IrPropertySymbol(signature, containerSource) }, factory) + private fun declareIrField(signature: IdSignature?, factory: (IrFieldSymbol) -> IrField): IrField = + if (signature == null) + factory(IrFieldSymbolImpl()) + else + symbolTable.declareField(signature, { IrFieldPublicSymbolImpl(signature) }, factory) + fun getOrCreateIrProperty( property: FirProperty, irParent: IrDeclarationParent?, @@ -797,13 +800,13 @@ class Fir2IrDeclarationStorage( if (delegate != null || property.hasBackingField) { backingField = if (delegate != null) { createBackingField( - property, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor, + property, IrDeclarationOrigin.PROPERTY_DELEGATE, components.visibilityConverter.convertToDescriptorVisibility(property.fieldVisibility), Name.identifier("${property.name}\$delegate"), true, delegate ) } else { createBackingField( - property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, + property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, components.visibilityConverter.convertToDescriptorVisibility(property.fieldVisibility), property.name, property.isVal, initializer, type ).also { field -> diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt index 9125042c138..59112bb49ee 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyProperty.kt @@ -5,13 +5,19 @@ package org.jetbrains.kotlin.fir.lazy +import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.fir.backend.ConversionTypeContext +import org.jetbrains.kotlin.fir.backend.ConversionTypeOrigin +import org.jetbrains.kotlin.fir.backend.Fir2IrComponents +import org.jetbrains.kotlin.fir.backend.toIrConst import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter import org.jetbrains.kotlin.fir.expressions.FirConstExpression import org.jetbrains.kotlin.fir.symbols.Fir2IrPropertySymbol +import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar @@ -21,11 +27,8 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.isInterface import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource -import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.fir.backend.* -import org.jetbrains.kotlin.fir.backend.ConversionTypeOrigin import org.jetbrains.kotlin.fir.declarations.utils.* -import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol class Fir2IrLazyProperty( @@ -96,7 +99,7 @@ class Fir2IrLazyProperty( fir.initializer != null || fir.getter is FirDefaultPropertyGetter || fir.isVar && fir.setter is FirDefaultPropertySetter -> { with(declarationStorage) { createBackingField( - fir, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, + fir, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, components.visibilityConverter.convertToDescriptorVisibility(fir.visibility), fir.name, fir.isVal, fir.initializer, type ).also { field -> @@ -112,7 +115,7 @@ class Fir2IrLazyProperty( fir.delegate != null -> { with(declarationStorage) { createBackingField( - fir, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor, + fir, IrDeclarationOrigin.PROPERTY_DELEGATE, components.visibilityConverter.convertToDescriptorVisibility(fir.visibility), Name.identifier("${fir.name}\$delegate"), true, fir.delegate ) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt index a9ed5030899..23c8b4594c5 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendContext.kt @@ -46,7 +46,7 @@ class JvmBackendContext( val state: GenerationState, override val irBuiltIns: IrBuiltIns, irModuleFragment: IrModuleFragment, - private val symbolTable: SymbolTable, + val symbolTable: SymbolTable, val phaseConfig: PhaseConfig, val generatorExtensions: JvmGeneratorExtensions, val backendExtension: JvmBackendExtension, diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 4d2d3294b97..5973ca76c5e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -295,13 +295,13 @@ private fun codegenPhase(generateMultifileFacade: Boolean): NamedCompilerPhase val irDeclarationGenerator = DeclarationGenerator(context) ktFiles.toSet().mapTo(irModule.files) { ktFile -> - generateSingleFile(irDeclarationGenerator, ktFile, irModule) + context.typeTranslator.inFile(ktFile) { + generateSingleFile(irDeclarationGenerator, ktFile, irModule) + } } } - fun generateUnboundSymbolsAsDependencies( - irModule: IrModuleFragment, - deserializer: IrDeserializer? = null, - extensions: StubGeneratorExtensions = StubGeneratorExtensions.EMPTY - ) { - val fullIrProvidersList = generateTypicalIrProviderList( - irModule.descriptor, context.irBuiltIns, context.symbolTable, deserializer, - extensions - ) - ExternalDependenciesGenerator(context.symbolTable, fullIrProvidersList) - .generateUnboundSymbolsAsDependencies() - } - fun generateUnboundSymbolsAsDependencies(irProviders: List) { - ExternalDependenciesGenerator(context.symbolTable, irProviders) - .generateUnboundSymbolsAsDependencies() + ExternalDependenciesGenerator(context.symbolTable, irProviders).generateUnboundSymbolsAsDependencies() } private fun generateSingleFile(irDeclarationGenerator: DeclarationGenerator, ktFile: KtFile, module: IrModuleFragment): IrFileImpl { diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/TypeTranslatorImpl.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/TypeTranslatorImpl.kt index 14f11cf7c5d..00b2b19e68b 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/TypeTranslatorImpl.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/TypeTranslatorImpl.kt @@ -6,8 +6,12 @@ package org.jetbrains.kotlin.psi2ir.generators import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.source.getPsi import org.jetbrains.kotlin.types.* class TypeTranslatorImpl( @@ -38,4 +42,23 @@ class TypeTranslatorImpl( override fun commonSupertype(types: Collection): KotlinType = CommonSupertypes.commonSupertype(types) + + override fun isTypeAliasAccessibleHere(typeAliasDescriptor: TypeAliasDescriptor): Boolean { + if (typeAliasDescriptor.visibility != DescriptorVisibilities.PRIVATE) return true + + val psiFile = typeAliasDescriptor.source.getPsi()?.containingFile ?: return false + + return psiFile == currentFile + } + + private var currentFile: KtFile? = null + + fun inFile(ktFile: KtFile?, block: () -> R): R { + try { + currentFile = ktFile + return block() + } finally { + currentFile = null + } + } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt index 0eca607339e..30efd24dd11 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl import org.jetbrains.kotlin.ir.declarations.IrFactory -import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrTypeParameterSymbolImpl @@ -48,8 +47,7 @@ class IrBuiltIns( private val builtInsModule = builtIns.builtInsModule private val packageFragmentDescriptor = IrBuiltinsPackageFragmentDescriptorImpl(builtInsModule, KOTLIN_INTERNAL_IR_FQN) - val packageFragment = - IrExternalPackageFragmentImpl(symbolTable.referenceExternalPackageFragment(packageFragmentDescriptor), KOTLIN_INTERNAL_IR_FQN) + val packageFragment = symbolTable.declareExternalPackageFragmentIfNotExists(packageFragmentDescriptor) private fun ClassDescriptor.toIrSymbol() = symbolTable.referenceClass(this) private fun KotlinType.toIrType() = typeTranslator.translateType(this) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDelegateDescriptor.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDelegateDescriptor.kt index 3383fba1d1f..cc4c3e6ba52 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDelegateDescriptor.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDelegateDescriptor.kt @@ -85,7 +85,7 @@ abstract class IrDelegateDescriptorBase( override fun isVar(): Boolean = false override fun accept(visitor: DeclarationDescriptorVisitor, data: D): R = - visitor.visitVariableDescriptor(this, data) + visitor.visitPropertyDescriptor(this, data) } class IrPropertyDelegateDescriptorImpl( diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt index 03f56f6d7bd..375e2e73f6c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt @@ -236,18 +236,18 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa private val kotlinPackageFragment: IrPackageFragment by lazy { irBuiltIns.builtIns.getFunction(0).let { - symbolTable.declareExternalPackageFragment(it.containingDeclaration as PackageFragmentDescriptor) + symbolTable.declareExternalPackageFragmentIfNotExists(it.containingDeclaration as PackageFragmentDescriptor) } } private val kotlinCoroutinesPackageFragment: IrPackageFragment by lazy { irBuiltIns.builtIns.getSuspendFunction(0).let { - symbolTable.declareExternalPackageFragment(it.containingDeclaration as PackageFragmentDescriptor) + symbolTable.declareExternalPackageFragmentIfNotExists(it.containingDeclaration as PackageFragmentDescriptor) } } private val kotlinReflectPackageFragment: IrPackageFragment by lazy { irBuiltIns.kPropertyClass.descriptor.let { - symbolTable.declareExternalPackageFragment(it.containingDeclaration as PackageFragmentDescriptor) + symbolTable.declareExternalPackageFragmentIfNotExists(it.containingDeclaration as PackageFragmentDescriptor) } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPublicSymbolBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPublicSymbolBase.kt index 0db91937e59..ef45f4a1598 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPublicSymbolBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPublicSymbolBase.kt @@ -39,7 +39,7 @@ abstract class IrBindablePublicSymbolBase(sig, descriptor), IrFieldSymbol -class IrTypeParameterPublicSymbolImpl(sig: IdSignature, descriptor: TypeParameterDescriptor? = null): +class IrTypeParameterPublicSymbolImpl(sig: IdSignature, descriptor: TypeParameterDescriptor? = null) : IrBindablePublicSymbolBase(sig, descriptor), - IrTypeParameterSymbol \ No newline at end of file + IrTypeParameterSymbol diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt index 0b14a36a01b..ee7bfdc3673 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.util import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.name.FqName @@ -15,13 +16,17 @@ sealed class IdSignature { enum class Flags(val recursive: Boolean) { IS_EXPECT(true), IS_JAVA_FOR_KOTLIN_OVERRIDE_PROPERTY(false), - IS_NATIVE_INTEROP_LIBRARY(true); + IS_NATIVE_INTEROP_LIBRARY(true), + IS_SYNTHETIC_JAVA_PROPERTY(false); fun encode(isSet: Boolean): Long = if (isSet) 1L shl ordinal else 0L fun decode(flags: Long): Boolean = (flags and (1L shl ordinal) != 0L) } - abstract val isPublic: Boolean + /** + * Means that signature has cross-module visibility. In other words referencing declaration could found in klib if property is `true` + */ + abstract val isPubliclyVisible: Boolean open fun isPackageSignature(): Boolean = false @@ -40,13 +45,13 @@ sealed class IdSignature { open val hasTopLevel: Boolean get() = !isPackageSignature() - val isLocal: Boolean get() = !isPublic + open val isLocal: Boolean get() = !isPubliclyVisible override fun toString(): String = - "${if (isPublic) "public" else "private"} ${render()}" + "${if (isLocal) "local " else ""}${render()}" class CommonSignature(val packageFqName: String, val declarationFqName: String, val id: Long?, val mask: Long) : IdSignature() { - override val isPublic: Boolean get() = true + override val isPubliclyVisible: Boolean get() = true override fun packageFqName(): FqName = FqName(packageFqName) @@ -70,9 +75,10 @@ sealed class IdSignature { } val nameSegments = nameSegments - if (nameSegments.size == 1) return this + val adaptedMask = adaptMask(mask) + if (nameSegments.size == 1 && mask == adaptedMask) return this - return CommonSignature(packageFqName, nameSegments.first(), null, adoptedMask) + return CommonSignature(packageFqName, nameSegments.first(), null, adaptedMask) } override fun isPackageSignature(): Boolean = id == null && declarationFqName.isEmpty() @@ -93,8 +99,45 @@ sealed class IdSignature { ((packageFqName.hashCode() * 31 + declarationFqName.hashCode()) * 31 + id.hashCode()) * 31 + mask.hashCode() } - class AccessorSignature(val propertySignature: IdSignature, val accessorSignature: PublicSignature) : IdSignature() { - override val isPublic: Boolean get() = true + class CompositeSignature(val container: IdSignature, val inner: IdSignature) : IdSignature() { + override val isPubliclyVisible: Boolean + get() = true + + override val isLocal: Boolean + get() = inner.isLocal + + override fun topLevelSignature(): IdSignature { + return if (container is FileSignature) + CompositeSignature(container, inner.topLevelSignature()) + else container.topLevelSignature() + } + + override fun nearestPublicSig(): IdSignature { + return if (container is FileSignature) inner.nearestPublicSig() else container.nearestPublicSig() + } + + override fun packageFqName(): FqName { + return if (container is FileSignature) inner.packageFqName() else container.packageFqName() + } + + override fun render(): String { + return buildString { + append("[ ") + append(container) + append(" <- ") + append(inner) + append(" ]") + } + } + + override fun equals(other: Any?): Boolean = other is CompositeSignature && container == other.container && inner == other.inner + + override fun hashCode(): Int = container.hashCode() * 31 + inner.hashCode() + + } + + class AccessorSignature(val propertySignature: IdSignature, val accessorSignature: CommonSignature) : IdSignature() { + override val isPubliclyVisible: Boolean get() = true override fun topLevelSignature(): IdSignature = propertySignature.topLevelSignature() @@ -115,6 +158,78 @@ sealed class IdSignature { override fun hashCode(): Int = accessorSignature.hashCode() } + class FileSignature(val fileSymbol: IrFileSymbol) : IdSignature() { + override fun equals(other: Any?): Boolean = other is FileSignature && fileSymbol == other.fileSymbol + + override fun hashCode(): Int = fileSymbol.owner.hashCode() + + override val isPubliclyVisible: Boolean + get() = true + + override fun isPackageSignature(): Boolean = true + + override fun topLevelSignature(): IdSignature { + error("Should not reach here ($this)") + } + + override fun nearestPublicSig(): IdSignature { + error("Should not reach here ($this)") + } + + override fun packageFqName(): FqName = fileSymbol.owner.fqName + + override fun render(): String { + return "File '${fileSymbol.owner.fileEntry.name}'" + } + + override val hasTopLevel: Boolean + get() = false + } + + class LocalSignature(val localFqn: String, val hashSig: Long?, val description: String?) : IdSignature() { + override val isPubliclyVisible: Boolean + get() = false + + override val isLocal: Boolean + get() = true + + override fun topLevelSignature(): IdSignature { + error("Illegal access: Local Sig does not have toplevel (${render()}") + } + + override fun nearestPublicSig(): IdSignature { + error("Illegal access: Local Sig does not have information about its public part (${render()}") + } + + override fun packageFqName(): FqName { + error("Illegal access: Local signature does not have package (${render()}") + } + + override fun render(): String { + return buildString { + append("Local[") + append(localFqn) + hashSig?.let { + append(",") + append(it) + } + description?.let { + append(" | ") + append(it) + } + append("]") + } + } + + override fun equals(other: Any?): Boolean { + return other is LocalSignature && localFqn == other.localFqn && hashSig == other.hashSig + } + + override fun hashCode(): Int { + return (hashSig ?: 0L).toInt() * 31 + localFqn.hashCode() + } + } + // KT-42020 // This special signature is required to disambiguate fake overrides 'foo(x: T)[T = String]' and 'foo(x: String)' in the code below: // @@ -200,8 +315,11 @@ sealed class IdSignature { } // Used to reference local variable and value parameters in function - class ScopeLocalDeclaration(val id: Int, val description: String = "") : IdSignature() { - override val isPublic: Boolean get() = false + class ScopeLocalDeclaration(val id: Int, _description: String? = null) : IdSignature() { + + val description: String = _description ?: "" + + override val isPubliclyVisible: Boolean get() = false override val hasTopLevel: Boolean get() = false @@ -220,14 +338,14 @@ sealed class IdSignature { } class GlobalFileLocalSignature(val container: IdSignature, val id: Long, val filePath: String) : IdSignature() { - override val isPublic: Boolean get() = true + override val isPubliclyVisible: Boolean get() = true override fun packageFqName(): FqName = container.packageFqName() override fun topLevelSignature(): IdSignature { val topLevelContainer = container.topLevelSignature() if (topLevelContainer === container) { - if (topLevelContainer is PublicSignature && topLevelContainer.declarationFqName.isEmpty()) { + if (topLevelContainer is CommonSignature && topLevelContainer.declarationFqName.isEmpty()) { // private top level return this } @@ -247,7 +365,7 @@ sealed class IdSignature { // Used to reference local variable and value parameters in function class GlobalScopeLocalDeclaration(val id: Int, val description: String = "", val filePath: String) : IdSignature() { - override val isPublic: Boolean get() = false + override val isPubliclyVisible: Boolean get() = false override val hasTopLevel: Boolean get() = false @@ -265,8 +383,8 @@ sealed class IdSignature { override fun hashCode(): Int = id * 31 + filePath.hashCode() } - class LoweredDeclarationSignature(val original: IdSignature, val stage: Int, val index: Int): IdSignature() { - override val isPublic: Boolean get() = true + class LoweredDeclarationSignature(val original: IdSignature, val stage: Int, val index: Int) : IdSignature() { + override val isPubliclyVisible: Boolean get() = true override val hasTopLevel: Boolean get() = false @@ -286,25 +404,6 @@ sealed class IdSignature { return (index * 31 + stage) * 31 + original.hashCode() } } - - class FileSignature(val symbol: IrFileSymbol): IdSignature() { - override val isPublic: Boolean get() = false - - override val hasTopLevel: Boolean get() = false - - override fun topLevelSignature(): IdSignature = error("Is not supported for files") - - override fun nearestPublicSig(): IdSignature = error("Is not supported for files") - - override fun packageFqName(): FqName = error("Is not supported for files") - - override fun render(): String = "#${symbol.owner.fileEntry.name}" - - override fun equals(other: Any?): Boolean = - other is FileSignature && symbol == other.symbol - - override fun hashCode(): Int = symbol.hashCode() - } } interface IdSignatureComposer { @@ -312,6 +411,4 @@ interface IdSignatureComposer { fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? fun composeFieldSignature(descriptor: PropertyDescriptor): IdSignature? fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature? - - fun inFile(file: IrFileSymbol?, block: () -> Unit) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinMangler.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinMangler.kt index e03d9380162..4ef072d5062 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinMangler.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinMangler.kt @@ -29,10 +29,8 @@ interface KotlinMangler { override val manglerName: String get() = "Descriptor" - fun ClassDescriptor.isExportEnumEntry(): Boolean fun ClassDescriptor.mangleEnumEntryString(): String - fun PropertyDescriptor.isExportField(): Boolean fun PropertyDescriptor.mangleFieldString(): String } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index ad7ef4b5faf..db3df47cdd1 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -63,7 +63,7 @@ interface ReferenceSymbolTable { class SymbolTable( val signaturer: IdSignatureComposer, val irFactory: IrFactory, - val nameProvider: NameProvider = NameProvider.DEFAULT, + val nameProvider: NameProvider = NameProvider.DEFAULT ) : ReferenceSymbolTable { val lock = IrLock() @@ -224,7 +224,7 @@ class SymbolTable( } private inner class FieldSymbolTable : FlatSymbolTable() { - override fun signature(descriptor: PropertyDescriptor): IdSignature? = null + override fun signature(descriptor: PropertyDescriptor): IdSignature? = signaturer.composeFieldSignature(descriptor) } private inner class ScopedSymbolTable> @@ -370,6 +370,18 @@ class SymbolTable( ) } + fun declareExternalPackageFragmentIfNotExists(descriptor: PackageFragmentDescriptor): IrExternalPackageFragment { + return externalPackageFragmentTable.declareIfNotExists( + descriptor, + { IrExternalPackageFragmentSymbolImpl(descriptor) }, + { IrExternalPackageFragmentImpl(it, descriptor.fqName) } + ) + } + + private fun createAnonymousInitializerSymbol(descriptor: ClassDescriptor): IrAnonymousInitializerSymbol { + return IrAnonymousInitializerSymbolImpl(descriptor) + } + fun declareAnonymousInitializer( startOffset: Int, endOffset: Int, @@ -445,7 +457,7 @@ class SymbolTable( fun declareClassFromLinker(descriptor: ClassDescriptor, sig: IdSignature, factory: (IrClassSymbol) -> IrClass): IrClass { return classSymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrClassPublicSymbolImpl(sig, descriptor) }, factory) } else { declare(descriptor, { IrClassSymbolImpl(descriptor) }, factory) @@ -461,7 +473,7 @@ class SymbolTable( override fun referenceClassFromLinker(sig: IdSignature): IrClassSymbol = classSymbolTable.run { - if (sig.isPublic) referenced(sig) { IrClassPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrClassPublicSymbolImpl(sig) } else IrClassSymbolImpl() } @@ -514,7 +526,7 @@ class SymbolTable( constructorFactory: (IrConstructorSymbol) -> IrConstructor ): IrConstructor { return constructorSymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrConstructorPublicSymbolImpl(sig, descriptor) }, constructorFactory) } else { declare(descriptor, { IrConstructorSymbolImpl(descriptor) }, constructorFactory) @@ -524,7 +536,7 @@ class SymbolTable( override fun referenceConstructorFromLinker(sig: IdSignature): IrConstructorSymbol = constructorSymbolTable.run { - if (sig.isPublic) referenced(sig) { IrConstructorPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrConstructorPublicSymbolImpl(sig) } else IrConstructorSymbolImpl() } @@ -563,7 +575,7 @@ class SymbolTable( factory: (IrEnumEntrySymbol) -> IrEnumEntry ): IrEnumEntry { return enumEntrySymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrEnumEntryPublicSymbolImpl(sig, descriptor) }, factory) } else { declare(descriptor, { IrEnumEntrySymbolImpl(descriptor) }, factory) @@ -576,25 +588,26 @@ class SymbolTable( override fun referenceEnumEntryFromLinker(sig: IdSignature) = enumEntrySymbolTable.run { - if (sig.isPublic) referenced(sig) { IrEnumEntryPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrEnumEntryPublicSymbolImpl(sig) } else IrEnumEntrySymbolImpl() } val unboundEnumEntries: Set get() = enumEntrySymbolTable.unboundSymbols private fun createFieldSymbol(descriptor: PropertyDescriptor): IrFieldSymbol { - return IrFieldSymbolImpl(descriptor) + return signaturer.composeFieldSignature(descriptor)?.let { IrFieldPublicSymbolImpl(it, descriptor) } + ?: IrFieldSymbolImpl(descriptor) } @OptIn(ObsoleteDescriptorBasedAPI::class) fun declareField( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - descriptor: PropertyDescriptor, - type: IrType, - visibility: DescriptorVisibility? = null, - fieldFactory: (IrFieldSymbol) -> IrField = { + startOffset: Int, + endOffset: Int, + origin: IrDeclarationOrigin, + descriptor: PropertyDescriptor, + type: IrType, + visibility: DescriptorVisibility? = null, + fieldFactory: (IrFieldSymbol) -> IrField = { irFactory.createField( startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type, visibility ?: it.descriptor.visibility, !it.descriptor.isVar, it.descriptor.isEffectivelyExternal(), @@ -636,8 +649,8 @@ class SymbolTable( fun declareFieldFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrFieldSymbol) -> IrField): IrField { return fieldSymbolTable.run { - require(sig.isLocal) - declare(descriptor, { IrFieldSymbolImpl(descriptor) }, factory) + require(sig.isLocal || sig.isPubliclyVisible) + declare(descriptor, { if (sig.isPubliclyVisible) IrFieldPublicSymbolImpl(sig, descriptor) else IrFieldSymbolImpl() }, factory) } } @@ -646,8 +659,7 @@ class SymbolTable( override fun referenceFieldFromLinker(sig: IdSignature) = fieldSymbolTable.run { - require(sig.isLocal) - IrFieldSymbolImpl() + if (sig.isPubliclyVisible) IrFieldPublicSymbolImpl(sig) else IrFieldSymbolImpl() } val unboundFields: Set get() = fieldSymbolTable.unboundSymbols @@ -712,7 +724,7 @@ class SymbolTable( fun declarePropertyFromLinker(descriptor: PropertyDescriptor, sig: IdSignature, factory: (IrPropertySymbol) -> IrProperty): IrProperty { return propertySymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrPropertyPublicSymbolImpl(sig, descriptor) }, factory) } else { declare(descriptor, { IrPropertySymbolImpl(descriptor) }, factory) @@ -728,7 +740,7 @@ class SymbolTable( override fun referencePropertyFromLinker(sig: IdSignature): IrPropertySymbol = propertySymbolTable.run { - if (sig.isPublic) referenced(sig) { IrPropertyPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrPropertyPublicSymbolImpl(sig) } else IrPropertySymbolImpl() } @@ -749,7 +761,7 @@ class SymbolTable( factory: (IrTypeAliasSymbol) -> IrTypeAlias ): IrTypeAlias { return typeAliasSymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrTypeAliasPublicSymbolImpl(sig, descriptor) }, factory) } else { declare(descriptor, { IrTypeAliasSymbolImpl(descriptor) }, factory) @@ -759,7 +771,7 @@ class SymbolTable( override fun referenceTypeAliasFromLinker(sig: IdSignature) = typeAliasSymbolTable.run { - if (sig.isPublic) referenced(sig) { IrTypeAliasPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrTypeAliasPublicSymbolImpl(sig) } else IrTypeAliasSymbolImpl() } @@ -820,7 +832,7 @@ class SymbolTable( functionFactory: (IrSimpleFunctionSymbol) -> IrSimpleFunction ): IrSimpleFunction { return simpleFunctionSymbolTable.run { - if (sig.isPublic) { + if (sig.isPubliclyVisible) { declare(sig, descriptor, { IrSimpleFunctionPublicSymbolImpl(sig, descriptor) }, functionFactory) } else { declare(descriptor!!, { IrSimpleFunctionSymbolImpl(descriptor) }, functionFactory) @@ -836,7 +848,7 @@ class SymbolTable( override fun referenceSimpleFunctionFromLinker(sig: IdSignature): IrSimpleFunctionSymbol { return simpleFunctionSymbolTable.run { - if (sig.isPublic) referenced(sig) { IrSimpleFunctionPublicSymbolImpl(sig) } + if (sig.isPubliclyVisible) referenced(sig) { IrSimpleFunctionPublicSymbolImpl(sig) } else IrSimpleFunctionSymbolImpl() } } @@ -847,7 +859,8 @@ class SymbolTable( val unboundSimpleFunctions: Set get() = simpleFunctionSymbolTable.unboundSymbols private fun createTypeParameterSymbol(descriptor: TypeParameterDescriptor): IrTypeParameterSymbol { - return IrTypeParameterSymbolImpl(descriptor) + return signaturer.composeSignature(descriptor)?.let { IrTypeParameterPublicSymbolImpl(it, descriptor) } + ?: IrTypeParameterSymbolImpl(descriptor) } @OptIn(ObsoleteDescriptorBasedAPI::class) @@ -874,7 +887,6 @@ class SymbolTable( symbolFactory: () -> IrTypeParameterSymbol, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter ): IrTypeParameter { - require(sig.isLocal) return globalTypeParameterSymbolTable.declare(sig, symbolFactory, typeParameterFactory) } @@ -883,8 +895,7 @@ class SymbolTable( sig: IdSignature, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter ): IrTypeParameter { - require(sig.isLocal) - return globalTypeParameterSymbolTable.declare(descriptor, { IrTypeParameterSymbolImpl(descriptor) }, typeParameterFactory) + return globalTypeParameterSymbolTable.declare(descriptor, { if (sig.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(sig, descriptor) else IrTypeParameterSymbolImpl(descriptor) }, typeParameterFactory) } @OptIn(ObsoleteDescriptorBasedAPI::class) @@ -908,11 +919,10 @@ class SymbolTable( fun declareScopedTypeParameter( sig: IdSignature, - symbolFactory: () -> IrTypeParameterSymbol, + symbolFactory: (IdSignature) -> IrTypeParameterSymbol, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter ): IrTypeParameter { - require(sig.isLocal) - return typeParameterFactory(symbolFactory()) + return typeParameterFactory(symbolFactory(sig)) } fun declareScopedTypeParameterFromLinker( @@ -920,8 +930,7 @@ class SymbolTable( sig: IdSignature, typeParameterFactory: (IrTypeParameterSymbol) -> IrTypeParameter ): IrTypeParameter { - require(sig.isLocal) - return scopedTypeParameterSymbolTable.declare(descriptor, { IrTypeParameterSymbolImpl(descriptor) }, typeParameterFactory) + return scopedTypeParameterSymbolTable.declare(descriptor, { if (sig.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(sig, descriptor) else IrTypeParameterSymbolImpl(descriptor) }, typeParameterFactory) } val unboundTypeParameters: Set get() = globalTypeParameterSymbolTable.unboundSymbols diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt index 7e5ef1c46f6..fd2b42bd548 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt @@ -44,6 +44,8 @@ abstract class TypeTranslator( private val erasureStack = Stack() + protected abstract fun isTypeAliasAccessibleHere(typeAliasDescriptor: TypeAliasDescriptor): Boolean + fun enterScope(irElement: IrTypeParametersContainer) { typeParametersResolver.enterTypeParameterScope(irElement) if (enterTableScope) { @@ -166,7 +168,12 @@ abstract class TypeTranslator( private fun SimpleType.toIrTypeAbbreviation(): IrTypeAbbreviation? { // Abbreviated type's classifier might not be TypeAliasDescriptor in case it's MockClassDescriptor (not found in dependencies). - val typeAliasDescriptor = constructor.declarationDescriptor as? TypeAliasDescriptor ?: return null + val typeAliasDescriptor = constructor.declarationDescriptor.let { + it as? TypeAliasDescriptor + } ?: return null + + if (!isTypeAliasAccessibleHere(typeAliasDescriptor)) return null + return IrTypeAbbreviationImpl( symbolTable.referenceTypeAlias(typeAliasDescriptor), isMarkedNullable, diff --git a/compiler/ir/serialization.common/src/KotlinIr.proto b/compiler/ir/serialization.common/src/KotlinIr.proto index 4617ae4cf4a..8ba46606fb2 100644 --- a/compiler/ir/serialization.common/src/KotlinIr.proto +++ b/compiler/ir/serialization.common/src/KotlinIr.proto @@ -40,18 +40,29 @@ message AccessorIdSignature { message FileLocalIdSignature { required int32 container = 1; required int64 local_id = 2; - optional int32 file = 3; + optional int32 debug_info = 3; + optional int32 file = 101; } +message CompositeSignature { + required int32 container_sig = 1; + required int32 inner_sig = 2; +} + +message LocalSignature { + repeated int32 local_fq_name = 1 [packed=true]; + optional int64 local_hash = 2; + optional int32 description = 3; // debug information +} + +message FileSignature {} + message LoweredIdSignature { required int32 parent_signature = 1; required int32 stage = 2; required int32 index = 3; } -message FileSignature { -} - message ScopeLocalIdSignature { required int32 id = 1; optional int32 file = 2; @@ -63,10 +74,12 @@ message IdSignature { FileLocalIdSignature private_sig = 2; AccessorIdSignature accessor_sig = 3; int32 scoped_local_sig = 4; + CompositeSignature composite_sig = 5; + LocalSignature local_sig = 6; + FileSignature file_sig = 7; // JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations. LoweredIdSignature ic_sig = 105; - FileSignature file_sig = 106; ScopeLocalIdSignature external_scoped_local_sig = 107; } } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt index 87796b97627..bb85d2b7d67 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt @@ -84,8 +84,6 @@ abstract class BasicIrModuleDeserializer( override fun contains(idSig: IdSignature): Boolean = idSig in moduleReversedFileIndex override fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol { - assert(idSig.isPublic) - val topLevelSignature = idSig.topLevelSignature() val fileLocalDeserializationState = moduleReversedFileIndex[topLevelSignature] ?: error("No file for $topLevelSignature (@ $idSig) in module $moduleDescriptor") diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt index e4f53c4c6e3..8ad6297765f 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeclarationTable.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureSerializer import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer import org.jetbrains.kotlin.ir.declarations.IrDeclaration +import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.IdSignature @@ -57,8 +58,8 @@ open class DeclarationTable(globalTable: GlobalDeclarationTable) { // TODO: we need to disentangle signature construction with declaration tables. open val signaturer: IdSignatureSerializer = IdSignatureSerializer(globalTable.publicIdSignatureComputer, this) - private fun IrDeclaration.isLocalDeclaration(): Boolean { - return !isExportedDeclaration(this) + fun inFile(file: IrFile?, block: () -> Unit) { + signaturer.inFile(file?.symbol, block) } fun isExportedDeclaration(declaration: IrDeclaration) = globalDeclarationTable.isExportedDeclaration(declaration) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt index b10c31c6c11..a8580747e5c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt @@ -6,7 +6,10 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.DeserializedDescriptor +import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index bfc5a00b2d8..69a9dd646a5 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -259,10 +259,10 @@ class IrDeclarationDeserializer( sig = p.second declareGlobalTypeParameter(sig, { symbol }, factory) } else { - val symbolData = BinarySymbolData - .decode(proto.base.symbol) + val symbolData = BinarySymbolData.decode(proto.base.symbol) sig = symbolDeserializer.deserializeIdSignature(symbolData.signatureId) - declareScopedTypeParameter(sig, { IrTypeParameterSymbolImpl() }, factory) + declareScopedTypeParameter(sig, { + if (it.isPubliclyVisible) IrTypeParameterPublicSymbolImpl(it) else IrTypeParameterSymbolImpl() }, factory) } } @@ -433,7 +433,11 @@ class IrDeclarationDeserializer( */ private fun IrType.checkObjectLeak(): Boolean { return if (this is IrSimpleType) { - classifier.let { !it.isPublicApi && it !is IrTypeParameterSymbol } || arguments.any { it.typeOrNull?.checkObjectLeak() == true } + val signature = classifier.signature + + val possibleLeakedClassifier = (signature == null || signature.isLocal) && classifier !is IrTypeParameterSymbol + + possibleLeakedClassifier || arguments.any { it.typeOrNull?.checkObjectLeak() == true } } else false } @@ -747,7 +751,7 @@ class IrDeclarationDeserializer( else -> return false } if (symbol !is IrPublicSymbolBase<*>) return false - if (!symbol.signature.isPublic) return false + if (!symbol.signature.isPubliclyVisible) return false return when (proto.declaratorCase!!) { IR_FUNCTION -> FunctionFlags.decode(proto.irFunction.base.base.flags).isFakeOverride diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index 29902c19eec..3dd0dc4eb87 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -78,7 +78,6 @@ class FileDeserializationState( ::addIdSignature, linker::handleExpectActualMapping, ) { idSig, symbolKind -> - assert(idSig.isPublic) val topLevelSig = idSig.topLevelSignature() val actualModuleDeserializer = diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index 42722897196..c5a687e44c4 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature as ProtoAccessorIdSignature import org.jetbrains.kotlin.backend.common.serialization.proto.Actual as ProtoActual +import org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature as ProtoCompositeSignature import org.jetbrains.kotlin.backend.common.serialization.proto.FieldAccessCommon as ProtoFieldAccessCommon import org.jetbrains.kotlin.backend.common.serialization.proto.FileEntry as ProtoFileEntry import org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature as ProtoFileLocalIdSignature @@ -108,6 +109,7 @@ import org.jetbrains.kotlin.backend.common.serialization.proto.IrVarargElement a import org.jetbrains.kotlin.backend.common.serialization.proto.IrVariable as ProtoVariable import org.jetbrains.kotlin.backend.common.serialization.proto.IrWhen as ProtoWhen import org.jetbrains.kotlin.backend.common.serialization.proto.IrWhile as ProtoWhile +import org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature as ProtoLocalSignature import org.jetbrains.kotlin.backend.common.serialization.proto.Loop as ProtoLoop import org.jetbrains.kotlin.backend.common.serialization.proto.MemberAccessCommon as ProtoMemberAccessCommon import org.jetbrains.kotlin.backend.common.serialization.proto.NullableIrExpression as ProtoNullableIrExpression @@ -238,6 +240,30 @@ open class IrFileSerializer( private fun serializeScopeLocalSignature(signature: IdSignature.ScopeLocalDeclaration): Int = signature.id + private fun serializeCompositeSignature(signature: IdSignature.CompositeSignature): ProtoCompositeSignature { + val proto = ProtoCompositeSignature.newBuilder() + + proto.containerSig = protoIdSignature(signature.container) + proto.innerSig = protoIdSignature(signature.inner) + + return proto.build() + } + + @Suppress("UNUSED_PARAMETER") + private fun serializeFileSignature(signature: IdSignature.FileSignature): ProtoFileSignature = ProtoFileSignature.getDefaultInstance() + + private fun serializeLocalSignature(signature: IdSignature.LocalSignature): ProtoLocalSignature { + val proto = ProtoLocalSignature.newBuilder() + + proto.addAllLocalFqName(serializeFqName(signature.localFqn)) + signature.hashSig?.let { proto.localHash = it } + if (addDebugInfo) { + signature.description?.let { proto.description = serializeDebugInfo(it) } + } + + return proto.build() + } + private fun serializePrivateSignature(signature: IdSignature.GlobalFileLocalSignature): ProtoFileLocalIdSignature { val proto = ProtoFileLocalIdSignature.newBuilder() @@ -257,10 +283,6 @@ open class IrFileSerializer( return proto.build() } - private fun serializeFileSignature(): ProtoFileSignature { - return ProtoFileSignature.newBuilder().build() - } - private fun serializeLoweredDeclarationSignature(signature: IdSignature.LoweredDeclarationSignature): ProtoLoweredIdSignature { val proto = ProtoLoweredIdSignature.newBuilder() @@ -271,15 +293,18 @@ open class IrFileSerializer( return proto.build() } - fun serializeIdSignature(idSignature: IdSignature): ProtoIdSignature { + private fun serializeIdSignature(idSignature: IdSignature): ProtoIdSignature { val proto = ProtoIdSignature.newBuilder() when (idSignature) { is IdSignature.CommonSignature -> proto.publicSig = serializePublicSignature(idSignature) is IdSignature.AccessorSignature -> proto.accessorSig = serializeAccessorSignature(idSignature) is IdSignature.FileLocalSignature -> proto.privateSig = serializePrivateSignature(idSignature) is IdSignature.ScopeLocalDeclaration -> proto.scopedLocalSig = serializeScopeLocalSignature(idSignature) + is IdSignature.CompositeSignature -> proto.compositeSig = serializeCompositeSignature(idSignature) + is IdSignature.LocalSignature -> proto.localSig = serializeLocalSignature(idSignature) + is IdSignature.FileSignature -> proto.fileSig = serializeFileSignature(idSignature) + // IR IC part is IdSignature.LoweredDeclarationSignature -> proto.icSig = serializeLoweredDeclarationSignature(idSignature) - is IdSignature.FileSignature -> proto.fileSig = serializeFileSignature() is IdSignature.GlobalFileLocalSignature -> proto.privateSig = serializePrivateSignature(idSignature) is IdSignature.GlobalScopeLocalDeclaration -> proto.externalScopedLocalSig = serializeScopeLocalSignature(idSignature) } @@ -1472,6 +1497,16 @@ open class IrFileSerializer( } fun serializeIrFile(file: IrFile): SerializedIrFile { + var result: SerializedIrFile? = null + + declarationTable.inFile(file) { + result = serializeIrFileImpl(file) + } + + return result!! + } + + private fun serializeIrFileImpl(file: IrFile): SerializedIrFile { val topLevelDeclarations = mutableListOf() val proto = ProtoFile.newBuilder() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt index d7ad3dc43cd..16bb253b774 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrSymbolDeserializer.kt @@ -5,9 +5,13 @@ package org.jetbrains.kotlin.backend.common.serialization -import org.jetbrains.kotlin.backend.common.serialization.encodings.* +import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.backend.common.serialization.proto.Actual import org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature.IdsigCase.* +import org.jetbrains.kotlin.ir.symbols.IrFileSymbol +import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol +import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol +import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.declarations.path import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl @@ -18,8 +22,11 @@ import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.protobuf.CodedInputStream import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite import org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature as ProtoAccessorIdSignature +import org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature as ProtoLocalSignature +import org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature as ProtoCompositeSignature import org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature as ProtoFileLocalIdSignature import org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature as ProtoScopeLocalIdSignature +import org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature as ProtoFileSignature import org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature as ProtoIdSignature import org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature as ProtoLoweredIdSignature import org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature as ProtoCommonIdSignature @@ -37,6 +44,8 @@ class IrSymbolDeserializer( val deserializePublicSymbol: (IdSignature, BinarySymbolData.SymbolKind) -> IrSymbol, ) { + private val fileSignature: IdSignature.FileSignature = IdSignature.FileSignature(fileSymbol) + fun deserializeIrSymbol(idSig: IdSignature, symbolKind: BinarySymbolData.SymbolKind): IrSymbol { return deserializedSymbols.getOrPut(idSig) { val symbol = referenceDeserializedSymbol(symbolKind, idSig) @@ -62,7 +71,7 @@ class IrSymbolDeserializer( BinarySymbolData.SymbolKind.RECEIVER_PARAMETER_SYMBOL -> IrValueParameterSymbolImpl() BinarySymbolData.SymbolKind.LOCAL_DELEGATED_PROPERTY_SYMBOL -> IrLocalDelegatedPropertySymbolImpl() - BinarySymbolData.SymbolKind.FILE_SYMBOL -> (idSig as IdSignature.FileSignature).symbol + BinarySymbolData.SymbolKind.FILE_SYMBOL -> (idSig as IdSignature.FileSignature).fileSymbol else -> error("Unexpected classifier symbol kind: $symbolKind for signature $idSig") } } @@ -174,14 +183,33 @@ class IrSymbolDeserializer( return IdSignature.LoweredDeclarationSignature(deserializeIdSignature(proto.parentSignature), proto.stage, proto.index) } + private fun deserializeCompositeIdSignature(proto: ProtoCompositeSignature): IdSignature.CompositeSignature { + val containerSig = deserializeIdSignature(proto.containerSig) + val innerSig = deserializeIdSignature(proto.innerSig) + return IdSignature.CompositeSignature(containerSig, innerSig) + } + + private fun deserializeLocalIdSignature(proto: ProtoLocalSignature): IdSignature.LocalSignature { + val localFqn = fileReader.deserializeFqName(proto.localFqNameList) + val localHash = if (proto.hasLocalHash()) proto.localHash else null + val description = if (proto.hasDescription()) fileReader.deserializeDebugInfo(proto.description) else null + return IdSignature.LocalSignature(localFqn, localHash, description) + } + + @Suppress("UNUSED_PARAMETER") + private fun deserializeFileIdSignature(proto: ProtoFileSignature): IdSignature.FileSignature = fileSignature + fun deserializeSignatureData(proto: ProtoIdSignature): IdSignature { return when (proto.idsigCase) { PUBLIC_SIG -> deserializePublicIdSignature(proto.publicSig) ACCESSOR_SIG -> deserializeAccessorIdSignature(proto.accessorSig) PRIVATE_SIG -> deserializeFileLocalIdSignature(proto.privateSig) SCOPED_LOCAL_SIG -> deserializeScopeLocalIdSignature(proto.scopedLocalSig) + COMPOSITE_SIG -> deserializeCompositeIdSignature(proto.compositeSig) + LOCAL_SIG -> deserializeLocalIdSignature(proto.localSig) + FILE_SIG -> deserializeFileIdSignature(proto.fileSig) + // IR IC part IC_SIG -> deserializeLoweredDeclarationSignature(proto.icSig) - FILE_SIG -> IdSignature.FileSignature(fileSymbol) EXTERNAL_SCOPED_LOCAL_SIG -> deserializeExternalScopeLocalIdSignature(proto.externalScopedLocalSig) else -> error("Unexpected IdSignature kind: ${proto.idsigCase}") } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index 8ca92a79023..7336e0a06fd 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -23,6 +23,10 @@ import org.jetbrains.kotlin.ir.util.IrMessageLogger import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.file import org.jetbrains.kotlin.library.IrLibrary +import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.IrMessageLogger +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.file import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.module @@ -104,18 +108,17 @@ abstract class KotlinIrLinker( } private fun findDeserializedDeclarationForSymbol(symbol: IrSymbol): DeclarationDescriptor? { - assert(symbol.isPublicApi || symbol.descriptor.module === currentModule || platformSpecificSymbol(symbol)) if (symbol in triedToDeserializeDeclarationForSymbol || symbol in deserializedSymbols) { return null } triedToDeserializeDeclarationForSymbol.add(symbol) + if (!symbol.hasDescriptor) return null val descriptor = symbol.descriptor val moduleDeserializer = resolveModuleDeserializer(descriptor.module, symbol.signature) -// moduleDeserializer.deserializeIrSymbol(signature, symbol.kind()) moduleDeserializer.declareIrSymbol(symbol) deserializeAllReachableTopLevels() @@ -149,9 +152,11 @@ abstract class KotlinIrLinker( override fun getDeclaration(symbol: IrSymbol): IrDeclaration? { if (!symbol.isPublicApi) { - val descriptor = symbol.descriptor - if (!platformSpecificSymbol(symbol)) { - if (descriptor.module !== currentModule) return null + if (symbol.hasDescriptor) { + val descriptor = symbol.descriptor + if (!platformSpecificSymbol(symbol)) { + if (descriptor.module !== currentModule) return null + } } } @@ -173,14 +178,14 @@ abstract class KotlinIrLinker( } override fun tryReferencingSimpleFunctionByLocalSignature(parent: IrDeclaration, idSignature: IdSignature): IrSimpleFunctionSymbol? { - if (idSignature.isPublic) return null + if (idSignature.isPubliclyVisible) return null val file = parent.file val moduleDescriptor = file.packageFragmentDescriptor.containingDeclaration return resolveModuleDeserializer(moduleDescriptor, null).referenceSimpleFunctionByLocalSignature(file, idSignature) } override fun tryReferencingPropertyByLocalSignature(parent: IrDeclaration, idSignature: IdSignature): IrPropertySymbol? { - if (idSignature.isPublic) return null + if (idSignature.isPubliclyVisible) return null val file = parent.file val moduleDescriptor = file.packageFragmentDescriptor.containingDeclaration return resolveModuleDeserializer(moduleDescriptor, null).referencePropertyByLocalSignature(file, idSignature) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt index 11b25a989f6..25c2e0ef0ce 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/MangleConstant.kt @@ -17,17 +17,18 @@ enum class MangleConstant(val prefix: Char, val separator: Char, val suffix: Cha const val STAR_MARK = '*' const val Q_MARK = '?' const val ENHANCED_NULLABILITY_MARK = "{EnhancedNullability}" - const val EXPECT_MARK = "#expect" - const val UNKNOWN_MARK = "" const val DYNAMIC_MARK = "" const val ERROR_MARK = "" const val ERROR_DECLARATION = "" const val STATIC_MEMBER_MARK = "#static" + const val TYPE_PARAMETER_MARKER_NAME = "" + const val TYPE_PARAMETER_MARKER_NAME_SETTER = "" + const val BACKING_FIELD_NAME = "" + const val ANON_INIT_NAME_PREFIX = ", KotlinExportChecker { @@ -22,10 +22,12 @@ abstract class DescriptorExportCheckerVisitor : DeclarationDescriptorVisitor, KotlinMangleComputer { + DeclarationDescriptorVisitor, KotlinMangleComputer { override fun computeMangle(declaration: DeclarationDescriptor): String { - declaration.accept(this, true) + declaration.accept(this, null) return builder.toString() } @@ -62,7 +64,7 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr private fun DeclarationDescriptor.mangleSimpleDeclaration(name: String) { val l = builder.length - containingDeclaration?.accept(this@DescriptorMangleComputer, false) + containingDeclaration?.accept(this@DescriptorMangleComputer, null) if (builder.length != l) builder.appendName(MangleConstant.FQN_SEPARATOR) @@ -92,7 +94,7 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr isRealExpect = isRealExpect or isExpect typeParameterContainer.add(container) - container.containingDeclaration.accept(this@DescriptorMangleComputer, false) + container.containingDeclaration.accept(this@DescriptorMangleComputer, null) builder.appendName(MangleConstant.FUNCTION_NAME_PREFIX) @@ -170,7 +172,7 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr } } else { when (val classifier = type.constructor.declarationDescriptor) { - is ClassDescriptor -> classifier.accept(copy(MangleMode.FQNAME), false) + is ClassDescriptor -> classifier.accept(copy(MangleMode.FQNAME), null) is TypeParameterDescriptor -> tBuilder.mangleTypeParameterReference(classifier) else -> error("Unexpected classifier: $classifier") } @@ -223,84 +225,94 @@ abstract class DescriptorMangleComputer(protected val builder: StringBuilder, pr appendSignature(typeParameter.index) } - override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: Boolean) { + override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: Nothing?) { descriptor.fqName.let { if (!it.isRoot) builder.appendName(it.asString()) } } - override fun visitPackageViewDescriptor(descriptor: PackageViewDescriptor, data: Boolean) = reportUnexpectedDescriptor(descriptor) + override fun visitPackageViewDescriptor(descriptor: PackageViewDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) - override fun visitVariableDescriptor(descriptor: VariableDescriptor, data: Boolean) = reportUnexpectedDescriptor(descriptor) + override fun visitVariableDescriptor(descriptor: VariableDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) - override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, data: Boolean) { + override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, data: Nothing?) { descriptor.mangleFunction(false, descriptor) } - override fun visitTypeParameterDescriptor(descriptor: TypeParameterDescriptor, data: Boolean) { + override fun visitTypeParameterDescriptor(descriptor: TypeParameterDescriptor, data: Nothing?) { descriptor.containingDeclaration.accept(this, data) builder.appendSignature(MangleConstant.TYPE_PARAM_INDEX_PREFIX) builder.appendSignature(descriptor.index) } - override fun visitClassDescriptor(descriptor: ClassDescriptor, data: Boolean) { + override fun visitClassDescriptor(descriptor: ClassDescriptor, data: Nothing?) { isRealExpect = isRealExpect or descriptor.isExpect typeParameterContainer.add(descriptor) descriptor.mangleSimpleDeclaration(descriptor.name.asString()) } - override fun visitTypeAliasDescriptor(descriptor: TypeAliasDescriptor, data: Boolean) { + override fun visitTypeAliasDescriptor(descriptor: TypeAliasDescriptor, data: Nothing?) { descriptor.mangleSimpleDeclaration(descriptor.name.asString()) } - override fun visitModuleDeclaration(descriptor: ModuleDescriptor, data: Boolean) = reportUnexpectedDescriptor(descriptor) + override fun visitModuleDeclaration(descriptor: ModuleDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) - override fun visitConstructorDescriptor(constructorDescriptor: ConstructorDescriptor, data: Boolean) { + override fun visitConstructorDescriptor(constructorDescriptor: ConstructorDescriptor, data: Nothing?) { constructorDescriptor.mangleFunction(isCtor = true, container = constructorDescriptor) } - override fun visitScriptDescriptor(scriptDescriptor: ScriptDescriptor, data: Boolean) = reportUnexpectedDescriptor(scriptDescriptor) + override fun visitScriptDescriptor(scriptDescriptor: ScriptDescriptor, data: Nothing?) = + visitClassDescriptor(scriptDescriptor, data) - override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Boolean) { - val extensionReceiver = descriptor.extensionReceiverParameter + override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Nothing?) { - isRealExpect = isRealExpect or descriptor.isExpect + if (descriptor is IrImplementingDelegateDescriptor) { + descriptor.mangleSimpleDeclaration(descriptor.name.asString()) + } else { - typeParameterContainer.add(descriptor) - descriptor.containingDeclaration.accept(this, false) + val actualDescriptor = (descriptor as? IrPropertyDelegateDescriptor)?.correspondingProperty ?: descriptor - if (descriptor.isRealStatic) { - builder.appendSignature(MangleConstant.STATIC_MEMBER_MARK) - } + val extensionReceiver = actualDescriptor.extensionReceiverParameter - if (extensionReceiver != null) { - builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX) - mangleExtensionReceiverParameter(builder, extensionReceiver) - } + isRealExpect = isRealExpect or actualDescriptor.isExpect - descriptor.typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) } + typeParameterContainer.add(actualDescriptor) + actualDescriptor.containingDeclaration.accept(this, data) - builder.append(descriptor.name.asString()) + if (actualDescriptor.isRealStatic) { + builder.appendSignature(MangleConstant.STATIC_MEMBER_MARK) + } - descriptor.platformSpecificSuffix()?.let { - builder.appendSignature(it) + if (extensionReceiver != null) { + builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX) + mangleExtensionReceiverParameter(builder, extensionReceiver) + } + + actualDescriptor.typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) } + + builder.append(actualDescriptor.name.asString()) + + actualDescriptor.platformSpecificSuffix()?.let { + builder.appendSignature(it) + } } } - override fun visitValueParameterDescriptor(descriptor: ValueParameterDescriptor, data: Boolean) = reportUnexpectedDescriptor(descriptor) + override fun visitValueParameterDescriptor(descriptor: ValueParameterDescriptor, data: Nothing?) = + reportUnexpectedDescriptor(descriptor) private fun manglePropertyAccessor(accessor: PropertyAccessorDescriptor) { val property = accessor.correspondingProperty accessor.mangleFunction(false, property) } - override fun visitPropertyGetterDescriptor(descriptor: PropertyGetterDescriptor, data: Boolean) { + override fun visitPropertyGetterDescriptor(descriptor: PropertyGetterDescriptor, data: Nothing?) { manglePropertyAccessor(descriptor) } - override fun visitPropertySetterDescriptor(descriptor: PropertySetterDescriptor, data: Boolean) { + override fun visitPropertySetterDescriptor(descriptor: PropertySetterDescriptor, data: Nothing?) { manglePropertyAccessor(descriptor) } - override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor, data: Boolean) = + override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) } \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt index 32ab41e9082..8d77c1eb0e7 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt @@ -17,62 +17,108 @@ import org.jetbrains.kotlin.ir.util.constructedClass import org.jetbrains.kotlin.ir.util.hasAnnotation import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames -abstract class IrExportCheckerVisitor : IrElementVisitor, KotlinExportChecker { +abstract class IrExportCheckerVisitor(private val compatibleMode: Boolean) : KotlinExportChecker { + + private val compatibleChecker = CompatibleChecker() + private val newChecker = NewChecker() override fun check(declaration: IrDeclaration, type: SpecialDeclarationType): Boolean { - return declaration.accept(this, null) + return declaration.accept(if (compatibleMode) compatibleChecker else newChecker, null) } abstract override fun IrDeclaration.isPlatformSpecificExported(): Boolean - private fun IrDeclaration.isExported(annotations: List, visibility: DescriptorVisibility?): Boolean { - val speciallyExported = annotations.hasAnnotation(publishedApiAnnotation) || isPlatformSpecificExported() + private class NewChecker : IrElementVisitor { + override fun visitElement(element: IrElement, data: Nothing?): Boolean { + error("Should bot reach here ${element.render()}") + } - val selfExported = speciallyExported || visibility == null || visibility.isPubliclyVisible() + override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): Boolean { + val visibility = (declaration as? IrDeclarationWithVisibility)?.visibility - return selfExported && parent.accept(this@IrExportCheckerVisitor, null) + if (visibility == DescriptorVisibilities.LOCAL) + return false + + return declaration.parent.accept(this, data) + } + + override fun visitClass(declaration: IrClass, data: Nothing?): Boolean { + if (declaration.name.isAnonymous) return false + return super.visitClass(declaration, data) + } + + override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?): Boolean { + if (declaration.name.isAnonymous) return false + return super.visitSimpleFunction(declaration, data) + } + + override fun visitPackageFragment(declaration: IrPackageFragment, data: Nothing?): Boolean = true + + override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?): Boolean = false + + override fun visitVariable(declaration: IrVariable, data: Nothing?): Boolean = false + + override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?): Boolean = false + + override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?): Boolean = false + + override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?): Boolean = false } - private fun DescriptorVisibility.isPubliclyVisible(): Boolean = isPublicAPI || this === DescriptorVisibilities.INTERNAL + private inner class CompatibleChecker : IrElementVisitor { + private fun IrDeclaration.isExported(annotations: List, visibility: DescriptorVisibility?): Boolean { + val speciallyExported = annotations.hasAnnotation(publishedApiAnnotation) || isPlatformSpecificExported() - override fun visitElement(element: IrElement, data: Nothing?): Boolean = error("Should bot reach here ${element.render()}") + val selfExported = speciallyExported || visibility == null || visibility.isPubliclyVisible() - override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = declaration.run { isExported(annotations, null) } + return selfExported && parent.accept(this@CompatibleChecker, null) + } - override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?) = false - override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = false - override fun visitVariable(declaration: IrVariable, data: Nothing?) = false - override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?) = false - override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?): Boolean = false + private fun DescriptorVisibility.isPubliclyVisible(): Boolean = isPublicAPI || this === DescriptorVisibilities.INTERNAL - override fun visitTypeParameter(declaration: IrTypeParameter, data: Nothing?) = false + override fun visitElement(element: IrElement, data: Nothing?): Boolean = error("Should bot reach here ${element.render()}") - override fun visitField(declaration: IrField, data: Nothing?) = false + override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = declaration.run { isExported(annotations, null) } - override fun visitProperty(declaration: IrProperty, data: Nothing?): Boolean { - return declaration.run { isExported(annotations, visibility) } - } + override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?) = false + override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = false + override fun visitVariable(declaration: IrVariable, data: Nothing?) = false + override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?) = false + override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?): Boolean = false - override fun visitPackageFragment(declaration: IrPackageFragment, data: Nothing?): Boolean = true + override fun visitTypeParameter(declaration: IrTypeParameter, data: Nothing?) = false - override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): Boolean = - if (declaration.parent is IrPackageFragment) true - else declaration.run { isExported(annotations, visibility) } + override fun visitField(declaration: IrField, data: Nothing?) = false - override fun visitClass(declaration: IrClass, data: Nothing?): Boolean { - if (declaration.name == SpecialNames.NO_NAME_PROVIDED) return false - return declaration.run { isExported(annotations, visibility) } - } + override fun visitProperty(declaration: IrProperty, data: Nothing?): Boolean { + return declaration.run { isExported(annotations, visibility) } + } - override fun visitConstructor(declaration: IrConstructor, data: Nothing?): Boolean { - val klass = declaration.constructedClass - return if (klass.kind.isSingleton) klass.accept(this, null) else declaration.run { isExported(annotations, visibility) } - } + override fun visitPackageFragment(declaration: IrPackageFragment, data: Nothing?): Boolean = true - override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?): Boolean { - val annotations = declaration.run { correspondingPropertySymbol?.owner?.annotations ?: annotations } - return declaration.run { isExported(annotations, visibility) } + override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?): Boolean = + if (declaration.parent is IrPackageFragment) true + else declaration.run { isExported(annotations, visibility) } + + override fun visitClass(declaration: IrClass, data: Nothing?): Boolean { + if (declaration.name == SpecialNames.NO_NAME_PROVIDED) return false + return declaration.run { isExported(annotations, visibility) } + } + + override fun visitConstructor(declaration: IrConstructor, data: Nothing?): Boolean { + val klass = declaration.constructedClass + return if (klass.kind.isSingleton) klass.accept(this, null) else declaration.run { isExported(annotations, visibility) } + } + + override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?): Boolean { + val annotations = declaration.run { correspondingPropertySymbol?.owner?.annotations ?: annotations } + return declaration.run { isExported(annotations, visibility) } + } } } + +val Name.isAnonymous: Boolean + get() = isSpecial && (this == SpecialNames.ANONYMOUS_FUNCTION || this == SpecialNames.NO_NAME_PROVIDED) \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt index 6a139ef05ad..9e4feb3485c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt @@ -5,7 +5,9 @@ package org.jetbrains.kotlin.backend.common.serialization.mangle.ir -import org.jetbrains.kotlin.backend.common.serialization.mangle.* +import org.jetbrains.kotlin.backend.common.serialization.mangle.KotlinMangleComputer +import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant +import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleMode import org.jetbrains.kotlin.backend.common.serialization.mangle.collectForMangler import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* @@ -14,14 +16,16 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.util.hasAnnotation import org.jetbrains.kotlin.ir.util.isVararg +import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.ir.util.render -import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid +import org.jetbrains.kotlin.ir.visitors.acceptVoid import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty abstract class IrMangleComputer(protected val builder: StringBuilder, private val mode: MangleMode) : - IrElementVisitor, KotlinMangleComputer { + IrElementVisitorVoid, KotlinMangleComputer { private val typeParameterContainer = ArrayList(4) @@ -68,13 +72,13 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va } override fun computeMangle(declaration: IrDeclaration): String { - declaration.accept(this, true) + declaration.acceptVoid(this) return builder.toString() } private fun IrDeclaration.mangleSimpleDeclaration(name: String) { val l = builder.length - parent.accept(this@IrMangleComputer, false) + parent.acceptVoid(this@IrMangleComputer) if (builder.length != l) builder.appendName(MangleConstant.FQN_SEPARATOR) @@ -86,7 +90,10 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va isRealExpect = isRealExpect or isExpect typeParameterContainer.add(container) - container.parent.accept(this@IrMangleComputer, false) + val containerParent = container.parent + val realParent = + if (containerParent is IrField && containerParent.origin == IrDeclarationOrigin.DELEGATE) containerParent.parent else containerParent + realParent.acceptVoid(this@IrMangleComputer) builder.appendName(MangleConstant.FUNCTION_NAME_PREFIX) @@ -95,7 +102,9 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va return } - builder.append(name.asString()) + val funName = name.asString() + + builder.append(funName) mangleSignature(isCtor, isStatic) } @@ -161,7 +170,7 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va when (type) { is IrSimpleType -> { when (val classifier = type.classifier) { - is IrClassSymbol -> classifier.owner.accept(copy(MangleMode.FQNAME), false) + is IrClassSymbol -> classifier.owner.acceptVoid(copy(MangleMode.FQNAME)) is IrTypeParameterSymbol -> tBuilder.mangleTypeParameterReference(classifier.owner) } @@ -193,69 +202,96 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va } } - override fun visitElement(element: IrElement, data: Boolean) = error("unexpected element ${element.render()}") + override fun visitElement(element: IrElement) = + error("unexpected element ${element.render()}") - override fun visitScript(declaration: IrScript, data: Boolean) { - declaration.parent.accept(this, data) + override fun visitScript(declaration: IrScript) { + declaration.parent.acceptVoid(this) } - override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Boolean) { + override fun visitErrorDeclaration(declaration: IrErrorDeclaration) { declaration.mangleSimpleDeclaration(MangleConstant.ERROR_DECLARATION) } - override fun visitClass(declaration: IrClass, data: Boolean) { + override fun visitClass(declaration: IrClass) { isRealExpect = isRealExpect or declaration.isExpect typeParameterContainer.add(declaration) - declaration.mangleSimpleDeclaration(declaration.name.asString()) + + val className = declaration.name.asString() + declaration.mangleSimpleDeclaration(className) } - override fun visitPackageFragment(declaration: IrPackageFragment, data: Boolean) { + override fun visitPackageFragment(declaration: IrPackageFragment) { declaration.fqName.let { if (!it.isRoot) builder.appendName(it.asString()) } } - override fun visitProperty(declaration: IrProperty, data: Boolean) { - val accessor = declaration.run { getter ?: setter ?: error("Expected at least one accessor for property ${render()}") } + override fun visitProperty(declaration: IrProperty) { + val accessor = declaration.run { getter ?: setter } + require(accessor != null || declaration.backingField != null) { + "Expected at least one accessor or backing field for property ${declaration.render()}" + } isRealExpect = isRealExpect or declaration.isExpect typeParameterContainer.add(declaration) - declaration.parent.accept(this, false) + declaration.parent.acceptVoid(this) - val isStaticProperty = accessor.dispatchReceiverParameter == null && declaration.parent !is IrPackageFragment + val isStaticProperty = accessor != null && accessor.dispatchReceiverParameter == null && declaration.parent !is IrPackageFragment if (isStaticProperty) { builder.appendSignature(MangleConstant.STATIC_MEMBER_MARK) } - accessor.extensionReceiverParameter?.let { + accessor?.extensionReceiverParameter?.let { builder.appendSignature(MangleConstant.EXTENSION_RECEIVER_PREFIX) mangleValueParameter(builder, it) } - val typeParameters = accessor.typeParameters + val typeParameters = accessor?.typeParameters ?: emptyList() typeParameters.collectForMangler(builder, MangleConstant.TYPE_PARAMETERS) { mangleTypeParameter(this, it) } builder.append(declaration.name.asString()) } - override fun visitField(declaration: IrField, data: Boolean) = - declaration.mangleSimpleDeclaration(declaration.name.asString()) + override fun visitField(declaration: IrField) { + val prop = declaration.correspondingPropertySymbol + if (prop != null) { + visitProperty(prop.owner) + } else { + declaration.mangleSimpleDeclaration(declaration.name.asString()) + } + } - override fun visitEnumEntry(declaration: IrEnumEntry, data: Boolean) { + override fun visitEnumEntry(declaration: IrEnumEntry) { declaration.mangleSimpleDeclaration(declaration.name.asString()) } - override fun visitTypeAlias(declaration: IrTypeAlias, data: Boolean) = + override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer) { + val klass = declaration.parentAsClass + val anonInitializers = klass.declarations.filterIsInstance() + + val anonName = buildString { + append(MangleConstant.ANON_INIT_NAME_PREFIX) + if (anonInitializers.size > 1) { + append(MangleConstant.LOCAL_DECLARATION_INDEX_PREFIX) + append(anonInitializers.indexOf(declaration)) + } + } + + declaration.mangleSimpleDeclaration(anonName) + } + + override fun visitTypeAlias(declaration: IrTypeAlias) = declaration.mangleSimpleDeclaration(declaration.name.asString()) - override fun visitTypeParameter(declaration: IrTypeParameter, data: Boolean) { - declaration.effectiveParent().accept(this, data) + override fun visitTypeParameter(declaration: IrTypeParameter) { + declaration.effectiveParent().acceptVoid(this) builder.appendSignature(MangleConstant.TYPE_PARAM_INDEX_PREFIX) builder.appendSignature(declaration.index) } - override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Boolean) { + override fun visitSimpleFunction(declaration: IrSimpleFunction) { isRealExpect = isRealExpect or declaration.isExpect val container = declaration.correspondingPropertySymbol?.owner ?: declaration @@ -264,6 +300,6 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va declaration.mangleFunction(false, isStatic, container) } - override fun visitConstructor(declaration: IrConstructor, data: Boolean) = + override fun visitConstructor(declaration: IrConstructor) = declaration.mangleFunction(isCtor = true, isStatic = false, declaration) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignature.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignature.java new file mode 100644 index 00000000000..4d7f38cb79f --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignature.java @@ -0,0 +1,428 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: compiler/ir/serialization.common/src/KotlinIr.proto + +package org.jetbrains.kotlin.backend.common.serialization.proto; + +/** + * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature} + */ +public final class CompositeSignature extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) + CompositeSignatureOrBuilder { + // Use CompositeSignature.newBuilder() to construct. + private CompositeSignature(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private CompositeSignature(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final CompositeSignature defaultInstance; + public static CompositeSignature getDefaultInstance() { + return defaultInstance; + } + + public CompositeSignature getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private CompositeSignature( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + containerSig_ = input.readInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + innerSig_ = input.readInt32(); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public CompositeSignature parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new CompositeSignature(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int CONTAINER_SIG_FIELD_NUMBER = 1; + private int containerSig_; + /** + * required int32 container_sig = 1; + */ + public boolean hasContainerSig() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int32 container_sig = 1; + */ + public int getContainerSig() { + return containerSig_; + } + + public static final int INNER_SIG_FIELD_NUMBER = 2; + private int innerSig_; + /** + * required int32 inner_sig = 2; + */ + public boolean hasInnerSig() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required int32 inner_sig = 2; + */ + public int getInnerSig() { + return innerSig_; + } + + private void initFields() { + containerSig_ = 0; + innerSig_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasContainerSig()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasInnerSig()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt32(1, containerSig_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeInt32(2, innerSig_); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(1, containerSig_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(2, innerSig_); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignatureOrBuilder { + // Construct using org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + containerSig_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + innerSig_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature getDefaultInstanceForType() { + return org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.getDefaultInstance(); + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature build() { + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature buildPartial() { + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature result = new org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.containerSig_ = containerSig_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.innerSig_ = innerSig_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature other) { + if (other == org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.getDefaultInstance()) return this; + if (other.hasContainerSig()) { + setContainerSig(other.getContainerSig()); + } + if (other.hasInnerSig()) { + setInnerSig(other.getInnerSig()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + if (!hasContainerSig()) { + + return false; + } + if (!hasInnerSig()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int containerSig_ ; + /** + * required int32 container_sig = 1; + */ + public boolean hasContainerSig() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int32 container_sig = 1; + */ + public int getContainerSig() { + return containerSig_; + } + /** + * required int32 container_sig = 1; + */ + public Builder setContainerSig(int value) { + bitField0_ |= 0x00000001; + containerSig_ = value; + + return this; + } + /** + * required int32 container_sig = 1; + */ + public Builder clearContainerSig() { + bitField0_ = (bitField0_ & ~0x00000001); + containerSig_ = 0; + + return this; + } + + private int innerSig_ ; + /** + * required int32 inner_sig = 2; + */ + public boolean hasInnerSig() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required int32 inner_sig = 2; + */ + public int getInnerSig() { + return innerSig_; + } + /** + * required int32 inner_sig = 2; + */ + public Builder setInnerSig(int value) { + bitField0_ |= 0x00000002; + innerSig_ = value; + + return this; + } + /** + * required int32 inner_sig = 2; + */ + public Builder clearInnerSig() { + bitField0_ = (bitField0_ & ~0x00000002); + innerSig_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) + } + + static { + defaultInstance = new CompositeSignature(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) +} diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignatureOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignatureOrBuilder.java new file mode 100644 index 00000000000..3e4ddccf529 --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/CompositeSignatureOrBuilder.java @@ -0,0 +1,27 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: compiler/ir/serialization.common/src/KotlinIr.proto + +package org.jetbrains.kotlin.backend.common.serialization.proto; + +public interface CompositeSignatureOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * required int32 container_sig = 1; + */ + boolean hasContainerSig(); + /** + * required int32 container_sig = 1; + */ + int getContainerSig(); + + /** + * required int32 inner_sig = 2; + */ + boolean hasInnerSig(); + /** + * required int32 inner_sig = 2; + */ + int getInnerSig(); +} \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignature.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignature.java index 5ab0afc6c8b..fdca648f1b8 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignature.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignature.java @@ -27,7 +27,70 @@ public final class FileLocalIdSignature extends } private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - public static final int FILE_FIELD_NUMBER = 3; + private FileLocalIdSignature( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + container_ = input.readInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + localId_ = input.readInt64(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + debugInfo_ = input.readInt32(); + break; + } + case 808: { + bitField0_ |= 0x00000008; + file_ = input.readInt32(); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } public static org.jetbrains.kotlin.protobuf.Parser PARSER = new org.jetbrains.kotlin.protobuf.AbstractParser() { public FileLocalIdSignature parsePartialFrom( @@ -73,75 +136,32 @@ public final class FileLocalIdSignature extends public long getLocalId() { return localId_; } - private int file_; - private FileLocalIdSignature( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = - org.jetbrains.kotlin.protobuf.ByteString.newOutput(); - org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = - org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( - unknownFieldsOutput, 1); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFieldsCodedOutput, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - container_ = input.readInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - localId_ = input.readInt64(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - file_ = input.readInt32(); - break; - } - } - } - } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - try { - unknownFieldsCodedOutput.flush(); - } catch (java.io.IOException e) { - // Should not happen - } finally { - unknownFields = unknownFieldsOutput.toByteString(); - } - makeExtensionsImmutable(); - } - } + public static final int DEBUG_INFO_FIELD_NUMBER = 3; + private int debugInfo_; /** - * optional int32 file = 3; + * optional int32 debug_info = 3; */ - public boolean hasFile() { + public boolean hasDebugInfo() { return ((bitField0_ & 0x00000004) == 0x00000004); } /** - * optional int32 file = 3; + * optional int32 debug_info = 3; + */ + public int getDebugInfo() { + return debugInfo_; + } + + public static final int FILE_FIELD_NUMBER = 101; + private int file_; + /** + * optional int32 file = 101; + */ + public boolean hasFile() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional int32 file = 101; */ public int getFile() { return file_; @@ -150,6 +170,7 @@ public final class FileLocalIdSignature extends private void initFields() { container_ = 0; localId_ = 0L; + debugInfo_ = 0; file_ = 0; } private byte memoizedIsInitialized = -1; @@ -180,7 +201,10 @@ public final class FileLocalIdSignature extends output.writeInt64(2, localId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeInt32(3, file_); + output.writeInt32(3, debugInfo_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeInt32(101, file_); } output.writeRawBytes(unknownFields); } @@ -201,7 +225,11 @@ public final class FileLocalIdSignature extends } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeInt32Size(3, file_); + .computeInt32Size(3, debugInfo_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(101, file_); } size += unknownFields.size(); memoizedSerializedSize = size; @@ -295,7 +323,18 @@ public final class FileLocalIdSignature extends return new Builder(); } - private int file_ ; + public Builder clear() { + super.clear(); + container_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + localId_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + debugInfo_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + file_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } public Builder clone() { return create().mergeFrom(buildPartial()); @@ -313,17 +352,6 @@ public final class FileLocalIdSignature extends return result; } - public Builder clear() { - super.clear(); - container_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - localId_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); - file_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - public org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature buildPartial() { org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature result = new org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature(this); int from_bitField0_ = bitField0_; @@ -339,11 +367,34 @@ public final class FileLocalIdSignature extends if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } + result.debugInfo_ = debugInfo_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } result.file_ = file_; result.bitField0_ = to_bitField0_; return result; } + public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature other) { + if (other == org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature.getDefaultInstance()) return this; + if (other.hasContainer()) { + setContainer(other.getContainer()); + } + if (other.hasLocalId()) { + setLocalId(other.getLocalId()); + } + if (other.hasDebugInfo()) { + setDebugInfo(other.getDebugInfo()); + } + if (other.hasFile()) { + setFile(other.getFile()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + public final boolean isInitialized() { if (!hasContainer()) { @@ -429,59 +480,75 @@ public final class FileLocalIdSignature extends return this; } - - public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature other) { - if (other == org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature.getDefaultInstance()) return this; - if (other.hasContainer()) { - setContainer(other.getContainer()); - } - if (other.hasLocalId()) { - setLocalId(other.getLocalId()); - } - if (other.hasFile()) { - setFile(other.getFile()); - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - /** * required int64 local_id = 2; */ public Builder clearLocalId() { bitField0_ = (bitField0_ & ~0x00000002); localId_ = 0L; - + return this; } + private int debugInfo_ ; /** - * optional int32 file = 3; + * optional int32 debug_info = 3; */ - public boolean hasFile() { + public boolean hasDebugInfo() { return ((bitField0_ & 0x00000004) == 0x00000004); } /** - * optional int32 file = 3; + * optional int32 debug_info = 3; + */ + public int getDebugInfo() { + return debugInfo_; + } + /** + * optional int32 debug_info = 3; + */ + public Builder setDebugInfo(int value) { + bitField0_ |= 0x00000004; + debugInfo_ = value; + + return this; + } + /** + * optional int32 debug_info = 3; + */ + public Builder clearDebugInfo() { + bitField0_ = (bitField0_ & ~0x00000004); + debugInfo_ = 0; + + return this; + } + + private int file_ ; + /** + * optional int32 file = 101; + */ + public boolean hasFile() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional int32 file = 101; */ public int getFile() { return file_; } /** - * optional int32 file = 3; + * optional int32 file = 101; */ public Builder setFile(int value) { - bitField0_ |= 0x00000004; + bitField0_ |= 0x00000008; file_ = value; return this; } /** - * optional int32 file = 3; + * optional int32 file = 101; */ public Builder clearFile() { - bitField0_ = (bitField0_ & ~0x00000004); + bitField0_ = (bitField0_ & ~0x00000008); file_ = 0; return this; diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignatureOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignatureOrBuilder.java index aadb5c94c98..b69814c6eed 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignatureOrBuilder.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/FileLocalIdSignatureOrBuilder.java @@ -26,11 +26,20 @@ public interface FileLocalIdSignatureOrBuilder extends long getLocalId(); /** - * optional int32 file = 3; + * optional int32 debug_info = 3; + */ + boolean hasDebugInfo(); + /** + * optional int32 debug_info = 3; + */ + int getDebugInfo(); + + /** + * optional int32 file = 101; */ boolean hasFile(); /** - * optional int32 file = 3; + * optional int32 file = 101; */ int getFile(); } \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignature.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignature.java index 3c892d3af36..149389e05d6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignature.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignature.java @@ -27,26 +27,6 @@ public final class IdSignature extends } private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - public static final int FILE_SIG_FIELD_NUMBER = 106; -public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; - public static final int PUBLIC_SIG_FIELD_NUMBER = 1; - public static final int PRIVATE_SIG_FIELD_NUMBER = 2; - public static final int ACCESSOR_SIG_FIELD_NUMBER = 3; - public static final int SCOPED_LOCAL_SIG_FIELD_NUMBER = 4; - public static final int IC_SIG_FIELD_NUMBER = 105;; - public static org.jetbrains.kotlin.protobuf.Parser PARSER = - new org.jetbrains.kotlin.protobuf.AbstractParser() { - public IdSignature parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new IdSignature(input, extensionRegistry); - } - }; - private int bitField0_; - private int idsigCase_ = 0; - private java.lang.Object idsig_; - private int memoizedSerializedSize = -1; private IdSignature( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -74,13 +54,13 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; break; } case 10: { - org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.Builder subBuilder = null; + org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.Builder subBuilder = null; if (idsigCase_ == 1) { - subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_).toBuilder(); + subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_).toBuilder(); } - idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.PARSER, extensionRegistry); + idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.PARSER, extensionRegistry); if (subBuilder != null) { - subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_); + subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_); idsig_ = subBuilder.buildPartial(); } idsigCase_ = 1; @@ -117,6 +97,45 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; idsig_ = input.readInt32(); break; } + case 42: { + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.Builder subBuilder = null; + if (idsigCase_ == 5) { + subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_).toBuilder(); + } + idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_); + idsig_ = subBuilder.buildPartial(); + } + idsigCase_ = 5; + break; + } + case 50: { + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.Builder subBuilder = null; + if (idsigCase_ == 6) { + subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_).toBuilder(); + } + idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_); + idsig_ = subBuilder.buildPartial(); + } + idsigCase_ = 6; + break; + } + case 58: { + org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.Builder subBuilder = null; + if (idsigCase_ == 7) { + subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_).toBuilder(); + } + idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); + idsig_ = subBuilder.buildPartial(); + } + idsigCase_ = 7; + break; + } case 842: { org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature.Builder subBuilder = null; if (idsigCase_ == 105) { @@ -130,19 +149,6 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; idsigCase_ = 105; break; } - case 850: { - org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.Builder subBuilder = null; - if (idsigCase_ == 106) { - subBuilder = ((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_).toBuilder(); - } - idsig_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); - idsig_ = subBuilder.buildPartial(); - } - idsigCase_ = 106; - break; - } case 858: { org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature.Builder subBuilder = null; if (idsigCase_ == 107) { @@ -174,42 +180,91 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; makeExtensionsImmutable(); } } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public IdSignature parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new IdSignature(input, extensionRegistry); + } + }; @java.lang.Override public org.jetbrains.kotlin.protobuf.Parser getParserForType() { return PARSER; } + private int bitField0_; + private int idsigCase_ = 0; + private java.lang.Object idsig_; + public enum IdsigCase + implements org.jetbrains.kotlin.protobuf.Internal.EnumLite { + PUBLIC_SIG(1), + PRIVATE_SIG(2), + ACCESSOR_SIG(3), + SCOPED_LOCAL_SIG(4), + COMPOSITE_SIG(5), + LOCAL_SIG(6), + FILE_SIG(7), + IC_SIG(105), + EXTERNAL_SCOPED_LOCAL_SIG(107), + IDSIG_NOT_SET(0); + private int value = 0; + private IdsigCase(int value) { + this.value = value; + } + public static IdsigCase valueOf(int value) { + switch (value) { + case 1: return PUBLIC_SIG; + case 2: return PRIVATE_SIG; + case 3: return ACCESSOR_SIG; + case 4: return SCOPED_LOCAL_SIG; + case 5: return COMPOSITE_SIG; + case 6: return LOCAL_SIG; + case 7: return FILE_SIG; + case 105: return IC_SIG; + case 107: return EXTERNAL_SCOPED_LOCAL_SIG; + case 0: return IDSIG_NOT_SET; + default: throw new java.lang.IllegalArgumentException( + "Value is undefined for this oneof enum."); + } + } + public int getNumber() { + return this.value; + } + }; + public IdsigCase getIdsigCase() { return IdsigCase.valueOf( idsigCase_); } + public static final int PUBLIC_SIG_FIELD_NUMBER = 1; /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ public boolean hasPublicSig() { return idsigCase_ == 1; } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ - public org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature getPublicSig() { + public org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature getPublicSig() { if (idsigCase_ == 1) { - return (org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_; + return (org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_; } - return org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.getDefaultInstance(); + return org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.getDefaultInstance(); } + public static final int PRIVATE_SIG_FIELD_NUMBER = 2; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature private_sig = 2; */ public boolean hasPrivateSig() { return idsigCase_ == 2; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature private_sig = 2; */ @@ -220,13 +275,13 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature.getDefaultInstance(); } + public static final int ACCESSOR_SIG_FIELD_NUMBER = 3; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature accessor_sig = 3; */ public boolean hasAccessorSig() { return idsigCase_ == 3; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature accessor_sig = 3; */ @@ -237,13 +292,13 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature.getDefaultInstance(); } + public static final int SCOPED_LOCAL_SIG_FIELD_NUMBER = 4; /** * optional int32 scoped_local_sig = 4; */ public boolean hasScopedLocalSig() { return idsigCase_ == 4; } - /** * optional int32 scoped_local_sig = 4; */ @@ -254,15 +309,74 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return 0; } + public static final int COMPOSITE_SIG_FIELD_NUMBER = 5; + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public boolean hasCompositeSig() { + return idsigCase_ == 5; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature getCompositeSig() { + if (idsigCase_ == 5) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.getDefaultInstance(); + } + + public static final int LOCAL_SIG_FIELD_NUMBER = 6; + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public boolean hasLocalSig() { + return idsigCase_ == 6; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature getLocalSig() { + if (idsigCase_ == 6) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.getDefaultInstance(); + } + + public static final int FILE_SIG_FIELD_NUMBER = 7; + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public boolean hasFileSig() { + return idsigCase_ == 7; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig() { + if (idsigCase_ == 7) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance(); + } + + public static final int IC_SIG_FIELD_NUMBER = 105; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+   * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+   * 
*/ public boolean hasIcSig() { return idsigCase_ == 105; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+   * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+   * 
*/ public org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature getIcSig() { if (idsigCase_ == 105) { @@ -271,30 +385,13 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature.getDefaultInstance(); } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public boolean hasFileSig() { - return idsigCase_ == 106; - } - - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig() { - if (idsigCase_ == 106) { - return (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_; - } - return org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance(); - } - + public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature external_scoped_local_sig = 107; */ public boolean hasExternalScopedLocalSig() { return idsigCase_ == 107; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature external_scoped_local_sig = 107; */ @@ -308,35 +405,6 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; private void initFields() { } private byte memoizedIsInitialized = -1; - - public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (idsigCase_ == 1) { - output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_); - } - if (idsigCase_ == 2) { - output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature) idsig_); - } - if (idsigCase_ == 3) { - output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature) idsig_); - } - if (idsigCase_ == 4) { - output.writeInt32( - 4, (int)((java.lang.Integer) idsig_)); - } - if (idsigCase_ == 105) { - output.writeMessage(105, (org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature) idsig_); - } - if (idsigCase_ == 106) { - output.writeMessage(106, (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); - } - if (idsigCase_ == 107) { - output.writeMessage(107, (org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature) idsig_); - } - output.writeRawBytes(unknownFields); - } - public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -354,6 +422,12 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return false; } } + if (hasCompositeSig()) { + if (!getCompositeSig().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } if (hasIcSig()) { if (!getIcSig().isInitialized()) { memoizedIsInitialized = 0; @@ -370,6 +444,41 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; return true; } + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (idsigCase_ == 1) { + output.writeMessage(1, (org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_); + } + if (idsigCase_ == 2) { + output.writeMessage(2, (org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature) idsig_); + } + if (idsigCase_ == 3) { + output.writeMessage(3, (org.jetbrains.kotlin.backend.common.serialization.proto.AccessorIdSignature) idsig_); + } + if (idsigCase_ == 4) { + output.writeInt32( + 4, (int)((java.lang.Integer) idsig_)); + } + if (idsigCase_ == 5) { + output.writeMessage(5, (org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_); + } + if (idsigCase_ == 6) { + output.writeMessage(6, (org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_); + } + if (idsigCase_ == 7) { + output.writeMessage(7, (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); + } + if (idsigCase_ == 105) { + output.writeMessage(105, (org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature) idsig_); + } + if (idsigCase_ == 107) { + output.writeMessage(107, (org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature) idsig_); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; @@ -377,7 +486,7 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; size = 0; if (idsigCase_ == 1) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(1, (org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_); + .computeMessageSize(1, (org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_); } if (idsigCase_ == 2) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream @@ -392,14 +501,22 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; .computeInt32Size( 4, (int)((java.lang.Integer) idsig_)); } + if (idsigCase_ == 5) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, (org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_); + } + if (idsigCase_ == 6) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, (org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_); + } + if (idsigCase_ == 7) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(7, (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); + } if (idsigCase_ == 105) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(105, (org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature) idsig_); } - if (idsigCase_ == 106) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(106, (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_); - } if (idsigCase_ == 107) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(107, (org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature) idsig_); @@ -408,38 +525,6 @@ public static final int EXTERNAL_SCOPED_LOCAL_SIG_FIELD_NUMBER = 107; memoizedSerializedSize = size; return size; } -public enum IdsigCase - implements org.jetbrains.kotlin.protobuf.Internal.EnumLite { - PUBLIC_SIG(1), - PRIVATE_SIG(2), - ACCESSOR_SIG(3), - SCOPED_LOCAL_SIG(4), - IC_SIG(105), - FILE_SIG(106), - EXTERNAL_SCOPED_LOCAL_SIG(107), - IDSIG_NOT_SET(0); - private int value = 0; - private IdsigCase(int value) { - this.value = value; - } - public static IdsigCase valueOf(int value) { - switch (value) { - case 1: return PUBLIC_SIG; - case 2: return PRIVATE_SIG; - case 3: return ACCESSOR_SIG; - case 4: return SCOPED_LOCAL_SIG; - case 105: return IC_SIG; - case 106: return FILE_SIG; - case 107: return EXTERNAL_SCOPED_LOCAL_SIG; - case 0: return IDSIG_NOT_SET; - default: throw new java.lang.IllegalArgumentException( - "Value is undefined for this oneof enum."); - } - } - public int getNumber() { - return this.value; - } - } private static final long serialVersionUID = 0L; @java.lang.Override @@ -567,10 +652,16 @@ public enum IdsigCase if (idsigCase_ == 4) { result.idsig_ = idsig_; } - if (idsigCase_ == 105) { + if (idsigCase_ == 5) { result.idsig_ = idsig_; } - if (idsigCase_ == 106) { + if (idsigCase_ == 6) { + result.idsig_ = idsig_; + } + if (idsigCase_ == 7) { + result.idsig_ = idsig_; + } + if (idsigCase_ == 105) { result.idsig_ = idsig_; } if (idsigCase_ == 107) { @@ -600,14 +691,22 @@ public enum IdsigCase setScopedLocalSig(other.getScopedLocalSig()); break; } - case IC_SIG: { - mergeIcSig(other.getIcSig()); + case COMPOSITE_SIG: { + mergeCompositeSig(other.getCompositeSig()); + break; + } + case LOCAL_SIG: { + mergeLocalSig(other.getLocalSig()); break; } case FILE_SIG: { mergeFileSig(other.getFileSig()); break; } + case IC_SIG: { + mergeIcSig(other.getIcSig()); + break; + } case EXTERNAL_SCOPED_LOCAL_SIG: { mergeExternalScopedLocalSig(other.getExternalScopedLocalSig()); break; @@ -634,6 +733,12 @@ public enum IdsigCase return false; } } + if (hasCompositeSig()) { + if (!getCompositeSig().isInitialized()) { + + return false; + } + } if (hasIcSig()) { if (!getIcSig().isInitialized()) { @@ -683,24 +788,24 @@ public enum IdsigCase private int bitField0_; /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ public boolean hasPublicSig() { return idsigCase_ == 1; } /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ - public org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature getPublicSig() { + public org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature getPublicSig() { if (idsigCase_ == 1) { - return (org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_; + return (org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_; } - return org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.getDefaultInstance(); + return org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.getDefaultInstance(); } /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ - public Builder setPublicSig(org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature value) { + public Builder setPublicSig(org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature value) { if (value == null) { throw new NullPointerException(); } @@ -710,22 +815,22 @@ public enum IdsigCase return this; } /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ public Builder setPublicSig( - org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.Builder builderForValue) { + org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.Builder builderForValue) { idsig_ = builderForValue.build(); idsigCase_ = 1; return this; } /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ - public Builder mergePublicSig(org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature value) { + public Builder mergePublicSig(org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature value) { if (idsigCase_ == 1 && - idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.getDefaultInstance()) { - idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature) idsig_) + idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.getDefaultInstance()) { + idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature) idsig_) .mergeFrom(value).buildPartial(); } else { idsig_ = value; @@ -735,7 +840,7 @@ public enum IdsigCase return this; } /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ public Builder clearPublicSig() { if (idsigCase_ == 1) { @@ -910,14 +1015,214 @@ public enum IdsigCase return this; } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public boolean hasCompositeSig() { + return idsigCase_ == 5; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature getCompositeSig() { + if (idsigCase_ == 5) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.getDefaultInstance(); + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public Builder setCompositeSig(org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature value) { + if (value == null) { + throw new NullPointerException(); + } + idsig_ = value; + + idsigCase_ = 5; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public Builder setCompositeSig( + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.Builder builderForValue) { + idsig_ = builderForValue.build(); + + idsigCase_ = 5; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public Builder mergeCompositeSig(org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature value) { + if (idsigCase_ == 5 && + idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.getDefaultInstance()) { + idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature) idsig_) + .mergeFrom(value).buildPartial(); + } else { + idsig_ = value; + } + + idsigCase_ = 5; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + public Builder clearCompositeSig() { + if (idsigCase_ == 5) { + idsigCase_ = 0; + idsig_ = null; + + } + return this; + } + + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public boolean hasLocalSig() { + return idsigCase_ == 6; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature getLocalSig() { + if (idsigCase_ == 6) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.getDefaultInstance(); + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public Builder setLocalSig(org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature value) { + if (value == null) { + throw new NullPointerException(); + } + idsig_ = value; + + idsigCase_ = 6; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public Builder setLocalSig( + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.Builder builderForValue) { + idsig_ = builderForValue.build(); + + idsigCase_ = 6; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public Builder mergeLocalSig(org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature value) { + if (idsigCase_ == 6 && + idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.getDefaultInstance()) { + idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) idsig_) + .mergeFrom(value).buildPartial(); + } else { + idsig_ = value; + } + + idsigCase_ = 6; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + public Builder clearLocalSig() { + if (idsigCase_ == 6) { + idsigCase_ = 0; + idsig_ = null; + + } + return this; + } + + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public boolean hasFileSig() { + return idsigCase_ == 7; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig() { + if (idsigCase_ == 7) { + return (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_; + } + return org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance(); + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public Builder setFileSig(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature value) { + if (value == null) { + throw new NullPointerException(); + } + idsig_ = value; + + idsigCase_ = 7; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public Builder setFileSig( + org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.Builder builderForValue) { + idsig_ = builderForValue.build(); + + idsigCase_ = 7; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public Builder mergeFileSig(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature value) { + if (idsigCase_ == 7 && + idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance()) { + idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_) + .mergeFrom(value).buildPartial(); + } else { + idsig_ = value; + } + + idsigCase_ = 7; + return this; + } + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + public Builder clearFileSig() { + if (idsigCase_ == 7) { + idsigCase_ = 0; + idsig_ = null; + + } + return this; + } + /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public boolean hasIcSig() { return idsigCase_ == 105; } /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature getIcSig() { if (idsigCase_ == 105) { @@ -927,6 +1232,10 @@ public enum IdsigCase } /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public Builder setIcSig(org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature value) { if (value == null) { @@ -939,6 +1248,10 @@ public enum IdsigCase } /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public Builder setIcSig( org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature.Builder builderForValue) { @@ -949,6 +1262,10 @@ public enum IdsigCase } /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public Builder mergeIcSig(org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature value) { if (idsigCase_ == 105 && @@ -964,6 +1281,10 @@ public enum IdsigCase } /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+     * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+     * 
*/ public Builder clearIcSig() { if (idsigCase_ == 105) { @@ -974,70 +1295,6 @@ public enum IdsigCase return this; } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public boolean hasFileSig() { - return idsigCase_ == 106; - } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig() { - if (idsigCase_ == 106) { - return (org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_; - } - return org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance(); - } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public Builder setFileSig(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature value) { - if (value == null) { - throw new NullPointerException(); - } - idsig_ = value; - - idsigCase_ = 106; - return this; - } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public Builder setFileSig( - org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.Builder builderForValue) { - idsig_ = builderForValue.build(); - - idsigCase_ = 106; - return this; - } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public Builder mergeFileSig(org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature value) { - if (idsigCase_ == 106 && - idsig_ != org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.getDefaultInstance()) { - idsig_ = org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature.newBuilder((org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature) idsig_) - .mergeFrom(value).buildPartial(); - } else { - idsig_ = value; - } - - idsigCase_ = 106; - return this; - } - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - public Builder clearFileSig() { - if (idsigCase_ == 106) { - idsigCase_ = 0; - idsig_ = null; - - } - return this; - } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature external_scoped_local_sig = 107; */ diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignatureOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignatureOrBuilder.java index bd4c269b808..59ee5691d11 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignatureOrBuilder.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IdSignatureOrBuilder.java @@ -8,13 +8,13 @@ public interface IdSignatureOrBuilder extends org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ boolean hasPublicSig(); /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature public_sig = 1; + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature public_sig = 1; */ - org.jetbrains.kotlin.backend.common.serialization.proto.PublicIdSignature getPublicSig(); + org.jetbrains.kotlin.backend.common.serialization.proto.CommonIdSignature getPublicSig(); /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileLocalIdSignature private_sig = 2; @@ -43,24 +43,50 @@ public interface IdSignatureOrBuilder extends */ int getScopedLocalSig(); + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + boolean hasCompositeSig(); + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature composite_sig = 5; + */ + org.jetbrains.kotlin.backend.common.serialization.proto.CompositeSignature getCompositeSig(); + + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + boolean hasLocalSig(); + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature local_sig = 6; + */ + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature getLocalSig(); + + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + boolean hasFileSig(); + /** + * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 7; + */ + org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig(); + /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+   * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+   * 
*/ boolean hasIcSig(); /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature ic_sig = 105; + * + *
+   * JS IC related stuff below. Proto indices 100+ were chosen due to compatibility considerations.
+   * 
*/ org.jetbrains.kotlin.backend.common.serialization.proto.LoweredIdSignature getIcSig(); - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - boolean hasFileSig(); - /** - * optional .org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature file_sig = 106; - */ - org.jetbrains.kotlin.backend.common.serialization.proto.FileSignature getFileSig(); - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.ScopeLocalIdSignature external_scoped_local_sig = 107; */ diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrOperation.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrOperation.java index 4798e8f007e..7a67487ca6c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrOperation.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrOperation.java @@ -32,60 +32,6 @@ public final class IrOperation extends } private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - public static final int RETURNABLE_BLOCK_RETURN_FIELD_NUMBER = 38; - public static final int BLOCK_FIELD_NUMBER = 1; - public static final int BREAK_FIELD_NUMBER = 2; - public static final int CALL_FIELD_NUMBER = 3; - public static final int CLASS_REFERENCE_FIELD_NUMBER = 4; - public static final int COMPOSITE_FIELD_NUMBER = 5; - public static final int CONST_FIELD_NUMBER = 6; - public static final int CONTINUE_FIELD_NUMBER = 7;; - public static final int DELEGATING_CONSTRUCTOR_CALL_FIELD_NUMBER = 8; - public static final int DO_WHILE_FIELD_NUMBER = 9; - public static final int ENUM_CONSTRUCTOR_CALL_FIELD_NUMBER = 10; - public static final int FUNCTION_REFERENCE_FIELD_NUMBER = 11; - public static final int GET_CLASS_FIELD_NUMBER = 12; - public static final int GET_ENUM_VALUE_FIELD_NUMBER = 13; - public static final int GET_FIELD_FIELD_NUMBER = 14; - public static final int GET_OBJECT_FIELD_NUMBER = 15; - public static final int GET_VALUE_FIELD_NUMBER = 16; - public static final int INSTANCE_INITIALIZER_CALL_FIELD_NUMBER = 17; - public static final int PROPERTY_REFERENCE_FIELD_NUMBER = 18; - public static final int RETURN_FIELD_NUMBER = 19; - public static final int SET_FIELD_FIELD_NUMBER = 20; - public static final int SET_VALUE_FIELD_NUMBER = 21; - public static final int STRING_CONCAT_FIELD_NUMBER = 22; - public static final int THROW_FIELD_NUMBER = 23; - public static final int TRY_FIELD_NUMBER = 24; - public static final int TYPE_OP_FIELD_NUMBER = 25; - public static final int VARARG_FIELD_NUMBER = 26; - public static final int WHEN_FIELD_NUMBER = 27; - public static final int WHILE_FIELD_NUMBER = 28; - public static final int DYNAMIC_MEMBER_FIELD_NUMBER = 29; - public static final int DYNAMIC_OPERATOR_FIELD_NUMBER = 30; - public static final int LOCAL_DELEGATED_PROPERTY_REFERENCE_FIELD_NUMBER = 31; - public static final int CONSTRUCTOR_CALL_FIELD_NUMBER = 32; - public static final int FUNCTION_EXPRESSION_FIELD_NUMBER = 33; - public static final int ERROR_EXPRESSION_FIELD_NUMBER = 34; - public static final int ERROR_CALL_EXPRESSION_FIELD_NUMBER = 35; - public static final int RAW_FUNCTION_REFERENCE_FIELD_NUMBER = 36; - public static final int RETURNABLE_BLOCK_FIELD_NUMBER = 37; - public static org.jetbrains.kotlin.protobuf.Parser PARSER = - new org.jetbrains.kotlin.protobuf.AbstractParser() { - public IrOperation parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new IrOperation(input, extensionRegistry); - } - }; - private int bitField0_; - private int bitField1_; - private int operationCase_ = 0; - private java.lang.Object operation_; - private byte memoizedIsInitialized = -1; -private int memoizedSerializedSize = -1; - private IrOperation( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -625,6 +571,119 @@ private int memoizedSerializedSize = -1; makeExtensionsImmutable(); } } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public IrOperation parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new IrOperation(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + private int bitField1_; + private int operationCase_ = 0; + private java.lang.Object operation_; + public enum OperationCase + implements org.jetbrains.kotlin.protobuf.Internal.EnumLite { + BLOCK(1), + BREAK(2), + CALL(3), + CLASS_REFERENCE(4), + COMPOSITE(5), + CONST(6), + CONTINUE(7), + DELEGATING_CONSTRUCTOR_CALL(8), + DO_WHILE(9), + ENUM_CONSTRUCTOR_CALL(10), + FUNCTION_REFERENCE(11), + GET_CLASS(12), + GET_ENUM_VALUE(13), + GET_FIELD(14), + GET_OBJECT(15), + GET_VALUE(16), + INSTANCE_INITIALIZER_CALL(17), + PROPERTY_REFERENCE(18), + RETURN(19), + SET_FIELD(20), + SET_VALUE(21), + STRING_CONCAT(22), + THROW(23), + TRY(24), + TYPE_OP(25), + VARARG(26), + WHEN(27), + WHILE(28), + DYNAMIC_MEMBER(29), + DYNAMIC_OPERATOR(30), + LOCAL_DELEGATED_PROPERTY_REFERENCE(31), + CONSTRUCTOR_CALL(32), + FUNCTION_EXPRESSION(33), + ERROR_EXPRESSION(34), + ERROR_CALL_EXPRESSION(35), + RAW_FUNCTION_REFERENCE(36), + RETURNABLE_BLOCK(37), + RETURNABLE_BLOCK_RETURN(38), + OPERATION_NOT_SET(0); + private int value = 0; + private OperationCase(int value) { + this.value = value; + } + public static OperationCase valueOf(int value) { + switch (value) { + case 1: return BLOCK; + case 2: return BREAK; + case 3: return CALL; + case 4: return CLASS_REFERENCE; + case 5: return COMPOSITE; + case 6: return CONST; + case 7: return CONTINUE; + case 8: return DELEGATING_CONSTRUCTOR_CALL; + case 9: return DO_WHILE; + case 10: return ENUM_CONSTRUCTOR_CALL; + case 11: return FUNCTION_REFERENCE; + case 12: return GET_CLASS; + case 13: return GET_ENUM_VALUE; + case 14: return GET_FIELD; + case 15: return GET_OBJECT; + case 16: return GET_VALUE; + case 17: return INSTANCE_INITIALIZER_CALL; + case 18: return PROPERTY_REFERENCE; + case 19: return RETURN; + case 20: return SET_FIELD; + case 21: return SET_VALUE; + case 22: return STRING_CONCAT; + case 23: return THROW; + case 24: return TRY; + case 25: return TYPE_OP; + case 26: return VARARG; + case 27: return WHEN; + case 28: return WHILE; + case 29: return DYNAMIC_MEMBER; + case 30: return DYNAMIC_OPERATOR; + case 31: return LOCAL_DELEGATED_PROPERTY_REFERENCE; + case 32: return CONSTRUCTOR_CALL; + case 33: return FUNCTION_EXPRESSION; + case 34: return ERROR_EXPRESSION; + case 35: return ERROR_CALL_EXPRESSION; + case 36: return RAW_FUNCTION_REFERENCE; + case 37: return RETURNABLE_BLOCK; + case 38: return RETURNABLE_BLOCK_RETURN; + case 0: return OPERATION_NOT_SET; + default: throw new java.lang.IllegalArgumentException( + "Value is undefined for this oneof enum."); + } + } + public int getNumber() { + return this.value; + } + }; public OperationCase getOperationCase() { @@ -632,13 +691,13 @@ private int memoizedSerializedSize = -1; operationCase_); } + public static final int BLOCK_FIELD_NUMBER = 1; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock block = 1; */ public boolean hasBlock() { return operationCase_ == 1; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock block = 1; */ @@ -649,13 +708,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrBlock.getDefaultInstance(); } + public static final int BREAK_FIELD_NUMBER = 2; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrBreak break = 2; */ public boolean hasBreak() { return operationCase_ == 2; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrBreak break = 2; */ @@ -666,13 +725,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrBreak.getDefaultInstance(); } + public static final int CALL_FIELD_NUMBER = 3; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrCall call = 3; */ public boolean hasCall() { return operationCase_ == 3; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrCall call = 3; */ @@ -683,13 +742,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrCall.getDefaultInstance(); } + public static final int CLASS_REFERENCE_FIELD_NUMBER = 4; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrClassReference class_reference = 4; */ public boolean hasClassReference() { return operationCase_ == 4; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrClassReference class_reference = 4; */ @@ -700,13 +759,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrClassReference.getDefaultInstance(); } + public static final int COMPOSITE_FIELD_NUMBER = 5; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrComposite composite = 5; */ public boolean hasComposite() { return operationCase_ == 5; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrComposite composite = 5; */ @@ -717,13 +776,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrComposite.getDefaultInstance(); } + public static final int CONST_FIELD_NUMBER = 6; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrConst const = 6; */ public boolean hasConst() { return operationCase_ == 6; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrConst const = 6; */ @@ -734,13 +793,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrConst.getDefaultInstance(); } + public static final int CONTINUE_FIELD_NUMBER = 7; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrContinue continue = 7; */ public boolean hasContinue() { return operationCase_ == 7; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrContinue continue = 7; */ @@ -751,13 +810,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrContinue.getDefaultInstance(); } + public static final int DELEGATING_CONSTRUCTOR_CALL_FIELD_NUMBER = 8; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDelegatingConstructorCall delegating_constructor_call = 8; */ public boolean hasDelegatingConstructorCall() { return operationCase_ == 8; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDelegatingConstructorCall delegating_constructor_call = 8; */ @@ -768,13 +827,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrDelegatingConstructorCall.getDefaultInstance(); } + public static final int DO_WHILE_FIELD_NUMBER = 9; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDoWhile do_while = 9; */ public boolean hasDoWhile() { return operationCase_ == 9; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDoWhile do_while = 9; */ @@ -785,13 +844,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrDoWhile.getDefaultInstance(); } + public static final int ENUM_CONSTRUCTOR_CALL_FIELD_NUMBER = 10; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumConstructorCall enum_constructor_call = 10; */ public boolean hasEnumConstructorCall() { return operationCase_ == 10; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumConstructorCall enum_constructor_call = 10; */ @@ -802,13 +861,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrEnumConstructorCall.getDefaultInstance(); } + public static final int FUNCTION_REFERENCE_FIELD_NUMBER = 11; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionReference function_reference = 11; */ public boolean hasFunctionReference() { return operationCase_ == 11; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionReference function_reference = 11; */ @@ -819,13 +878,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionReference.getDefaultInstance(); } + public static final int GET_CLASS_FIELD_NUMBER = 12; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetClass get_class = 12; */ public boolean hasGetClass() { return operationCase_ == 12; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetClass get_class = 12; */ @@ -836,13 +895,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrGetClass.getDefaultInstance(); } + public static final int GET_ENUM_VALUE_FIELD_NUMBER = 13; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetEnumValue get_enum_value = 13; */ public boolean hasGetEnumValue() { return operationCase_ == 13; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetEnumValue get_enum_value = 13; */ @@ -853,13 +912,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrGetEnumValue.getDefaultInstance(); } + public static final int GET_FIELD_FIELD_NUMBER = 14; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetField get_field = 14; */ public boolean hasGetField() { return operationCase_ == 14; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetField get_field = 14; */ @@ -870,13 +929,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrGetField.getDefaultInstance(); } + public static final int GET_OBJECT_FIELD_NUMBER = 15; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetObject get_object = 15; */ public boolean hasGetObject() { return operationCase_ == 15; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetObject get_object = 15; */ @@ -887,13 +946,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrGetObject.getDefaultInstance(); } + public static final int GET_VALUE_FIELD_NUMBER = 16; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetValue get_value = 16; */ public boolean hasGetValue() { return operationCase_ == 16; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrGetValue get_value = 16; */ @@ -904,13 +963,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrGetValue.getDefaultInstance(); } + public static final int INSTANCE_INITIALIZER_CALL_FIELD_NUMBER = 17; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrInstanceInitializerCall instance_initializer_call = 17; */ public boolean hasInstanceInitializerCall() { return operationCase_ == 17; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrInstanceInitializerCall instance_initializer_call = 17; */ @@ -921,13 +980,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrInstanceInitializerCall.getDefaultInstance(); } + public static final int PROPERTY_REFERENCE_FIELD_NUMBER = 18; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrPropertyReference property_reference = 18; */ public boolean hasPropertyReference() { return operationCase_ == 18; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrPropertyReference property_reference = 18; */ @@ -938,13 +997,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrPropertyReference.getDefaultInstance(); } + public static final int RETURN_FIELD_NUMBER = 19; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrReturn return = 19; */ public boolean hasReturn() { return operationCase_ == 19; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrReturn return = 19; */ @@ -955,13 +1014,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrReturn.getDefaultInstance(); } + public static final int SET_FIELD_FIELD_NUMBER = 20; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrSetField set_field = 20; */ public boolean hasSetField() { return operationCase_ == 20; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrSetField set_field = 20; */ @@ -972,13 +1031,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrSetField.getDefaultInstance(); } + public static final int SET_VALUE_FIELD_NUMBER = 21; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrSetValue set_value = 21; */ public boolean hasSetValue() { return operationCase_ == 21; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrSetValue set_value = 21; */ @@ -989,13 +1048,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrSetValue.getDefaultInstance(); } + public static final int STRING_CONCAT_FIELD_NUMBER = 22; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStringConcat string_concat = 22; */ public boolean hasStringConcat() { return operationCase_ == 22; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrStringConcat string_concat = 22; */ @@ -1006,13 +1065,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrStringConcat.getDefaultInstance(); } + public static final int THROW_FIELD_NUMBER = 23; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrThrow throw = 23; */ public boolean hasThrow() { return operationCase_ == 23; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrThrow throw = 23; */ @@ -1023,13 +1082,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrThrow.getDefaultInstance(); } + public static final int TRY_FIELD_NUMBER = 24; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrTry try = 24; */ public boolean hasTry() { return operationCase_ == 24; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrTry try = 24; */ @@ -1040,13 +1099,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrTry.getDefaultInstance(); } + public static final int TYPE_OP_FIELD_NUMBER = 25; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeOp type_op = 25; */ public boolean hasTypeOp() { return operationCase_ == 25; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeOp type_op = 25; */ @@ -1057,13 +1116,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeOp.getDefaultInstance(); } + public static final int VARARG_FIELD_NUMBER = 26; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrVararg vararg = 26; */ public boolean hasVararg() { return operationCase_ == 26; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrVararg vararg = 26; */ @@ -1074,13 +1133,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrVararg.getDefaultInstance(); } + public static final int WHEN_FIELD_NUMBER = 27; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrWhen when = 27; */ public boolean hasWhen() { return operationCase_ == 27; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrWhen when = 27; */ @@ -1091,13 +1150,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrWhen.getDefaultInstance(); } + public static final int WHILE_FIELD_NUMBER = 28; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrWhile while = 28; */ public boolean hasWhile() { return operationCase_ == 28; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrWhile while = 28; */ @@ -1108,13 +1167,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrWhile.getDefaultInstance(); } + public static final int DYNAMIC_MEMBER_FIELD_NUMBER = 29; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicMemberExpression dynamic_member = 29; */ public boolean hasDynamicMember() { return operationCase_ == 29; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicMemberExpression dynamic_member = 29; */ @@ -1125,13 +1184,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicMemberExpression.getDefaultInstance(); } + public static final int DYNAMIC_OPERATOR_FIELD_NUMBER = 30; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicOperatorExpression dynamic_operator = 30; */ public boolean hasDynamicOperator() { return operationCase_ == 30; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicOperatorExpression dynamic_operator = 30; */ @@ -1142,13 +1201,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrDynamicOperatorExpression.getDefaultInstance(); } + public static final int LOCAL_DELEGATED_PROPERTY_REFERENCE_FIELD_NUMBER = 31; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31; */ public boolean hasLocalDelegatedPropertyReference() { return operationCase_ == 31; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrLocalDelegatedPropertyReference local_delegated_property_reference = 31; */ @@ -1159,13 +1218,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrLocalDelegatedPropertyReference.getDefaultInstance(); } + public static final int CONSTRUCTOR_CALL_FIELD_NUMBER = 32; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructorCall constructor_call = 32; */ public boolean hasConstructorCall() { return operationCase_ == 32; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructorCall constructor_call = 32; */ @@ -1176,13 +1235,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructorCall.getDefaultInstance(); } + public static final int FUNCTION_EXPRESSION_FIELD_NUMBER = 33; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionExpression function_expression = 33; */ public boolean hasFunctionExpression() { return operationCase_ == 33; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionExpression function_expression = 33; */ @@ -1193,6 +1252,7 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionExpression.getDefaultInstance(); } + public static final int ERROR_EXPRESSION_FIELD_NUMBER = 34; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorExpression error_expression = 34; * @@ -1203,7 +1263,6 @@ private int memoizedSerializedSize = -1; public boolean hasErrorExpression() { return operationCase_ == 34; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorExpression error_expression = 34; * @@ -1218,13 +1277,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorExpression.getDefaultInstance(); } + public static final int ERROR_CALL_EXPRESSION_FIELD_NUMBER = 35; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorCallExpression error_call_expression = 35; */ public boolean hasErrorCallExpression() { return operationCase_ == 35; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorCallExpression error_call_expression = 35; */ @@ -1235,13 +1294,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrErrorCallExpression.getDefaultInstance(); } + public static final int RAW_FUNCTION_REFERENCE_FIELD_NUMBER = 36; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrRawFunctionReference raw_function_reference = 36; */ public boolean hasRawFunctionReference() { return operationCase_ == 36; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrRawFunctionReference raw_function_reference = 36; */ @@ -1252,13 +1311,13 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrRawFunctionReference.getDefaultInstance(); } + public static final int RETURNABLE_BLOCK_FIELD_NUMBER = 37; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlock returnable_block = 37; */ public boolean hasReturnableBlock() { return operationCase_ == 37; } - /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlock returnable_block = 37; */ @@ -1269,6 +1328,7 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlock.getDefaultInstance(); } + public static final int RETURNABLE_BLOCK_RETURN_FIELD_NUMBER = 38; /** * optional .org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn returnable_block_return = 38; */ @@ -1285,13 +1345,9 @@ private int memoizedSerializedSize = -1; return org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn.getDefaultInstance(); } - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - private void initFields() { } + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -1643,6 +1699,7 @@ private int memoizedSerializedSize = -1; output.writeRawBytes(unknownFields); } + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; @@ -1804,100 +1861,6 @@ private int memoizedSerializedSize = -1; memoizedSerializedSize = size; return size; } -public enum OperationCase - implements org.jetbrains.kotlin.protobuf.Internal.EnumLite { - BLOCK(1), - BREAK(2), - CALL(3), - CLASS_REFERENCE(4), - COMPOSITE(5), - CONST(6), - CONTINUE(7), - DELEGATING_CONSTRUCTOR_CALL(8), - DO_WHILE(9), - ENUM_CONSTRUCTOR_CALL(10), - FUNCTION_REFERENCE(11), - GET_CLASS(12), - GET_ENUM_VALUE(13), - GET_FIELD(14), - GET_OBJECT(15), - GET_VALUE(16), - INSTANCE_INITIALIZER_CALL(17), - PROPERTY_REFERENCE(18), - RETURN(19), - SET_FIELD(20), - SET_VALUE(21), - STRING_CONCAT(22), - THROW(23), - TRY(24), - TYPE_OP(25), - VARARG(26), - WHEN(27), - WHILE(28), - DYNAMIC_MEMBER(29), - DYNAMIC_OPERATOR(30), - LOCAL_DELEGATED_PROPERTY_REFERENCE(31), - CONSTRUCTOR_CALL(32), - FUNCTION_EXPRESSION(33), - ERROR_EXPRESSION(34), - ERROR_CALL_EXPRESSION(35), - RAW_FUNCTION_REFERENCE(36), - RETURNABLE_BLOCK(37), - RETURNABLE_BLOCK_RETURN(38), - OPERATION_NOT_SET(0); - private int value = 0; - private OperationCase(int value) { - this.value = value; - } - public static OperationCase valueOf(int value) { - switch (value) { - case 1: return BLOCK; - case 2: return BREAK; - case 3: return CALL; - case 4: return CLASS_REFERENCE; - case 5: return COMPOSITE; - case 6: return CONST; - case 7: return CONTINUE; - case 8: return DELEGATING_CONSTRUCTOR_CALL; - case 9: return DO_WHILE; - case 10: return ENUM_CONSTRUCTOR_CALL; - case 11: return FUNCTION_REFERENCE; - case 12: return GET_CLASS; - case 13: return GET_ENUM_VALUE; - case 14: return GET_FIELD; - case 15: return GET_OBJECT; - case 16: return GET_VALUE; - case 17: return INSTANCE_INITIALIZER_CALL; - case 18: return PROPERTY_REFERENCE; - case 19: return RETURN; - case 20: return SET_FIELD; - case 21: return SET_VALUE; - case 22: return STRING_CONCAT; - case 23: return THROW; - case 24: return TRY; - case 25: return TYPE_OP; - case 26: return VARARG; - case 27: return WHEN; - case 28: return WHILE; - case 29: return DYNAMIC_MEMBER; - case 30: return DYNAMIC_OPERATOR; - case 31: return LOCAL_DELEGATED_PROPERTY_REFERENCE; - case 32: return CONSTRUCTOR_CALL; - case 33: return FUNCTION_EXPRESSION; - case 34: return ERROR_EXPRESSION; - case 35: return ERROR_CALL_EXPRESSION; - case 36: return RAW_FUNCTION_REFERENCE; - case 37: return RETURNABLE_BLOCK; - case 38: return RETURNABLE_BLOCK_RETURN; - case 0: return OPERATION_NOT_SET; - default: throw new java.lang.IllegalArgumentException( - "Value is undefined for this oneof enum."); - } - } - public int getNumber() { - return this.value; - } - } private static final long serialVersionUID = 0L; @java.lang.Override diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrReturnableBlockReturn.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrReturnableBlockReturn.java index dbadde83c24..bd4f58206b3 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrReturnableBlockReturn.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrReturnableBlockReturn.java @@ -10,37 +10,23 @@ public final class IrReturnableBlockReturn extends org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn) IrReturnableBlockReturnOrBuilder { - public static final int UPCNT_FIELD_NUMBER = 1; - public static final int VALUE_FIELD_NUMBER = 2; - private static final IrReturnableBlockReturn defaultInstance; - private static final long serialVersionUID = 0L; - public static org.jetbrains.kotlin.protobuf.Parser PARSER = - new org.jetbrains.kotlin.protobuf.AbstractParser() { - public IrReturnableBlockReturn parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new IrReturnableBlockReturn(input, extensionRegistry); - } - }; - - static { - defaultInstance = new IrReturnableBlockReturn(true); - defaultInstance.initFields(); - } - - private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - private int bitField0_; - private int upCnt_; - private org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value_; - private byte memoizedIsInitialized = -1; - private int memoizedSerializedSize = -1; // Use IrReturnableBlockReturn.newBuilder() to construct. private IrReturnableBlockReturn(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { super(builder); this.unknownFields = builder.getUnknownFields(); } private IrReturnableBlockReturn(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final IrReturnableBlockReturn defaultInstance; + public static IrReturnableBlockReturn getDefaultInstance() { + return defaultInstance; + } + + public IrReturnableBlockReturn getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; private IrReturnableBlockReturn( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -103,91 +89,30 @@ public final class IrReturnableBlockReturn extends makeExtensionsImmutable(); } } - - public static IrReturnableBlockReturn getDefaultInstance() { - return defaultInstance; - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom(byte[] data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - byte[] data, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - java.io.InputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseDelimitedFrom( - java.io.InputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - - public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - - public static Builder newBuilder(org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn prototype) { - return newBuilder().mergeFrom(prototype); - } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public IrReturnableBlockReturn parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new IrReturnableBlockReturn(input, extensionRegistry); + } + }; @java.lang.Override public org.jetbrains.kotlin.protobuf.Parser getParserForType() { return PARSER; } + private int bitField0_; + public static final int UPCNT_FIELD_NUMBER = 1; + private int upCnt_; /** * required uint32 upCnt = 1; */ public boolean hasUpCnt() { return ((bitField0_ & 0x00000001) == 0x00000001); } - /** * required uint32 upCnt = 1; */ @@ -195,13 +120,14 @@ public final class IrReturnableBlockReturn extends return upCnt_; } + public static final int VALUE_FIELD_NUMBER = 2; + private org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value_; /** * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value = 2; */ public boolean hasValue() { return ((bitField0_ & 0x00000002) == 0x00000002); } - /** * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value = 2; */ @@ -213,7 +139,7 @@ public final class IrReturnableBlockReturn extends upCnt_ = 0; value_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance(); } - + private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; @@ -247,6 +173,7 @@ public final class IrReturnableBlockReturn extends output.writeRawBytes(unknownFields); } + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; @@ -265,19 +192,72 @@ public final class IrReturnableBlockReturn extends return size; } + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - public Builder newBuilderForType() { return newBuilder(); } - - public Builder toBuilder() { return newBuilder(this); } - - public IrReturnableBlockReturn getDefaultInstanceForType() { - return defaultInstance; + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } /** * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn} @@ -288,15 +268,13 @@ public final class IrReturnableBlockReturn extends implements // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn) org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturnOrBuilder { - private int bitField0_; - private int upCnt_ ; - private org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance(); - // Construct using org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn.newBuilder() private Builder() { maybeForceBuilderInitialization(); } + private void maybeForceBuilderInitialization() { + } private static Builder create() { return new Builder(); } @@ -355,6 +333,22 @@ public final class IrReturnableBlockReturn extends return this; } + public final boolean isInitialized() { + if (!hasUpCnt()) { + + return false; + } + if (!hasValue()) { + + return false; + } + if (!getValue().isInitialized()) { + + return false; + } + return true; + } + public Builder mergeFrom( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -372,9 +366,9 @@ public final class IrReturnableBlockReturn extends } return this; } + private int bitField0_; - private void maybeForceBuilderInitialization() { - } + private int upCnt_ ; /** * required uint32 upCnt = 1; */ @@ -387,42 +381,26 @@ public final class IrReturnableBlockReturn extends public int getUpCnt() { return upCnt_; } - /** * required uint32 upCnt = 1; */ public Builder setUpCnt(int value) { bitField0_ |= 0x00000001; upCnt_ = value; - + return this; } - - public final boolean isInitialized() { - if (!hasUpCnt()) { - - return false; - } - if (!hasValue()) { - - return false; - } - if (!getValue().isInitialized()) { - - return false; - } - return true; - } - /** * required uint32 upCnt = 1; */ public Builder clearUpCnt() { bitField0_ = (bitField0_ & ~0x00000001); upCnt_ = 0; - + return this; } + + private org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression.getDefaultInstance(); /** * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrExpression value = 2; */ @@ -485,5 +463,10 @@ public final class IrReturnableBlockReturn extends // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn) } + static { + defaultInstance = new IrReturnableBlockReturn(true); + defaultInstance.initFields(); + } + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.proto.IrReturnableBlockReturn) } \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrTypeParameter.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrTypeParameter.java index abe67d40ddb..f33c7478825 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrTypeParameter.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrTypeParameter.java @@ -27,78 +27,6 @@ public final class IrTypeParameter extends } private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - public static final int INDEX_FIELD_NUMBER = 4; - public static org.jetbrains.kotlin.protobuf.Parser PARSER = - new org.jetbrains.kotlin.protobuf.AbstractParser() { - public IrTypeParameter parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new IrTypeParameter(input, extensionRegistry); - } - }; - - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - public static final int BASE_FIELD_NUMBER = 1; - private org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base_; - /** - * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; - */ - public boolean hasBase() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; - */ - public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase getBase() { - return base_; - } - - public static final int NAME_FIELD_NUMBER = 2; - private int name_; - /** - * required int32 name = 2; - */ - public boolean hasName() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required int32 name = 2; - */ - public int getName() { - return name_; - } - - public static final int SUPER_TYPE_FIELD_NUMBER = 3; - private java.util.List superType_; - /** - * repeated int32 super_type = 3 [packed = true]; - */ - public java.util.List - getSuperTypeList() { - return superType_; - } - /** - * repeated int32 super_type = 3 [packed = true]; - */ - public int getSuperTypeCount() { - return superType_.size(); - } - /** - * repeated int32 super_type = 3 [packed = true]; - */ - public int getSuperType(int index) { - return superType_.get(index); - } - private int superTypeMemoizedSerializedSize = -1; - public static final int ISGLOBAL_FIELD_NUMBER = 5; - private int index_; - private boolean isGlobal_; private IrTypeParameter( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -195,14 +123,83 @@ public final class IrTypeParameter extends makeExtensionsImmutable(); } } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public IrTypeParameter parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new IrTypeParameter(input, extensionRegistry); + } + }; + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int BASE_FIELD_NUMBER = 1; + private org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base_; + /** + * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; + */ + public boolean hasBase() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase getBase() { + return base_; + } + + public static final int NAME_FIELD_NUMBER = 2; + private int name_; + /** + * required int32 name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required int32 name = 2; + */ + public int getName() { + return name_; + } + + public static final int SUPER_TYPE_FIELD_NUMBER = 3; + private java.util.List superType_; + /** + * repeated int32 super_type = 3 [packed = true]; + */ + public java.util.List + getSuperTypeList() { + return superType_; + } + /** + * repeated int32 super_type = 3 [packed = true]; + */ + public int getSuperTypeCount() { + return superType_.size(); + } + /** + * repeated int32 super_type = 3 [packed = true]; + */ + public int getSuperType(int index) { + return superType_.get(index); + } + private int superTypeMemoizedSerializedSize = -1; + + public static final int INDEX_FIELD_NUMBER = 4; + private int index_; /** * optional int32 index = 4; */ public boolean hasIndex() { return ((bitField0_ & 0x00000004) == 0x00000004); } - /** * optional int32 index = 4; */ @@ -210,6 +207,8 @@ public final class IrTypeParameter extends return index_; } + public static final int ISGLOBAL_FIELD_NUMBER = 5; + private boolean isGlobal_; /** * optional bool isGlobal = 5; */ @@ -405,7 +404,20 @@ public final class IrTypeParameter extends return new Builder(); } - private int index_ ; + public Builder clear() { + super.clear(); + base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000001); + name_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + superType_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + index_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + isGlobal_ = false; + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } public Builder clone() { return create().mergeFrom(buildPartial()); @@ -422,20 +434,62 @@ public final class IrTypeParameter extends } return result; } - private boolean isGlobal_ ; - public Builder clear() { - super.clear(); - base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000001); - name_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - superType_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - index_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - isGlobal_ = false; - bitField0_ = (bitField0_ & ~0x00000010); + public org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter buildPartial() { + org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter result = new org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.base_ = base_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.name_ = name_; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + superType_ = java.util.Collections.unmodifiableList(superType_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.superType_ = superType_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000004; + } + result.index_ = index_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000008; + } + result.isGlobal_ = isGlobal_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter other) { + if (other == org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter.getDefaultInstance()) return this; + if (other.hasBase()) { + mergeBase(other.getBase()); + } + if (other.hasName()) { + setName(other.getName()); + } + if (!other.superType_.isEmpty()) { + if (superType_.isEmpty()) { + superType_ = other.superType_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureSuperTypeIsMutable(); + superType_.addAll(other.superType_); + } + + } + if (other.hasIndex()) { + setIndex(other.getIndex()); + } + if (other.hasIsGlobal()) { + setIsGlobal(other.getIsGlobal()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); return this; } @@ -622,109 +676,49 @@ public final class IrTypeParameter extends return this; } - - public org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter buildPartial() { - org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter result = new org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.base_ = base_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.name_ = name_; - if (((bitField0_ & 0x00000004) == 0x00000004)) { - superType_ = java.util.Collections.unmodifiableList(superType_); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.superType_ = superType_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000004; - } - result.index_ = index_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000008; - } - result.isGlobal_ = isGlobal_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter other) { - if (other == org.jetbrains.kotlin.backend.common.serialization.proto.IrTypeParameter.getDefaultInstance()) return this; - if (other.hasBase()) { - mergeBase(other.getBase()); - } - if (other.hasName()) { - setName(other.getName()); - } - if (!other.superType_.isEmpty()) { - if (superType_.isEmpty()) { - superType_ = other.superType_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureSuperTypeIsMutable(); - superType_.addAll(other.superType_); - } - - } - if (other.hasIndex()) { - setIndex(other.getIndex()); - } - if (other.hasIsGlobal()) { - setIsGlobal(other.getIsGlobal()); - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - /** * repeated int32 super_type = 3 [packed = true]; */ public Builder clearSuperType() { superType_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000004); - + return this; } + private int index_ ; /** * optional int32 index = 4; */ public boolean hasIndex() { return ((bitField0_ & 0x00000008) == 0x00000008); } - /** * optional int32 index = 4; */ public int getIndex() { return index_; } - /** * optional int32 index = 4; */ public Builder setIndex(int value) { bitField0_ |= 0x00000008; index_ = value; - + return this; } - /** * optional int32 index = 4; */ public Builder clearIndex() { bitField0_ = (bitField0_ & ~0x00000008); index_ = 0; - + return this; } + private boolean isGlobal_ ; /** * optional bool isGlobal = 5; */ diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrValueParameter.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrValueParameter.java index 5c59d593990..c2bae5151d2 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrValueParameter.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrValueParameter.java @@ -27,83 +27,6 @@ public final class IrValueParameter extends } private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - public static final int INDEX_FIELD_NUMBER = 5; - public static org.jetbrains.kotlin.protobuf.Parser PARSER = - new org.jetbrains.kotlin.protobuf.AbstractParser() { - public IrValueParameter parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new IrValueParameter(input, extensionRegistry); - } - }; - - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - public static final int BASE_FIELD_NUMBER = 1; - private org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base_; - /** - * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; - */ - public boolean hasBase() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; - */ - public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase getBase() { - return base_; - } - - public static final int NAME_TYPE_FIELD_NUMBER = 2; - private long nameType_; - /** - * required int64 name_type = 2; - */ - public boolean hasNameType() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required int64 name_type = 2; - */ - public long getNameType() { - return nameType_; - } - - public static final int VARARG_ELEMENT_TYPE_FIELD_NUMBER = 3; - private int varargElementType_; - /** - * optional int32 vararg_element_type = 3; - */ - public boolean hasVarargElementType() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * optional int32 vararg_element_type = 3; - */ - public int getVarargElementType() { - return varargElementType_; - } - - public static final int DEFAULT_VALUE_FIELD_NUMBER = 4; - private int defaultValue_; - /** - * optional int32 default_value = 4; - */ - public boolean hasDefaultValue() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - /** - * optional int32 default_value = 4; - */ - public int getDefaultValue() { - return defaultValue_; - } - private int index_; private IrValueParameter( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) @@ -181,7 +104,84 @@ public final class IrValueParameter extends makeExtensionsImmutable(); } } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public IrValueParameter parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new IrValueParameter(input, extensionRegistry); + } + }; + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int BASE_FIELD_NUMBER = 1; + private org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base_; + /** + * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; + */ + public boolean hasBase() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase base = 1; + */ + public org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase getBase() { + return base_; + } + + public static final int NAME_TYPE_FIELD_NUMBER = 2; + private long nameType_; + /** + * required int64 name_type = 2; + */ + public boolean hasNameType() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required int64 name_type = 2; + */ + public long getNameType() { + return nameType_; + } + + public static final int VARARG_ELEMENT_TYPE_FIELD_NUMBER = 3; + private int varargElementType_; + /** + * optional int32 vararg_element_type = 3; + */ + public boolean hasVarargElementType() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional int32 vararg_element_type = 3; + */ + public int getVarargElementType() { + return varargElementType_; + } + + public static final int DEFAULT_VALUE_FIELD_NUMBER = 4; + private int defaultValue_; + /** + * optional int32 default_value = 4; + */ + public boolean hasDefaultValue() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional int32 default_value = 4; + */ + public int getDefaultValue() { + return defaultValue_; + } + + public static final int INDEX_FIELD_NUMBER = 5; + private int index_; /** * optional int32 index = 5; */ @@ -363,7 +363,20 @@ public final class IrValueParameter extends return new Builder(); } - private int index_ ; + public Builder clear() { + super.clear(); + base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000001); + nameType_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + varargElementType_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + defaultValue_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + index_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } public Builder clone() { return create().mergeFrom(buildPartial()); @@ -381,21 +394,6 @@ public final class IrValueParameter extends return result; } - public Builder clear() { - super.clear(); - base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000001); - nameType_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); - varargElementType_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - defaultValue_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - index_ = 0; - bitField0_ = (bitField0_ & ~0x00000010); - return this; - } - public org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter buildPartial() { org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter result = new org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter(this); int from_bitField0_ = bitField0_; @@ -424,6 +422,28 @@ public final class IrValueParameter extends return result; } + public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter other) { + if (other == org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.getDefaultInstance()) return this; + if (other.hasBase()) { + mergeBase(other.getBase()); + } + if (other.hasNameType()) { + setNameType(other.getNameType()); + } + if (other.hasVarargElementType()) { + setVarargElementType(other.getVarargElementType()); + } + if (other.hasDefaultValue()) { + setDefaultValue(other.getDefaultValue()); + } + if (other.hasIndex()) { + setIndex(other.getIndex()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + public final boolean isInitialized() { if (!hasBase()) { @@ -605,39 +625,17 @@ public final class IrValueParameter extends return this; } - - public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter other) { - if (other == org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.getDefaultInstance()) return this; - if (other.hasBase()) { - mergeBase(other.getBase()); - } - if (other.hasNameType()) { - setNameType(other.getNameType()); - } - if (other.hasVarargElementType()) { - setVarargElementType(other.getVarargElementType()); - } - if (other.hasDefaultValue()) { - setDefaultValue(other.getDefaultValue()); - } - if (other.hasIndex()) { - setIndex(other.getIndex()); - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - /** * optional int32 default_value = 4; */ public Builder clearDefaultValue() { bitField0_ = (bitField0_ & ~0x00000008); defaultValue_ = 0; - + return this; } + private int index_ ; /** * optional int32 index = 5; */ diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignature.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignature.java new file mode 100644 index 00000000000..1bf09ea38df --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignature.java @@ -0,0 +1,588 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: compiler/ir/serialization.common/src/KotlinIr.proto + +package org.jetbrains.kotlin.backend.common.serialization.proto; + +/** + * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature} + */ +public final class LocalSignature extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) + LocalSignatureOrBuilder { + // Use LocalSignature.newBuilder() to construct. + private LocalSignature(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private LocalSignature(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final LocalSignature defaultInstance; + public static LocalSignature getDefaultInstance() { + return defaultInstance; + } + + public LocalSignature getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private LocalSignature( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + localFqName_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + localFqName_.add(input.readInt32()); + break; + } + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) { + localFqName_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + while (input.getBytesUntilLimit() > 0) { + localFqName_.add(input.readInt32()); + } + input.popLimit(limit); + break; + } + case 16: { + bitField0_ |= 0x00000001; + localHash_ = input.readInt64(); + break; + } + case 24: { + bitField0_ |= 0x00000002; + description_ = input.readInt32(); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + localFqName_ = java.util.Collections.unmodifiableList(localFqName_); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public LocalSignature parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new LocalSignature(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int LOCAL_FQ_NAME_FIELD_NUMBER = 1; + private java.util.List localFqName_; + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public java.util.List + getLocalFqNameList() { + return localFqName_; + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public int getLocalFqNameCount() { + return localFqName_.size(); + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public int getLocalFqName(int index) { + return localFqName_.get(index); + } + private int localFqNameMemoizedSerializedSize = -1; + + public static final int LOCAL_HASH_FIELD_NUMBER = 2; + private long localHash_; + /** + * optional int64 local_hash = 2; + */ + public boolean hasLocalHash() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional int64 local_hash = 2; + */ + public long getLocalHash() { + return localHash_; + } + + public static final int DESCRIPTION_FIELD_NUMBER = 3; + private int description_; + /** + * optional int32 description = 3; + * + *
+   * debug information
+   * 
+ */ + public boolean hasDescription() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int32 description = 3; + * + *
+   * debug information
+   * 
+ */ + public int getDescription() { + return description_; + } + + private void initFields() { + localFqName_ = java.util.Collections.emptyList(); + localHash_ = 0L; + description_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (getLocalFqNameList().size() > 0) { + output.writeRawVarint32(10); + output.writeRawVarint32(localFqNameMemoizedSerializedSize); + } + for (int i = 0; i < localFqName_.size(); i++) { + output.writeInt32NoTag(localFqName_.get(i)); + } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt64(2, localHash_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeInt32(3, description_); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < localFqName_.size(); i++) { + dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32SizeNoTag(localFqName_.get(i)); + } + size += dataSize; + if (!getLocalFqNameList().isEmpty()) { + size += 1; + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + localFqNameMemoizedSerializedSize = dataSize; + } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt64Size(2, localHash_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(3, description_); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignatureOrBuilder { + // Construct using org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + localFqName_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + localHash_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + description_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature getDefaultInstanceForType() { + return org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.getDefaultInstance(); + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature build() { + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature buildPartial() { + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature result = new org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + localFqName_ = java.util.Collections.unmodifiableList(localFqName_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.localFqName_ = localFqName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000001; + } + result.localHash_ = localHash_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000002; + } + result.description_ = description_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature other) { + if (other == org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature.getDefaultInstance()) return this; + if (!other.localFqName_.isEmpty()) { + if (localFqName_.isEmpty()) { + localFqName_ = other.localFqName_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureLocalFqNameIsMutable(); + localFqName_.addAll(other.localFqName_); + } + + } + if (other.hasLocalHash()) { + setLocalHash(other.getLocalHash()); + } + if (other.hasDescription()) { + setDescription(other.getDescription()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List localFqName_ = java.util.Collections.emptyList(); + private void ensureLocalFqNameIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + localFqName_ = new java.util.ArrayList(localFqName_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public java.util.List + getLocalFqNameList() { + return java.util.Collections.unmodifiableList(localFqName_); + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public int getLocalFqNameCount() { + return localFqName_.size(); + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public int getLocalFqName(int index) { + return localFqName_.get(index); + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public Builder setLocalFqName( + int index, int value) { + ensureLocalFqNameIsMutable(); + localFqName_.set(index, value); + + return this; + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public Builder addLocalFqName(int value) { + ensureLocalFqNameIsMutable(); + localFqName_.add(value); + + return this; + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public Builder addAllLocalFqName( + java.lang.Iterable values) { + ensureLocalFqNameIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, localFqName_); + + return this; + } + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + public Builder clearLocalFqName() { + localFqName_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + + return this; + } + + private long localHash_ ; + /** + * optional int64 local_hash = 2; + */ + public boolean hasLocalHash() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int64 local_hash = 2; + */ + public long getLocalHash() { + return localHash_; + } + /** + * optional int64 local_hash = 2; + */ + public Builder setLocalHash(long value) { + bitField0_ |= 0x00000002; + localHash_ = value; + + return this; + } + /** + * optional int64 local_hash = 2; + */ + public Builder clearLocalHash() { + bitField0_ = (bitField0_ & ~0x00000002); + localHash_ = 0L; + + return this; + } + + private int description_ ; + /** + * optional int32 description = 3; + * + *
+     * debug information
+     * 
+ */ + public boolean hasDescription() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional int32 description = 3; + * + *
+     * debug information
+     * 
+ */ + public int getDescription() { + return description_; + } + /** + * optional int32 description = 3; + * + *
+     * debug information
+     * 
+ */ + public Builder setDescription(int value) { + bitField0_ |= 0x00000004; + description_ = value; + + return this; + } + /** + * optional int32 description = 3; + * + *
+     * debug information
+     * 
+ */ + public Builder clearDescription() { + bitField0_ = (bitField0_ & ~0x00000004); + description_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) + } + + static { + defaultInstance = new LocalSignature(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) +} diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignatureOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignatureOrBuilder.java new file mode 100644 index 00000000000..296ce518de9 --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/LocalSignatureOrBuilder.java @@ -0,0 +1,48 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: compiler/ir/serialization.common/src/KotlinIr.proto + +package org.jetbrains.kotlin.backend.common.serialization.proto; + +public interface LocalSignatureOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.backend.common.serialization.proto.LocalSignature) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + java.util.List getLocalFqNameList(); + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + int getLocalFqNameCount(); + /** + * repeated int32 local_fq_name = 1 [packed = true]; + */ + int getLocalFqName(int index); + + /** + * optional int64 local_hash = 2; + */ + boolean hasLocalHash(); + /** + * optional int64 local_hash = 2; + */ + long getLocalHash(); + + /** + * optional int32 description = 3; + * + *
+   * debug information
+   * 
+ */ + boolean hasDescription(); + /** + * optional int32 description = 3; + * + *
+   * debug information
+   * 
+ */ + int getDescription(); +} \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt index 0c6caa28ab7..85edd79126a 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureBuilder.kt @@ -16,15 +16,33 @@ abstract class IdSignatureBuilder { protected var hashIdAcc: Long? = null protected var overridden: List? = null protected var mask = 0L + protected var container: IdSignature? = null + protected var description: String? = null + + protected var isTopLevelPrivate: Boolean = false + + protected abstract val currentFileSignature: IdSignature.FileSignature? protected abstract fun accept(d: D) - protected fun reset() { + protected fun reset(resetContainer: Boolean = true) { this.packageFqn = FqName.ROOT this.classFqnSegments.clear() this.hashId = null + this.hashIdAcc = null this.mask = 0L this.overridden = null + this.description = null + this.isTopLevelPrivate = false + + if (resetContainer) container = null + } + + + protected fun buildContainerSignature(container: IdSignature): IdSignature.CompositeSignature { + val localName = classFqnSegments.joinToString(".") + val localHash = hashId + return IdSignature.CompositeSignature(container, IdSignature.LocalSignature(localName, localHash, description)) } protected fun build(): IdSignature { @@ -38,6 +56,18 @@ abstract class IdSignatureBuilder { val overriddenSignatures = preserved.map { buildSignature(it) } return IdSignature.SpecialFakeOverrideSignature(memberSignature, overriddenSignatures) } + isTopLevelPrivate -> { + val fileSig = currentFileSignature + ?: error("File expected to be not null ($packageFqName, $classFqName)") + isTopLevelPrivate = false + IdSignature.CompositeSignature(fileSig, build()) + } + container != null -> { + val preservedContainer = container!! + container = null + buildContainerSignature(preservedContainer) + } + hashIdAcc == null -> { IdSignature.CommonSignature(packageFqName, classFqName, hashId, mask) } @@ -51,7 +81,6 @@ abstract class IdSignatureBuilder { } } - protected fun setExpected(f: Boolean) { mask = mask or IdSignature.Flags.IS_EXPECT.encode(f) } @@ -60,6 +89,14 @@ abstract class IdSignatureBuilder { mask = mask or IdSignature.Flags.IS_JAVA_FOR_KOTLIN_OVERRIDE_PROPERTY.encode(f) } + protected fun setSyntheticJavaProperty(f: Boolean) { + mask = mask or IdSignature.Flags.IS_SYNTHETIC_JAVA_PROPERTY.encode(f) + } + + protected open fun platformSpecificModule(descriptor: ModuleDescriptor) { + error("Should not reach here with $descriptor") + } + protected open fun platformSpecificProperty(descriptor: PropertyDescriptor) {} protected open fun platformSpecificGetter(descriptor: PropertyGetterDescriptor) {} protected open fun platformSpecificSetter(descriptor: PropertySetterDescriptor) {} @@ -69,6 +106,8 @@ abstract class IdSignatureBuilder { protected open fun platformSpecificAlias(descriptor: TypeAliasDescriptor) {} protected open fun platformSpecificPackage(descriptor: PackageFragmentDescriptor) {} + protected open fun isKotlinPackage(descriptor: PackageFragmentDescriptor): Boolean = true + fun buildSignature(declaration: D): IdSignature { reset() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureComputer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureComputer.kt index 2b4bc356b49..0d831b085b2 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureComputer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureComputer.kt @@ -5,17 +5,30 @@ package org.jetbrains.kotlin.backend.common.serialization.signature +import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrEnumEntry +import org.jetbrains.kotlin.ir.declarations.IrField +import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.ir.util.IdSignature interface IdSignatureComputer { fun computeSignature(declaration: IrDeclaration): IdSignature? + + fun inFile(file: IrFileSymbol?, block: () -> Unit) } class DescToIrIdSignatureComputer(private val delegate: IdSignatureDescriptor) : IdSignatureComputer { override fun computeSignature(declaration: IrDeclaration): IdSignature? { - return if (declaration is IrEnumEntry) delegate.composeEnumEntrySignature(declaration.descriptor) - else delegate.composeSignature(declaration.descriptor) + return when (declaration) { + is IrEnumEntry -> delegate.composeEnumEntrySignature(declaration.descriptor) + is IrField -> delegate.composeFieldSignature(declaration.descriptor) + is IrAnonymousInitializer -> delegate.composeAnonInitSignature(declaration.descriptor) + else -> delegate.composeSignature(declaration.descriptor) + } + } + + override fun inFile(file: IrFileSymbol?, block: () -> Unit) { + block() } } \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureDescriptor.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureDescriptor.kt index 059f80b18bf..a818bafeffa 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureDescriptor.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureDescriptor.kt @@ -5,32 +5,58 @@ package org.jetbrains.kotlin.backend.common.serialization.signature +import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant +import org.jetbrains.kotlin.backend.common.serialization.mangle.SpecialDeclarationType import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.ir.descriptors.IrImplementingDelegateDescriptor +import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.IdSignatureComposer import org.jetbrains.kotlin.ir.util.KotlinMangler +import org.jetbrains.kotlin.renderer.DescriptorRenderer open class IdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMangler) : IdSignatureComposer { - protected open fun createSignatureBuilder(): DescriptorBasedSignatureBuilder = DescriptorBasedSignatureBuilder(mangler) + protected open fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder = DescriptorBasedSignatureBuilder(mangler, type) - protected open class DescriptorBasedSignatureBuilder(private val mangler: KotlinMangler.DescriptorMangler) : + protected open inner class DescriptorBasedSignatureBuilder(private val mangler: KotlinMangler.DescriptorMangler, private val type: SpecialDeclarationType) : IdSignatureBuilder(), DeclarationDescriptorVisitor { override fun accept(d: DeclarationDescriptor) { d.accept(this, null) + assert(!isTopLevelPrivate) { "$d is Top level private" } + } + + private fun createContainer() { + container = container?.let { + buildContainerSignature(it) + } ?: build() + + reset(false) } private fun reportUnexpectedDescriptor(descriptor: DeclarationDescriptor) { error("Unexpected descriptor $descriptor") } - private fun collectFqNames(descriptor: DeclarationDescriptorNonRoot) { + private fun setDescription(descriptor: DeclarationDescriptor) { + if (container != null) { + description = DescriptorRenderer.SHORT_NAMES_IN_TYPES.render(descriptor) + } + } + + private fun collectParents(descriptor: DeclarationDescriptorNonRoot) { descriptor.containingDeclaration.accept(this, null) classFqnSegments.add(descriptor.name.asString()) } + private val DeclarationDescriptorWithVisibility.isPrivate: Boolean + get() = visibility == DescriptorVisibilities.PRIVATE + + private val DeclarationDescriptorWithVisibility.isTopLevelPrivate: Boolean + get() = isPrivate && mangler.run { !isPlatformSpecificExport() } && containingDeclaration?.let { it is PackageFragmentDescriptor && isKotlinPackage(it) } ?: false + override fun visitPackageFragmentDescriptor(descriptor: PackageFragmentDescriptor, data: Nothing?) { packageFqn = descriptor.fqName platformSpecificPackage(descriptor) @@ -40,82 +66,133 @@ open class IdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMa packageFqn = descriptor.fqName } - override fun visitVariableDescriptor(descriptor: VariableDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) + override fun visitVariableDescriptor(descriptor: VariableDescriptor, data: Nothing?) { + reportUnexpectedDescriptor(descriptor) + } override fun visitFunctionDescriptor(descriptor: FunctionDescriptor, data: Nothing?) { - hashId = mangler.run { descriptor.signatureMangle } - collectFqNames(descriptor) + collectParents(descriptor) + hashId = mangler.run { descriptor.signatureMangle() } + isTopLevelPrivate = isTopLevelPrivate or descriptor.isTopLevelPrivate + setDescription(descriptor) setExpected(descriptor.isExpect) platformSpecificFunction(descriptor) } - override fun visitTypeParameterDescriptor(descriptor: TypeParameterDescriptor, data: Nothing?) = - reportUnexpectedDescriptor(descriptor) + override fun visitTypeParameterDescriptor(descriptor: TypeParameterDescriptor, data: Nothing?) { + descriptor.containingDeclaration.accept(this, null) + createContainer() + + classFqnSegments.add(MangleConstant.TYPE_PARAMETER_MARKER_NAME) + hashId = descriptor.index.toLong() + description = DescriptorRenderer.SHORT_NAMES_IN_TYPES.render(descriptor) + } override fun visitClassDescriptor(descriptor: ClassDescriptor, data: Nothing?) { - collectFqNames(descriptor) + collectParents(descriptor) + isTopLevelPrivate = isTopLevelPrivate or descriptor.isTopLevelPrivate + + if (descriptor.kind == ClassKind.ENUM_ENTRY) { + if (type != SpecialDeclarationType.ENUM_ENTRY) { + classFqnSegments.add(MangleConstant.ENUM_ENTRY_CLASS_NAME) + } + } + + setDescription(descriptor) setExpected(descriptor.isExpect) platformSpecificClass(descriptor) } override fun visitTypeAliasDescriptor(descriptor: TypeAliasDescriptor, data: Nothing?) { - collectFqNames(descriptor) + collectParents(descriptor) + isTopLevelPrivate = isTopLevelPrivate or descriptor.isTopLevelPrivate setExpected(descriptor.isExpect) platformSpecificAlias(descriptor) } - override fun visitModuleDeclaration(descriptor: ModuleDescriptor, data: Nothing?) = reportUnexpectedDescriptor(descriptor) + override fun visitModuleDeclaration(descriptor: ModuleDescriptor, data: Nothing?) { + platformSpecificModule(descriptor) + } override fun visitConstructorDescriptor(constructorDescriptor: ConstructorDescriptor, data: Nothing?) { - hashId = mangler.run { constructorDescriptor.signatureMangle } - collectFqNames(constructorDescriptor) + collectParents(constructorDescriptor) + hashId = mangler.run { constructorDescriptor.signatureMangle() } platformSpecificConstructor(constructorDescriptor) } override fun visitScriptDescriptor(scriptDescriptor: ScriptDescriptor, data: Nothing?) = - reportUnexpectedDescriptor(scriptDescriptor) + visitClassDescriptor(scriptDescriptor, data) override fun visitPropertyDescriptor(descriptor: PropertyDescriptor, data: Nothing?) { - hashId = mangler.run { descriptor.signatureMangle } - collectFqNames(descriptor) - setExpected(descriptor.isExpect) - platformSpecificProperty(descriptor) + val actualDeclaration = if (descriptor is IrPropertyDelegateDescriptor) { + descriptor.correspondingProperty + } else { + descriptor + } + collectParents(actualDeclaration) + isTopLevelPrivate = isTopLevelPrivate or actualDeclaration.isTopLevelPrivate + + + hashId = mangler.run { actualDeclaration.signatureMangle() } + setExpected(actualDeclaration.isExpect) + platformSpecificProperty(actualDeclaration) + if (type == SpecialDeclarationType.BACKING_FIELD) { + if (descriptor !is IrImplementingDelegateDescriptor) { + createContainer() + classFqnSegments.add(MangleConstant.BACKING_FIELD_NAME) + } + } } - override fun visitValueParameterDescriptor(descriptor: ValueParameterDescriptor, data: Nothing?) = + override fun visitValueParameterDescriptor(descriptor: ValueParameterDescriptor, data: Nothing?) { reportUnexpectedDescriptor(descriptor) + } override fun visitPropertyGetterDescriptor(descriptor: PropertyGetterDescriptor, data: Nothing?) { - hashIdAcc = mangler.run { descriptor.signatureMangle } descriptor.correspondingProperty.accept(this, null) + hashIdAcc = mangler.run { descriptor.signatureMangle() } classFqnSegments.add(descriptor.name.asString()) setExpected(descriptor.isExpect) platformSpecificGetter(descriptor) } override fun visitPropertySetterDescriptor(descriptor: PropertySetterDescriptor, data: Nothing?) { - hashIdAcc = mangler.run { descriptor.signatureMangle } descriptor.correspondingProperty.accept(this, null) + hashIdAcc = mangler.run { descriptor.signatureMangle() } classFqnSegments.add(descriptor.name.asString()) setExpected(descriptor.isExpect) platformSpecificSetter(descriptor) } - override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor, data: Nothing?) = + override fun visitReceiverParameterDescriptor(descriptor: ReceiverParameterDescriptor, data: Nothing?) { reportUnexpectedDescriptor(descriptor) + } + + override val currentFileSignature: IdSignature.FileSignature? get() = null } - private val composer by lazy { createSignatureBuilder() } override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? { - return if (mangler.run { descriptor.isExported() }) { - composer.buildSignature(descriptor) - } else null + return if (mangler.run { descriptor.isExported(compatibleMode = false) }) + createSignatureBuilder(SpecialDeclarationType.REGULAR).buildSignature(descriptor) + else null } override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? { - return if (mangler.run { descriptor.isExportEnumEntry() }) { - composer.buildSignature(descriptor) + return if (mangler.run { descriptor.isExported(compatibleMode = false) }) + createSignatureBuilder(SpecialDeclarationType.ENUM_ENTRY).buildSignature(descriptor) + else null + } + + override fun composeFieldSignature(descriptor: PropertyDescriptor): IdSignature? { + return if (mangler.run { descriptor.isExported(compatibleMode = false) }) { + createSignatureBuilder(SpecialDeclarationType.BACKING_FIELD).buildSignature(descriptor) } else null } + + override fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature? { + return if (mangler.run { descriptor.isExported(compatibleMode = false) }) + createSignatureBuilder(SpecialDeclarationType.ANON_INIT).buildSignature(descriptor) + else null + } } \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt index d3615d5c003..77a090de906 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt @@ -6,10 +6,14 @@ package org.jetbrains.kotlin.backend.common.serialization.signature import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable +import org.jetbrains.kotlin.backend.common.serialization.mangle.MangleConstant +import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.overrides.isOverridableFunction import org.jetbrains.kotlin.ir.overrides.isOverridableProperty +import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.ir.util.render @@ -20,73 +24,171 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat private val publicSignatureBuilder = PublicIdSigBuilder() - override fun computeSignature(declaration: IrDeclaration): IdSignature? { - return if (mangler.run { declaration.isExported() }) { - publicSignatureBuilder.buildSignature(declaration) - } else null + override fun computeSignature(declaration: IrDeclaration): IdSignature { + return publicSignatureBuilder.buildSignature(declaration) } - fun composePublicIdSignature(declaration: IrDeclaration): IdSignature { - assert(mangler.run { declaration.isExported() }) { + fun composePublicIdSignature(declaration: IrDeclaration, compatibleMode: Boolean): IdSignature { + assert(mangler.run { declaration.isExported(compatibleMode) }) { "${declaration.render()} expected to be exported" } return publicSignatureBuilder.buildSignature(declaration) } - private inner class PublicIdSigBuilder : IdSignatureBuilder(), IrElementVisitorVoid { + private var currentFileSignatureX: IdSignature.FileSignature? = null + + override fun inFile(file: IrFileSymbol?, block: () -> Unit) { + currentFileSignatureX = file?.let { IdSignature.FileSignature(it) } + + block() + + currentFileSignatureX = null + } + + private fun IrDeclaration.checkIfPlatformSpecificExport(): Boolean = mangler.run { isPlatformSpecificExport() } + + private var localCounter: Long = 0 + private var scopeCounter: Int = 0 + + // TODO: we need to disentangle signature construction with declaration tables. + lateinit var table: DeclarationTable + + fun reset() { + localCounter = 0 + scopeCounter = 0 + } + + private inner class PublicIdSigBuilder(private val containerSig: IdSignature? = null) : IdSignatureBuilder(), + IrElementVisitorVoid { + + override val currentFileSignature: IdSignature.FileSignature? + get() = currentFileSignatureX override fun accept(d: IrDeclaration) { d.acceptVoid(this) } - private fun collectFqNames(declaration: IrDeclarationWithName) { + private fun createContainer() { + container = container?.let { + buildContainerSignature(it) + } ?: build() + + reset(false) + } + + private fun collectParents(declaration: IrDeclarationWithName) { declaration.parent.acceptVoid(this) classFqnSegments.add(declaration.name.asString()) } - override fun visitElement(element: IrElement) = error("Unexpected element ${element.render()}") + private fun setDescription(declaration: IrDeclaration) { + if (container != null) { + description = declaration.render() + } + } + + override fun visitElement(element: IrElement) = + error("Unexpected element ${element.render()}") + + override fun visitErrorDeclaration(declaration: IrErrorDeclaration) { + description = declaration.render() + } override fun visitPackageFragment(declaration: IrPackageFragment) { packageFqn = declaration.fqName } + private val IrDeclarationWithVisibility.isTopLevelPrivate: Boolean + get() = visibility == DescriptorVisibilities.PRIVATE && !checkIfPlatformSpecificExport() && parent is IrPackageFragment + override fun visitClass(declaration: IrClass) { - collectFqNames(declaration) + collectParents(declaration) + isTopLevelPrivate = isTopLevelPrivate || declaration.isTopLevelPrivate + if (declaration.kind == ClassKind.ENUM_ENTRY) { + classFqnSegments.add(MangleConstant.ENUM_ENTRY_CLASS_NAME) + } + setDescription(declaration) setExpected(declaration.isExpect) } + private fun IrDeclarationWithName.hashId(): Long = mangler.run { signatureMangle() } + override fun visitSimpleFunction(declaration: IrSimpleFunction) { val property = declaration.correspondingPropertySymbol if (property != null) { - hashIdAcc = mangler.run { declaration.signatureMangle } property.owner.acceptVoid(this) + val preservedId = declaration.hashId() + if (container != null) { + createContainer() + hashId = preservedId + } else { + hashIdAcc = preservedId + } classFqnSegments.add(declaration.name.asString()) } else { - hashId = mangler.run { declaration.signatureMangle } - collectFqNames(declaration) + collectParents(declaration) + isTopLevelPrivate = isTopLevelPrivate || declaration.isTopLevelPrivate + hashId = declaration.hashId() + setDescription(declaration) } setExpected(declaration.isExpect) } override fun visitConstructor(declaration: IrConstructor) { - hashId = mangler.run { declaration.signatureMangle } - collectFqNames(declaration) + collectParents(declaration) + hashId = declaration.hashId() setExpected(declaration.isExpect) } override fun visitProperty(declaration: IrProperty) { - hashId = mangler.run { declaration.signatureMangle } - collectFqNames(declaration) + collectParents(declaration) + isTopLevelPrivate = isTopLevelPrivate || declaration.isTopLevelPrivate + hashId = declaration.hashId() setExpected(declaration.isExpect) } override fun visitTypeAlias(declaration: IrTypeAlias) { - collectFqNames(declaration) + collectParents(declaration) + isTopLevelPrivate = isTopLevelPrivate || declaration.isTopLevelPrivate } override fun visitEnumEntry(declaration: IrEnumEntry) { - collectFqNames(declaration) + collectParents(declaration) + } + + override fun visitTypeParameter(declaration: IrTypeParameter) { + val rawParent = declaration.parent + + val parent = if (rawParent is IrSimpleFunction) { + rawParent.correspondingPropertySymbol?.owner ?: rawParent + } else rawParent + + parent.accept(this, null) + createContainer() + + if (parent is IrProperty && parent.setter == rawParent) { + classFqnSegments.add(MangleConstant.TYPE_PARAMETER_MARKER_NAME_SETTER) + } else { + classFqnSegments.add(MangleConstant.TYPE_PARAMETER_MARKER_NAME) + } + hashId = declaration.index.toLong() + description = declaration.render() + } + + override fun visitField(declaration: IrField) { + val prop = declaration.correspondingPropertySymbol?.owner + + if (prop != null) { + // backing field + prop.acceptVoid(this) + createContainer() + classFqnSegments.add(MangleConstant.BACKING_FIELD_NAME) + description = declaration.render() + } else { + collectParents(declaration) + hashId = declaration.hashId() + } } } } @@ -100,64 +202,73 @@ open class IdSignatureSerializer( private val mangler: KotlinMangler.IrMangler = publicSignatureBuilder.mangler - override fun computeSignature(declaration: IrDeclaration): IdSignature? { - return if (mangler.run { declaration.isExported() }) { - publicSignatureBuilder.composePublicIdSignature(declaration) - } else null + override fun computeSignature(declaration: IrDeclaration): IdSignature { + return publicSignatureBuilder.computeSignature(declaration) } - fun composeSignatureForDeclaration(declaration: IrDeclaration): IdSignature { - return if (mangler.run { declaration.isExported() }) { - publicSignatureBuilder.composePublicIdSignature(declaration) - } else composeFileLocalIdSignature(declaration) + fun composeSignatureForDeclaration(declaration: IrDeclaration, compatibleMode: Boolean): IdSignature { + return if (mangler.run { declaration.isExported(compatibleMode) }) { + publicSignatureBuilder.composePublicIdSignature(declaration, compatibleMode) + } else composeFileLocalIdSignature(declaration, compatibleMode) } private var localIndex: Long = localIndexOffset private var scopeIndex: Int = scopeIndexOffset - private fun composeContainerIdSignature(container: IrDeclarationParent): IdSignature = + override fun inFile(file: IrFileSymbol?, block: () -> Unit) { + publicSignatureBuilder.inFile(file, block) + } + + private fun composeContainerIdSignature(container: IrDeclarationParent, compatibleMode: Boolean): IdSignature = when (container) { - is IrPackageFragment -> IdSignature.PublicSignature(container.fqName.asString(), "", null, 0) - is IrDeclaration -> table.signatureByDeclaration(container) + is IrPackageFragment -> IdSignature.CommonSignature(container.fqName.asString(), "", null, 0) + is IrDeclaration -> table.signatureByDeclaration(container, compatibleMode) else -> error("Unexpected container ${container.render()}") } - fun composeFileLocalIdSignature(declaration: IrDeclaration): IdSignature { - assert(!mangler.run { declaration.isExported() }) + fun composeFileLocalIdSignature(declaration: IrDeclaration, compatibleMode: Boolean): IdSignature { + assert(!mangler.run { declaration.isExported(compatibleMode) }) - return table.privateDeclarationSignature(declaration) { + return table.privateDeclarationSignature(declaration, compatibleMode) { when (declaration) { is IrValueDeclaration -> IdSignature.ScopeLocalDeclaration(scopeIndex++, declaration.name.asString()) + is IrAnonymousInitializer -> IdSignature.ScopeLocalDeclaration(scopeIndex++, "ANON INIT") + is IrLocalDelegatedProperty -> IdSignature.ScopeLocalDeclaration(scopeIndex++, declaration.name.asString()) is IrField -> { - val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner) } - ?: composeContainerIdSignature(declaration.parent) + val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner, true) } + ?: composeContainerIdSignature(declaration.parent, compatibleMode) IdSignature.FileLocalSignature(p, ++localIndex) } is IrSimpleFunction -> { val parent = declaration.parent - val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner) } - ?: composeContainerIdSignature(parent) + val p = declaration.correspondingPropertySymbol?.let { composeSignatureForDeclaration(it.owner, true) } + ?: composeContainerIdSignature(parent, compatibleMode) IdSignature.FileLocalSignature( p, if (declaration.isOverridableFunction()) { - mangler.run { declaration.signatureMangle } + mangler.run { declaration.signatureMangle() } } else { ++localIndex - } + }, + declaration.render() ) } is IrProperty -> { val parent = declaration.parent IdSignature.FileLocalSignature( - composeContainerIdSignature(parent), + composeContainerIdSignature(parent, compatibleMode), + if (declaration.isOverridableProperty()) { - mangler.run { declaration.signatureMangle } + mangler.run { declaration.signatureMangle() } } else { ++localIndex - } + }, + declaration.render() ) } - else -> IdSignature.FileLocalSignature(composeContainerIdSignature(declaration.parent), ++localIndex) + else -> { + IdSignature.FileLocalSignature(composeContainerIdSignature(declaration.parent, compatibleMode), ++localIndex, declaration.render()) + } } } } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt index 5775e864cf4..e6dd420495f 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDeclarationTable.kt @@ -21,17 +21,13 @@ class JsUniqIdClashTracker : IdSignatureClashTracker { private val committedIdSignatures = mutableMapOf() override fun commit(declaration: IrDeclaration, signature: IdSignature) { - if (!signature.isPublic) return // don't track local ids + if (!signature.isPubliclyVisible) return // don't track local ids if (signature in committedIdSignatures) { val clashedDeclaration = committedIdSignatures[signature]!! val parent = declaration.parent val clashedParent = clashedDeclaration.parent - if (declaration is IrTypeParameter && parent is IrSimpleFunction && parent.parent is IrProperty && parent !== clashedParent) { - // Check whether they are type parameters of the same extension property but different accessors - require(clashedParent is IrSimpleFunction) - require(clashedParent.correspondingPropertySymbol === parent.correspondingPropertySymbol) - } else { + if (declaration !is IrTypeParameter || parent !is IrSimpleFunction || clashedParent !is IrSimpleFunction || parent.correspondingPropertySymbol !== clashedParent.correspondingPropertySymbol) { // TODO: handle clashes properly error("IdSignature clash: $signature; Existed declaration ${clashedDeclaration.render()} clashed with new ${declaration.render()}") } diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsMangler.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsMangler.kt index 17d74ed9d0c..0738cb64448 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsMangler.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsMangler.kt @@ -50,8 +50,7 @@ abstract class AbstractJsDescriptorMangler : DescriptorBasedKotlinManglerImpl() override fun DeclarationDescriptor.isPlatformSpecificExported() = false } - private class JsDescriptorManglerComputer(builder: StringBuilder, mode: MangleMode) : - DescriptorMangleComputer(builder, mode) { + private class JsDescriptorManglerComputer(builder: StringBuilder, mode: MangleMode) : DescriptorMangleComputer(builder, mode) { override fun copy(newMode: MangleMode): DescriptorMangleComputer = JsDescriptorManglerComputer(builder, newMode) } diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIdSignatureDescriptor.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIdSignatureDescriptor.kt index bad10b5d8e9..eba778208aa 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIdSignatureDescriptor.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIdSignatureDescriptor.kt @@ -5,28 +5,35 @@ package org.jetbrains.kotlin.backend.jvm.serialization +import org.jetbrains.kotlin.backend.common.serialization.mangle.SpecialDeclarationType import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.KotlinMangler import org.jetbrains.kotlin.load.java.descriptors.JavaForKotlinOverridePropertyDescriptor +import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.overriddenTreeAsSequence +import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.contains import org.jetbrains.kotlin.utils.addToStdlib.cast class JvmIdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMangler) : IdSignatureDescriptor(mangler) { - private class JvmDescriptorBasedSignatureBuilder(mangler: KotlinMangler.DescriptorMangler) : DescriptorBasedSignatureBuilder(mangler) { + private inner class JvmDescriptorBasedSignatureBuilder(mangler: KotlinMangler.DescriptorMangler, type: SpecialDeclarationType) : DescriptorBasedSignatureBuilder(mangler, type) { override fun platformSpecificFunction(descriptor: FunctionDescriptor) { keepTrackOfOverridesForPossiblyClashingFakeOverride(descriptor) } + override fun isKotlinPackage(descriptor: PackageFragmentDescriptor): Boolean { + return descriptor !is LazyJavaPackageFragment + } + override fun platformSpecificProperty(descriptor: PropertyDescriptor) { // See KT-31646 setSpecialJavaProperty(descriptor is JavaForKotlinOverridePropertyDescriptor) + setSyntheticJavaProperty(descriptor is SyntheticJavaPropertyDescriptor) keepTrackOfOverridesForPossiblyClashingFakeOverride(descriptor) } @@ -38,6 +45,10 @@ class JvmIdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMang keepTrackOfOverridesForPossiblyClashingFakeOverride(descriptor) } + override fun platformSpecificModule(descriptor: ModuleDescriptor) { + + } + private fun keepTrackOfOverridesForPossiblyClashingFakeOverride(descriptor: CallableMemberDescriptor) { if (descriptor.kind != CallableMemberDescriptor.Kind.FAKE_OVERRIDE) return val containingClass = descriptor.containingDeclaration as? ClassDescriptor ?: return @@ -95,19 +106,6 @@ class JvmIdSignatureDescriptor(private val mangler: KotlinMangler.DescriptorMang } } - override fun createSignatureBuilder(): DescriptorBasedSignatureBuilder = JvmDescriptorBasedSignatureBuilder(mangler) - - /* In multi-threaded environment, we cannot afford to cache a signature builder, as in IdSignatureBuilder. */ - - override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? { - return if (mangler.run { descriptor.isExported() }) { - createSignatureBuilder().buildSignature(descriptor) - } else null - } - - override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? { - return if (mangler.run { descriptor.isExportEnumEntry() }) { - createSignatureBuilder().buildSignature(descriptor) - } else null - } + override fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder = + JvmDescriptorBasedSignatureBuilder(mangler, type) } \ No newline at end of file diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt index 1564adca0a0..5922cebcdb0 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt @@ -155,7 +155,6 @@ class JvmIrLinker( } override fun declareIrSymbol(symbol: IrSymbol) { - assert(symbol.isPublicApi || symbol.descriptor.isJavaDescriptor()) if (symbol is IrFieldSymbol) { declareJavaFieldStub(symbol) } else { diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt index 378de38b318..b9fbb71dd68 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmMangler.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.backend.common.serialization.mangle.ir.IrExportCheck import org.jetbrains.kotlin.backend.common.serialization.mangle.ir.IrMangleComputer import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.idea.MainFunctionDetector import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -87,6 +88,8 @@ abstract class AbstractJvmDescriptorMangler(private val mainDetector: MainFuncti // For more details see JvmPlatformOverloadsSpecificityComparator.kt return if (isJavaField) MangleConstant.JAVA_FIELD_SUFFIX else null } + + override fun visitModuleDeclaration(descriptor: ModuleDescriptor, data: Nothing?) {} // SKIP in case of synthetic properties } override fun getExportChecker(): KotlinExportChecker = exportChecker diff --git a/generators/interpreter/GenerateInterpreterMap.kt b/generators/interpreter/GenerateInterpreterMap.kt index 7afffd2f80e..6d6928f6697 100644 --- a/generators/interpreter/GenerateInterpreterMap.kt +++ b/generators/interpreter/GenerateInterpreterMap.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns +import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.ir.types.impl.originalKotlinType import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.Name @@ -264,6 +265,10 @@ private fun getIrBuiltIns(): IrBuiltIns { override fun composeSignature(descriptor: DeclarationDescriptor): IdSignature? = null override fun composeEnumEntrySignature(descriptor: ClassDescriptor): IdSignature? = null + + override fun composeAnonInitSignature(descriptor: ClassDescriptor): IdSignature? = null + + override fun composeFieldSignature(descriptor: PropertyDescriptor): IdSignature? = null } val symbolTable = SymbolTable(signaturer, IrFactoryImpl) val typeTranslator = TypeTranslatorImpl(symbolTable, languageSettings, moduleDescriptor) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt index d7d3e3ca1f5..e2f3070e554 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/InlineClasses.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrProperty import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol -import org.jetbrains.kotlin.ir.symbols.isPublicApi import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.classifierOrFail import org.jetbrains.kotlin.ir.types.makeNullable @@ -300,7 +299,7 @@ private object IrTypeInlineClassesSupport : InlineClassesSupport Boolean): Boolean { } internal fun IrClass.isObjCClass() = this.packageFqName != interopPackageName && - selfOrAnySuperClass { it.symbol.isPublicApi && objCObjectIdSignature == it.symbol.signature } + selfOrAnySuperClass { objCObjectIdSignature == it.symbol.signature } fun ClassDescriptor.isExternalObjCClass(): Boolean = this.isObjCClass() && this.parentsWithSelf.filterIsInstance().any { @@ -78,11 +77,10 @@ fun ClassDescriptor.isObjCMetaClass(): Boolean = this.getAllSuperClassifiers().a } fun IrClass.isObjCMetaClass(): Boolean = selfOrAnySuperClass { - it.symbol.isPublicApi && objCClassIdSignature == it.symbol.signature + objCClassIdSignature == it.symbol.signature } -fun IrClass.isObjCProtocolClass(): Boolean = - symbol.isPublicApi && objCProtocolIdSignature == symbol.signature +fun IrClass.isObjCProtocolClass(): Boolean = objCProtocolIdSignature == symbol.signature fun ClassDescriptor.isObjCProtocolClass(): Boolean = this.fqNameSafe == objCProtocolFqName diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt index 75b79d4e9a0..8fe7819005a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/ToplevelPhases.kt @@ -10,8 +10,9 @@ import org.jetbrains.kotlin.backend.konan.MemoryModel import org.jetbrains.kotlin.backend.konan.llvm.* import org.jetbrains.kotlin.backend.konan.lower.ExpectToActualDefaultValueCopier import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExport -import org.jetbrains.kotlin.backend.konan.serialization.* -import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport +import org.jetbrains.kotlin.backend.konan.serialization.KonanIdSignaturer +import org.jetbrains.kotlin.backend.konan.serialization.KonanIrModuleSerializer +import org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.ir.IrElement diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt index 442498b474a..4c734a01ce9 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt @@ -5,10 +5,11 @@ package org.jetbrains.kotlin.backend.konan.llvm -import kotlinx.cinterop.* +import kotlinx.cinterop.toCValues import llvm.* import org.jetbrains.kotlin.backend.konan.* -import org.jetbrains.kotlin.backend.konan.descriptors.* +import org.jetbrains.kotlin.backend.konan.descriptors.ClassLayoutBuilder +import org.jetbrains.kotlin.backend.konan.descriptors.isTypedIntrinsic import org.jetbrains.kotlin.backend.konan.ir.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* @@ -18,6 +19,7 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import kotlin.collections.set internal fun createLlvmDeclarations(context: Context): LlvmDeclarations { val generator = DeclarationsGeneratorVisitor(context) @@ -107,7 +109,7 @@ private class DeclarationsGeneratorVisitor(override val context: Context) : } } - val objectNamer = Namer("object-") + private val objectNamer = Namer("object-") private fun getLocalName(parent: FqName, declaration: IrDeclaration): Name { if (declaration.isAnonymousObject) { diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIdSignaturer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIdSignaturer.kt index 7833590597f..67e2132420b 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIdSignaturer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIdSignaturer.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.backend.konan.serialization +import org.jetbrains.kotlin.backend.common.serialization.mangle.SpecialDeclarationType import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor import org.jetbrains.kotlin.backend.konan.descriptors.isFromInteropLibrary import org.jetbrains.kotlin.descriptors.* @@ -9,12 +10,13 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module class KonanIdSignaturer(private val mangler: KotlinMangler.DescriptorMangler) : IdSignatureDescriptor(mangler) { - override fun createSignatureBuilder(): DescriptorBasedSignatureBuilder = - KonanDescriptorBasedSignatureBuilder(mangler) + override fun createSignatureBuilder(type: SpecialDeclarationType): DescriptorBasedSignatureBuilder = + KonanDescriptorBasedSignatureBuilder(mangler, type) - private class KonanDescriptorBasedSignatureBuilder( - mangler: KotlinMangler.DescriptorMangler - ) : DescriptorBasedSignatureBuilder(mangler) { + private inner class KonanDescriptorBasedSignatureBuilder( + mangler: KotlinMangler.DescriptorMangler, + type: SpecialDeclarationType + ) : DescriptorBasedSignatureBuilder(mangler, type) { /** * We need a way to distinguish interop declarations from usual ones diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt index 624789319dd..2a02eebc4d0 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrlinker.kt @@ -131,7 +131,7 @@ internal class KonanIrLinker( private fun IdSignature.isInteropSignature(): Boolean = IdSignature.Flags.IS_NATIVE_INTEROP_LIBRARY.test() override fun contains(idSig: IdSignature): Boolean { - if (idSig.isPublic) { + if (idSig.isPubliclyVisible) { if (idSig.isInteropSignature()) { // TODO: add descriptor cache?? return descriptorByIdSignatureFinder.findDescriptorBySignature(idSig) != null @@ -178,7 +178,7 @@ internal class KonanIrLinker( private val declaredDeclaration = mutableMapOf() private fun IdSignature.isForwardDeclarationSignature(): Boolean { - if (isPublic) { + if (isPubliclyVisible) { return packageFqName().run { startsWith(C_NAMES_NAME) || startsWith(OBJC_NAMES_NAME) }