diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt index dbe3dba48de..82c3ff66c1f 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt @@ -32,7 +32,9 @@ import java.util.* class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendContext) { private val externalPackageFragmentSymbol = IrExternalPackageFragmentSymbolImpl(context.internalPackageFragmentDescriptor) - val externalPackageFragment = IrExternalPackageFragmentImpl(externalPackageFragmentSymbol) + val externalPackageFragment = IrExternalPackageFragmentImpl( + externalPackageFragmentSymbol, context.internalPackageFragmentDescriptor.fqName + ) // TODO: Should we drop operator intrinsics in favor of IrDynamicOperatorExpression? diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt index 3c80c5cebbe..79b4770c0e8 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt @@ -87,7 +87,7 @@ class JvmSymbols( private fun createPackage(fqName: FqName): IrPackageFragment = - IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(context.state.module, fqName))) + IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(context.state.module, fqName) private fun createClass( fqName: FqName, diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt index 6f76701cd07..9ad5d3d90b6 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/SharedVariablesManager.kt @@ -32,10 +32,8 @@ class JvmSharedVariablesManager( val symbols: JvmSymbols, val irBuiltIns: IrBuiltIns ) : SharedVariablesManager { - private val jvmInternalPackage = IrExternalPackageFragmentImpl( - IrExternalPackageFragmentSymbolImpl( - EmptyPackageFragmentDescriptor(module, FqName("kotlin.jvm.internal")) - ) + private val jvmInternalPackage = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment( + module, FqName("kotlin.jvm.internal") ) private val refNamespaceClass = jvmInternalPackage.addClass { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt index d5c2e4ce1cc..ef1cb290d85 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget -import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter import org.jetbrains.kotlin.ir.builders.declarations.buildClass @@ -54,13 +53,9 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC // TODO: import IR structures from the library? - private val annotationPackage: IrPackageFragment = IrExternalPackageFragmentImpl( - IrExternalPackageFragmentSymbolImpl( - EmptyPackageFragmentDescriptor( - context.ir.irModule.descriptor, - FqName("java.lang.annotation") - ) - ) + private val annotationPackage: IrPackageFragment = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment( + context.ir.irModule.descriptor, + FqName("java.lang.annotation") ) private fun buildAnnotationClass( diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt index 15cc7eb7552..4dcae054c4d 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/WasmBackendContext.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.backend.js.JsDeclarationFactory import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor -import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext import org.jetbrains.kotlin.ir.backend.js.JsMapping @@ -23,7 +22,6 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol -import org.jetbrains.kotlin.ir.symbols.impl.IrExternalPackageFragmentSymbolImpl import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.name.FqName @@ -58,10 +56,8 @@ class WasmBackendContext( val objectToGetInstanceFunction = mutableMapOf() override val internalPackageFqn = FqName("kotlin.wasm") - private val internalPackageFragment = IrExternalPackageFragmentImpl( - IrExternalPackageFragmentSymbolImpl( - EmptyPackageFragmentDescriptor(builtIns.builtInsModule, FqName("kotlin.wasm.internal")) - ) + private val internalPackageFragment = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment( + builtIns.builtInsModule, FqName("kotlin.wasm.internal") ) override val sharedVariablesManager = JsSharedVariablesManager(irBuiltIns, internalPackageFragment) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrExternalPackageFragmentImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrExternalPackageFragmentImpl.kt index 55684451d28..428f3c80f2f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrExternalPackageFragmentImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrExternalPackageFragmentImpl.kt @@ -16,12 +16,15 @@ package org.jetbrains.kotlin.ir.declarations.impl +import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor import org.jetbrains.kotlin.ir.IrElementBase import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol +import org.jetbrains.kotlin.ir.symbols.impl.IrExternalPackageFragmentSymbolImpl import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.name.FqName @@ -32,8 +35,6 @@ class IrExternalPackageFragmentImpl( ) : IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET), IrExternalPackageFragment { - constructor(symbol: IrExternalPackageFragmentSymbol) : this(symbol, symbol.descriptor.fqName) - init { symbol.bind(this) } @@ -54,4 +55,14 @@ class IrExternalPackageFragmentImpl( declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration } } + + companion object { + fun createEmptyExternalPackageFragment( + module: ModuleDescriptor, + fqName: FqName + ): IrExternalPackageFragmentImpl = + IrExternalPackageFragmentImpl( + IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(module, fqName)), fqName + ) + } } \ No newline at end of file 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 e5b8efb3b24..c57cbc5ab91 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 @@ -355,7 +355,7 @@ open class SymbolTable( return externalPackageFragmentTable.declare( descriptor, { IrExternalPackageFragmentSymbolImpl(descriptor) }, - { IrExternalPackageFragmentImpl(it) } + { IrExternalPackageFragmentImpl(it, descriptor.fqName) } ) } diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ir/AndroidSymbols.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ir/AndroidSymbols.kt index ad18e213669..eee63062735 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ir/AndroidSymbols.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/parcel/ir/AndroidSymbols.kt @@ -444,13 +444,9 @@ class AndroidSymbols( }.symbol private fun createPackage(packageName: String): IrPackageFragment = - IrExternalPackageFragmentImpl( - IrExternalPackageFragmentSymbolImpl( - EmptyPackageFragmentDescriptor( - moduleFragment.descriptor, - FqName(packageName) - ) - ) + IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment( + moduleFragment.descriptor, + FqName(packageName) ) private fun createClass( diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AndroidIrExtension.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AndroidIrExtension.kt index 5fe5dc77aa4..3ec2c70bbbe 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AndroidIrExtension.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AndroidIrExtension.kt @@ -60,8 +60,7 @@ private class AndroidIrTransformer(val extension: AndroidIrExtension, val plugin private fun createPackage(fqName: FqName) = cachedPackages.getOrPut(fqName) { - val descriptor = EmptyPackageFragmentDescriptor(pluginContext.moduleDescriptor, fqName) - IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(descriptor)) + IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(pluginContext.moduleDescriptor, fqName) } private fun createClass(fqName: FqName, isInterface: Boolean = false) =