[IR] Extract IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment
This commit is contained in:
@@ -32,7 +32,9 @@ import java.util.*
|
|||||||
class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendContext) {
|
class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendContext) {
|
||||||
|
|
||||||
private val externalPackageFragmentSymbol = IrExternalPackageFragmentSymbolImpl(context.internalPackageFragmentDescriptor)
|
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?
|
// TODO: Should we drop operator intrinsics in favor of IrDynamicOperatorExpression?
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class JvmSymbols(
|
|||||||
|
|
||||||
|
|
||||||
private fun createPackage(fqName: FqName): IrPackageFragment =
|
private fun createPackage(fqName: FqName): IrPackageFragment =
|
||||||
IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(context.state.module, fqName)))
|
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(context.state.module, fqName)
|
||||||
|
|
||||||
private fun createClass(
|
private fun createClass(
|
||||||
fqName: FqName,
|
fqName: FqName,
|
||||||
|
|||||||
+2
-4
@@ -32,10 +32,8 @@ class JvmSharedVariablesManager(
|
|||||||
val symbols: JvmSymbols,
|
val symbols: JvmSymbols,
|
||||||
val irBuiltIns: IrBuiltIns
|
val irBuiltIns: IrBuiltIns
|
||||||
) : SharedVariablesManager {
|
) : SharedVariablesManager {
|
||||||
private val jvmInternalPackage = IrExternalPackageFragmentImpl(
|
private val jvmInternalPackage = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
||||||
IrExternalPackageFragmentSymbolImpl(
|
module, FqName("kotlin.jvm.internal")
|
||||||
EmptyPackageFragmentDescriptor(module, FqName("kotlin.jvm.internal"))
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private val refNamespaceClass = jvmInternalPackage.addClass {
|
private val refNamespaceClass = jvmInternalPackage.addClass {
|
||||||
|
|||||||
+3
-8
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.config.JvmTarget
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention
|
import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
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.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter
|
import org.jetbrains.kotlin.ir.builders.declarations.addValueParameter
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
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?
|
// TODO: import IR structures from the library?
|
||||||
|
|
||||||
private val annotationPackage: IrPackageFragment = IrExternalPackageFragmentImpl(
|
private val annotationPackage: IrPackageFragment = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
||||||
IrExternalPackageFragmentSymbolImpl(
|
context.ir.irModule.descriptor,
|
||||||
EmptyPackageFragmentDescriptor(
|
FqName("java.lang.annotation")
|
||||||
context.ir.irModule.descriptor,
|
|
||||||
FqName("java.lang.annotation")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun buildAnnotationClass(
|
private fun buildAnnotationClass(
|
||||||
|
|||||||
+2
-6
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.backend.js.JsDeclarationFactory
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsMapping
|
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.IrExternalPackageFragmentSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
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.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -58,10 +56,8 @@ class WasmBackendContext(
|
|||||||
val objectToGetInstanceFunction = mutableMapOf<IrClassSymbol, IrSimpleFunction>()
|
val objectToGetInstanceFunction = mutableMapOf<IrClassSymbol, IrSimpleFunction>()
|
||||||
override val internalPackageFqn = FqName("kotlin.wasm")
|
override val internalPackageFqn = FqName("kotlin.wasm")
|
||||||
|
|
||||||
private val internalPackageFragment = IrExternalPackageFragmentImpl(
|
private val internalPackageFragment = IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
||||||
IrExternalPackageFragmentSymbolImpl(
|
builtIns.builtInsModule, FqName("kotlin.wasm.internal")
|
||||||
EmptyPackageFragmentDescriptor(builtIns.builtInsModule, FqName("kotlin.wasm.internal"))
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
override val sharedVariablesManager = JsSharedVariablesManager(irBuiltIns, internalPackageFragment)
|
override val sharedVariablesManager = JsSharedVariablesManager(irBuiltIns, internalPackageFragment)
|
||||||
|
|||||||
+13
-2
@@ -16,12 +16,15 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElementBase
|
import org.jetbrains.kotlin.ir.IrElementBase
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
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.IrElementTransformer
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
@@ -32,8 +35,6 @@ class IrExternalPackageFragmentImpl(
|
|||||||
) : IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET),
|
) : IrElementBase(UNDEFINED_OFFSET, UNDEFINED_OFFSET),
|
||||||
IrExternalPackageFragment {
|
IrExternalPackageFragment {
|
||||||
|
|
||||||
constructor(symbol: IrExternalPackageFragmentSymbol) : this(symbol, symbol.descriptor.fqName)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
@@ -54,4 +55,14 @@ class IrExternalPackageFragmentImpl(
|
|||||||
declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
|
declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun createEmptyExternalPackageFragment(
|
||||||
|
module: ModuleDescriptor,
|
||||||
|
fqName: FqName
|
||||||
|
): IrExternalPackageFragmentImpl =
|
||||||
|
IrExternalPackageFragmentImpl(
|
||||||
|
IrExternalPackageFragmentSymbolImpl(EmptyPackageFragmentDescriptor(module, fqName)), fqName
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -355,7 +355,7 @@ open class SymbolTable(
|
|||||||
return externalPackageFragmentTable.declare(
|
return externalPackageFragmentTable.declare(
|
||||||
descriptor,
|
descriptor,
|
||||||
{ IrExternalPackageFragmentSymbolImpl(descriptor) },
|
{ IrExternalPackageFragmentSymbolImpl(descriptor) },
|
||||||
{ IrExternalPackageFragmentImpl(it) }
|
{ IrExternalPackageFragmentImpl(it, descriptor.fqName) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-7
@@ -444,13 +444,9 @@ class AndroidSymbols(
|
|||||||
}.symbol
|
}.symbol
|
||||||
|
|
||||||
private fun createPackage(packageName: String): IrPackageFragment =
|
private fun createPackage(packageName: String): IrPackageFragment =
|
||||||
IrExternalPackageFragmentImpl(
|
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(
|
||||||
IrExternalPackageFragmentSymbolImpl(
|
moduleFragment.descriptor,
|
||||||
EmptyPackageFragmentDescriptor(
|
FqName(packageName)
|
||||||
moduleFragment.descriptor,
|
|
||||||
FqName(packageName)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun createClass(
|
private fun createClass(
|
||||||
|
|||||||
+1
-2
@@ -60,8 +60,7 @@ private class AndroidIrTransformer(val extension: AndroidIrExtension, val plugin
|
|||||||
|
|
||||||
private fun createPackage(fqName: FqName) =
|
private fun createPackage(fqName: FqName) =
|
||||||
cachedPackages.getOrPut(fqName) {
|
cachedPackages.getOrPut(fqName) {
|
||||||
val descriptor = EmptyPackageFragmentDescriptor(pluginContext.moduleDescriptor, fqName)
|
IrExternalPackageFragmentImpl.createEmptyExternalPackageFragment(pluginContext.moduleDescriptor, fqName)
|
||||||
IrExternalPackageFragmentImpl(IrExternalPackageFragmentSymbolImpl(descriptor))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createClass(fqName: FqName, isInterface: Boolean = false) =
|
private fun createClass(fqName: FqName, isInterface: Boolean = false) =
|
||||||
|
|||||||
Reference in New Issue
Block a user