[IR] Rename fqName to packageFqName for IrPackageFragment

This commit is contained in:
Ivan Kylchik
2023-05-15 18:07:50 +02:00
committed by Space Team
parent 75ab2ce4e7
commit b9856320cf
54 changed files with 81 additions and 82 deletions
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.builtins.StandardNames.KOTLIN_REFLECT_FQ_NAME
import org.jetbrains.kotlin.ir.IrBuiltIns
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
@@ -242,7 +241,7 @@ abstract class Symbols(
symbol is IrSimpleFunctionSymbol && symbol.owner.let { function ->
function.name.asString() == "<get-isInitialized>" &&
function.isTopLevel &&
function.getPackageFragment().fqName.asString() == "kotlin" &&
function.getPackageFragment().packageFqName.asString() == "kotlin" &&
function.valueParameters.isEmpty() &&
symbol.owner.extensionReceiverParameter?.type?.classOrNull?.owner.let { receiverClass ->
receiverClass?.fqNameWhenAvailable?.toUnsafe() == StandardNames.FqNames.kProperty0
@@ -253,7 +252,7 @@ abstract class Symbols(
symbol is IrSimpleFunctionSymbol && symbol.owner.let { function ->
function.name.asString() == "typeOf" &&
function.valueParameters.isEmpty() &&
(function.parent as? IrPackageFragment)?.fqName == KOTLIN_REFLECT_FQ_NAME
(function.parent as? IrPackageFragment)?.packageFqName == KOTLIN_REFLECT_FQ_NAME
}
}
}
@@ -51,7 +51,7 @@ fun IrFunction.isTopLevelInPackage(name: String, packageName: String): Boolean {
if (name != this.name.asString()) return false
val containingDeclaration = parent as? IrPackageFragment ?: return false
val packageFqName = containingDeclaration.fqName.asString()
val packageFqName = containingDeclaration.packageFqName.asString()
return packageName == packageFqName
}
@@ -32,7 +32,7 @@ class ExportModelGenerator(val context: JsIrBackendContext, val generateNamespac
private val transitiveExportCollector = TransitiveExportCollector(context)
fun generateExport(file: IrPackageFragment): List<ExportedDeclaration> {
val namespaceFqName = file.fqName
val namespaceFqName = file.packageFqName
val exports = file.declarations.memoryOptimizedFlatMap { declaration -> listOfNotNull(exportDeclaration(declaration)) }
return when {
exports.isEmpty() -> emptyList()
@@ -51,7 +51,7 @@ private val JsPackage = FqName("kotlin.js")
private val JsIntrinsicFqName = FqName("kotlin.js.JsIntrinsic")
private fun IrDeclaration.isPlacedInsideInternalPackage() =
(parent as? IrPackageFragment)?.fqName == JsPackage
(parent as? IrPackageFragment)?.packageFqName == JsPackage
private fun isIntrinsic(declaration: IrDeclaration): Boolean =
declaration is IrSimpleFunction && declaration.isPlacedInsideInternalPackage() &&
@@ -73,7 +73,7 @@ class MoveBodilessDeclarationsToSeparatePlaceLowering(private val context: JsIrB
val externalPackageFragment by lazy(LazyThreadSafetyMode.NONE) {
context.externalPackageFragment.getOrPut(irFile.symbol) {
IrFileImpl(fileEntry = irFile.fileEntry, fqName = irFile.fqName, symbol = IrFileSymbolImpl(), module = irFile.module).also {
IrFileImpl(fileEntry = irFile.fileEntry, fqName = irFile.packageFqName, symbol = IrFileSymbolImpl(), module = irFile.module).also {
it.annotations = it.annotations memoryOptimizedPlus irFile.annotations
}
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.util.transformFlat
fun moveOpenClassesToSeparateFiles(moduleFragment: IrModuleFragment) {
fun createFile(file: IrFile, klass: IrClass): IrFile =
IrFileImpl(fileEntry = file.fileEntry, fqName = file.fqName, symbol = IrFileSymbolImpl(), module = file.module).also {
IrFileImpl(fileEntry = file.fileEntry, fqName = file.packageFqName, symbol = IrFileSymbolImpl(), module = file.module).also {
it.annotations = it.annotations memoryOptimizedPlus file.annotations
it.declarations += klass
klass.parent = it
@@ -55,8 +55,8 @@ class TestGenerator(val context: JsCommonBackendContext, val groupByPackage: Boo
private val packageSuites = hashMapOf<FqName, IrSimpleFunction>()
private fun suiteForPackage(irFile: IrFile) = packageSuites.getOrPut(irFile.fqName) {
context.suiteFun!!.createInvocation(irFile.fqName.asString(), context.createTestContainerFun(irFile))
private fun suiteForPackage(irFile: IrFile) = packageSuites.getOrPut(irFile.packageFqName) {
context.suiteFun!!.createInvocation(irFile.packageFqName.asString(), context.createTestContainerFun(irFile))
}
private fun IrSimpleFunctionSymbol.createInvocation(
@@ -233,7 +233,7 @@ class IrModuleToJsTransformer(
globalNameScope = globalNameScope
)
val result = JsIrProgramFragment(fileExports.file.fqName.asString()).apply {
val result = JsIrProgramFragment(fileExports.file.packageFqName.asString()).apply {
if (shouldGeneratePolyfills) {
polyfills.statements += backendContext.polyfills.getAllPolyfillsFor(fileExports.file)
}
@@ -73,7 +73,7 @@ fun IrConstructor.hasStrictSignature(context: JsIrBackendContext): Boolean {
}
private fun getKotlinOrJsQualifier(parent: IrPackageFragment, shouldIncludePackage: Boolean): FqName? {
return (parent as? IrFile)?.getJsQualifier()?.let { FqName(it) } ?: parent.fqName.takeIf { shouldIncludePackage }
return (parent as? IrFile)?.getJsQualifier()?.let { FqName(it) } ?: parent.packageFqName.takeIf { shouldIncludePackage }
}
val IrFunctionAccessExpression.typeArguments: List<IrType?>
@@ -56,7 +56,7 @@ class JsMainFunctionDetector(val context: JsCommonBackendContext) {
var resultPair: Pair<String, IrSimpleFunction>? = null
module.files.forEach { f ->
val fqn = f.fqName.asString()
val fqn = f.packageFqName.asString()
getMainFunctionOrNull(f)?.let {
val result = resultPair
if (result == null) {
@@ -712,7 +712,7 @@ class ExpressionCodegen(
// Copy-pasted bytecode blocks are not suspension points.
symbol.owner.isInline ->
if (symbol.owner.name.asString() == "suspendCoroutineUninterceptedOrReturn" &&
symbol.owner.getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics")
symbol.owner.getPackageFragment().packageFqName == FqName("kotlin.coroutines.intrinsics")
)
SuspensionPointKind.ALWAYS
else
@@ -204,9 +204,9 @@ class IrIntrinsicMethods(val irBuiltIns: IrBuiltIns, val symbols: JvmSymbols) {
val parent = owner.parent
val ownerFqName = when {
parent is IrClass && parent.isFileClass ->
(parent.parent as IrPackageFragment).fqName
(parent.parent as IrPackageFragment).packageFqName
parent is IrClass -> parent.fqNameWhenAvailable ?: return null
parent is IrPackageFragment -> parent.fqName
parent is IrPackageFragment -> parent.packageFqName
else -> return null
}
return Key(
@@ -116,5 +116,5 @@ private class AssertionLowering(private val context: JvmBackendContext) :
}
private val IrFunction.isAssert: Boolean
get() = name.asString() == "assert" && getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
get() = name.asString() == "assert" && getPackageFragment().packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
}
@@ -143,7 +143,7 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa
val facadeClassType =
if (isMultifilePart) AsmUtil.asmTypeByFqNameWithoutInnerClasses(fileClassInfo.facadeClassFqName)
else null
context.state.factory.packagePartRegistry.addPart(irFile.fqName, partClassType.internalName, facadeClassType?.internalName)
context.state.factory.packagePartRegistry.addPart(irFile.packageFqName, partClassType.internalName, facadeClassType?.internalName)
if (fileClassInfo.fileClassFqName != fqNameWhenAvailable) {
context.classNameOverride[this] = JvmClassName.byInternalName(partClassType.internalName)
@@ -170,7 +170,7 @@ fun IrFile.getFileClassInfo(): JvmFileClassInfo =
fun getFileClassInfoFromIrFile(file: IrFile, fileName: String): JvmFileClassInfo {
val parsedAnnotations = parseJvmNameOnFileNoResolve(file)
val packageFqName = parsedAnnotations?.jvmPackageName ?: file.fqName
val packageFqName = parsedAnnotations?.jvmPackageName ?: file.packageFqName
return when {
parsedAnnotations != null -> {
val simpleName = parsedAnnotations.jvmName ?: PackagePartClassUtils.getFilePartShortName(fileName)
@@ -154,7 +154,7 @@ private class FunctionNVarargBridgeLowering(val context: JvmBackendContext) :
get() {
val clazz = classOrNull?.owner ?: return false
val name = clazz.name.asString()
val fqName = (clazz.parent as? IrPackageFragment)?.fqName ?: return false
val fqName = (clazz.parent as? IrPackageFragment)?.packageFqName ?: return false
return when {
name.startsWith("Function") ->
fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME || fqName == FUNCTIONS_PACKAGE_FQ_NAME
@@ -50,7 +50,7 @@ open class JvmInventNamesForLocalClasses(
) {
file.getFileClassInfo().fileClassFqName
} else {
file.fqName.child(clazz.name)
file.packageFqName.child(clazz.name)
}
return JvmClassName.byFqNameWithoutInnerClasses(classFqn).internalName
}
@@ -86,7 +86,7 @@ private class PropertyReferenceDelegationTransformer(val context: JvmBackendCont
}
private val IrStatement.isStdlibCall: Boolean
get() = this is IrCall && symbol.owner.getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
get() = this is IrCall && symbol.owner.getPackageFragment().packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
// Some receivers don't need to be stored in fields and can be reevaluated every time an accessor is called:
private fun IrExpression.canInline(visibleScopes: Set<IrDeclarationParent>): Boolean = when (this) {
@@ -80,7 +80,7 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : FileL
val ownerClass = declaration.parent as? IrClass ?: return true // locals are always accessible
val scopeClassOrPackage = inlineScopeResolver.findContainer(currentScope!!.irElement) ?: return false
val samePackage = ownerClass.getPackageFragment().fqName == scopeClassOrPackage.getPackageFragment()?.fqName
val samePackage = ownerClass.getPackageFragment().packageFqName == scopeClassOrPackage.getPackageFragment()?.packageFqName
return when {
jvmVisibility == Opcodes.ACC_PRIVATE -> ownerClass == scopeClassOrPackage
!withSuper && samePackage && jvmVisibility == 0 /* package only */ -> true
@@ -105,7 +105,7 @@ internal fun IrFunction.isArrayOf(): Boolean {
is IrPackageFragment -> directParent
else -> return false
}
return parent.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME &&
return parent.packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME &&
name.asString().let { it in PRIMITIVE_ARRAY_OF_NAMES || it == ARRAY_OF_NAME } &&
extensionReceiverParameter == null &&
dispatchReceiverParameter == null &&
@@ -115,4 +115,4 @@ internal fun IrFunction.isArrayOf(): Boolean {
internal fun IrFunction.isEmptyArray(): Boolean =
name.asString() == "emptyArray" &&
(parent as? IrPackageFragment)?.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
(parent as? IrPackageFragment)?.packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME
@@ -76,8 +76,8 @@ class IrInlineScopeResolver(context: JvmBackendContext) : IrInlineReferenceLocat
get() = isInline && DescriptorVisibilities.isPrivate(visibility)
private fun IrFunction.isCoroutineIntrinsic(): Boolean =
(name.asString() == "suspendCoroutine" && getPackageFragment().fqName == FqName("kotlin.coroutines")) ||
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment().fqName == FqName("kotlin.coroutines.intrinsics"))
(name.asString() == "suspendCoroutine" && getPackageFragment().packageFqName == FqName("kotlin.coroutines")) ||
(name.asString() == "suspendCoroutineUninterceptedOrReturn" && getPackageFragment().packageFqName == FqName("kotlin.coroutines.intrinsics"))
fun findContainer(scope: IrElement): IrDeclarationContainer? =
findContainer(scope, approximateToPackage = false)
@@ -475,7 +475,7 @@ val IrMemberWithContainerSource.parentClassId: ClassId?
// Translated into IR-based terms from classifierDescriptor?.classId
private val IrClass.classId: ClassId?
get() = when (val parent = parent) {
is IrExternalPackageFragment -> ClassId(parent.fqName, name)
is IrExternalPackageFragment -> ClassId(parent.packageFqName, name)
// TODO: there's `context.classNameOverride`; theoretically it's only relevant for top-level members,
// where `containerSource` is a `JvmPackagePartSource` anyway, but I'm not 100% sure.
is IrClass -> parent.classId?.createNestedClassId(name)
@@ -65,7 +65,7 @@ open class IrTypeMapper(private val context: JvmBackendContext) : KotlinTypeMapp
when (val parent = irClass.parent) {
is IrPackageFragment ->
return StringBuilder().apply {
val fqName = parent.fqName
val fqName = parent.packageFqName
if (!fqName.isRoot) {
append(fqName.asString().replace('.', '/')).append("/")
}
@@ -459,7 +459,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext, private val
}
private val IrSimpleFunction.isBuiltIn: Boolean
get() = getPackageFragment().fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME ||
get() = getPackageFragment().packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME ||
(parent as? IrClass)?.fqNameWhenAvailable?.toUnsafe()?.let(JavaToKotlinClassMap::mapKotlinToJava) != null
// From BuiltinMethodsWithDifferentJvmName.isBuiltinFunctionWithDifferentNameInJvm, BuiltinMethodsWithDifferentJvmName.getJvmName
@@ -71,7 +71,7 @@ class DescriptorMetadataSerializer(
is DescriptorMetadataSource.Class -> serializer!!.classProto(metadata.descriptor).build()
is DescriptorMetadataSource.Script -> serializer!!.classProto(metadata.descriptor).build()
is DescriptorMetadataSource.File ->
serializer!!.packagePartProto(irClass.getPackageFragment().fqName, metadata.descriptors).apply {
serializer!!.packagePartProto(irClass.getPackageFragment().packageFqName, metadata.descriptors).apply {
serializerExtension.serializeJvmPackage(this, type)
}.build()
is DescriptorMetadataSource.Function -> {
@@ -38,7 +38,7 @@ fun excludeDeclarationsFromCodegen(context: WasmBackendContext, module: IrModule
if (isExcluded(d)) {
it.remove()
// Move to "excluded" package fragment preserving fq-name
context.getExcludedPackageFragment(file.fqName).addChild(d)
context.getExcludedPackageFragment(file.packageFqName).addChild(d)
}
}
}
@@ -158,7 +158,7 @@ internal fun IrClass.internalName(): String {
.forEach {
when (it) {
is IrClass -> internalName.insert(0, it.name.asString() + "$")
is IrPackageFragment -> it.fqName.asString().takeIf { it.isNotEmpty() }?.let { internalName.insert(0, "$it.") }
is IrPackageFragment -> it.packageFqName.asString().takeIf { it.isNotEmpty() }?.let { internalName.insert(0, "$it.") }
}
}
return internalName.toString()
@@ -25,5 +25,5 @@ abstract class IrPackageFragment : IrElementBase(), IrDeclarationContainer, IrSy
@ObsoleteDescriptorBasedAPI
abstract val packageFragmentDescriptor: PackageFragmentDescriptor
abstract var fqName: FqName
abstract var packageFqName: FqName
}
@@ -38,7 +38,7 @@ fun IrClass.addAll(members: List<IrDeclaration>) {
val IrFile.path: String get() = fileEntry.name
val IrFile.name: String get() = File(path).name
val IrFile.nameWithPackage: String get() = fqName.child(Name.identifier(name)).asString()
val IrFile.nameWithPackage: String get() = packageFqName.child(Name.identifier(name)).asString()
@ObsoleteDescriptorBasedAPI
fun IrFunction.getIrValueParameter(parameter: ValueParameterDescriptor): IrValueParameter =
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
class IrExternalPackageFragmentImpl(
override val symbol: IrExternalPackageFragmentSymbol,
override var fqName: FqName
override var packageFqName: FqName
) : IrExternalPackageFragment() {
override val startOffset: Int
get() = UNDEFINED_OFFSET
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.name.FqName
class IrFileImpl(
override var fileEntry: IrFileEntry,
override val symbol: IrFileSymbol,
override var fqName: FqName
override var packageFqName: FqName
) : IrFile() {
constructor(
fileEntry: IrFileEntry,
@@ -513,7 +513,7 @@ interface IrTypeSystemContext : TypeSystemContext, TypeSystemCommonSuperTypesCon
else null
} else {
val parent = owner.parent
if (parent is IrPackageFragment && parent.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME)
if (parent is IrPackageFragment && parent.packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME)
owner.name.asString()
else null
}
@@ -524,7 +524,7 @@ interface IrTypeSystemContext : TypeSystemContext, TypeSystemCommonSuperTypesCon
while (true) {
val parent = declaration.parent
if (parent is IrPackageFragment) {
return parent.fqName.startsWith(StandardNames.BUILT_INS_PACKAGE_NAME)
return parent.packageFqName.startsWith(StandardNames.BUILT_INS_PACKAGE_NAME)
}
declaration = parent as? IrDeclaration ?: return false
}
@@ -50,7 +50,7 @@ object IrErrorClassImpl : IrClassImpl(
@ObsoleteDescriptorBasedAPI
override val packageFragmentDescriptor: PackageFragmentDescriptor
get() = TODO("Not yet implemented")
override var fqName: FqName
override var packageFqName: FqName
get() = FqName.ROOT
set(_) = TODO("Not yet implemented")
}
@@ -130,7 +130,7 @@ fun <T : Enum<T>> IrType.getPrimitiveOrUnsignedType(byIdSignature: Map<IdSignatu
val klass = symbol.owner
val parent = klass.parent
if (parent !is IrPackageFragment || parent.fqName != StandardNames.BUILT_INS_PACKAGE_FQ_NAME) return null
if (parent !is IrPackageFragment || parent.packageFqName != StandardNames.BUILT_INS_PACKAGE_FQ_NAME) return null
return byShortName[klass.name]
}
@@ -34,7 +34,7 @@ fun IrFunction.isInlineArrayConstructor(builtIns: IrBuiltIns): Boolean =
val IrDeclarationParent.fqNameForIrSerialization: FqName
get() = when (this) {
is IrPackageFragment -> this.fqName
is IrPackageFragment -> this.packageFqName
is IrDeclarationWithName -> this.parent.fqNameForIrSerialization.child(this.name)
else -> error(this)
}
@@ -44,7 +44,7 @@ val IrDeclarationParent.fqNameForIrSerialization: FqName
*/
val IrDeclarationParent.kotlinFqName: FqName
get() = when (this) {
is IrPackageFragment -> this.fqName
is IrPackageFragment -> this.packageFqName
is IrClass -> {
if (isFileClass) {
parent.kotlinFqName
@@ -59,7 +59,7 @@ val IrDeclarationParent.kotlinFqName: FqName
val IrClass.classId: ClassId?
get() = when (val parent = this.parent) {
is IrClass -> parent.classId?.createNestedClassId(this.name)
is IrPackageFragment -> ClassId.topLevel(parent.fqName.child(this.name))
is IrPackageFragment -> ClassId.topLevel(parent.packageFqName.child(this.name))
else -> null
}
@@ -106,11 +106,11 @@ fun IrConstructorCall.isAnnotationWithEqualFqName(fqName: FqName): Boolean =
annotationClass.hasEqualFqName(fqName)
val IrClass.packageFqName: FqName?
get() = symbol.signature?.packageFqName() ?: parent.getPackageFragment()?.fqName
get() = symbol.signature?.packageFqName() ?: parent.getPackageFragment()?.packageFqName
fun IrDeclarationWithName.hasEqualFqName(fqName: FqName): Boolean =
symbol.hasEqualFqName(fqName) || name == fqName.shortName() && when (val parent = parent) {
is IrPackageFragment -> parent.fqName == fqName.parent()
is IrPackageFragment -> parent.packageFqName == fqName.parent()
is IrDeclarationWithName -> parent.hasEqualFqName(fqName.parent())
else -> false
}
@@ -39,8 +39,8 @@ interface SymbolRenamer {
fun getClassName(symbol: IrClassSymbol): Name = symbol.owner.name
fun getFunctionName(symbol: IrSimpleFunctionSymbol): Name = symbol.owner.name
fun getFieldName(symbol: IrFieldSymbol): Name = symbol.owner.name
fun getFileName(symbol: IrFileSymbol): FqName = symbol.owner.fqName
fun getExternalPackageFragmentName(symbol: IrExternalPackageFragmentSymbol): FqName = symbol.owner.fqName
fun getFileName(symbol: IrFileSymbol): FqName = symbol.owner.packageFqName
fun getExternalPackageFragmentName(symbol: IrExternalPackageFragmentSymbol): FqName = symbol.owner.packageFqName
fun getEnumEntryName(symbol: IrEnumEntrySymbol): Name = symbol.owner.name
fun getVariableName(symbol: IrVariableSymbol): Name = symbol.owner.name
fun getTypeParameterName(symbol: IrTypeParameterSymbol): Name = symbol.owner.name
@@ -410,7 +410,7 @@ sealed class IdSignature {
) : IdSignature() {
constructor(fileSymbol: IrFileSymbol) : this(
fileSymbol, fileSymbol.owner.fqName, fileSymbol.owner.fileEntry.name
fileSymbol, fileSymbol.owner.packageFqName, fileSymbol.owner.fileEntry.name
)
override fun equals(other: Any?): Boolean = other is FileSignature && id == other.id
@@ -41,12 +41,12 @@ fun IrClassifierSymbol.isKSuspendFunction(): Boolean = this.isClassWithNamePrefi
private fun IrClassifierSymbol.isClassWithName(name: String, packageFqName: FqName): Boolean {
val declaration = owner as IrDeclarationWithName
return name == declaration.name.asString() && (declaration.parent as? IrPackageFragment)?.fqName == packageFqName
return name == declaration.name.asString() && (declaration.parent as? IrPackageFragment)?.packageFqName == packageFqName
}
private fun IrClassifierSymbol.isClassWithNamePrefix(prefix: String, packageFqName: FqName): Boolean {
val declaration = owner as IrDeclarationWithName
return declaration.name.asString().startsWith(prefix) && (declaration.parent as? IrPackageFragment)?.fqName == packageFqName
return declaration.name.asString().startsWith(prefix) && (declaration.parent as? IrPackageFragment)?.packageFqName == packageFqName
}
fun IrType.superTypes(): List<IrType> = classifierOrNull?.superTypes() ?: emptyList()
@@ -77,7 +77,7 @@ private inline fun IrType.isTypeFromKotlinPackage(namePredicate: (Name) -> Boole
val classClassifier = classifier as? IrClassSymbol ?: return false
if (!namePredicate(classClassifier.owner.name)) return false
val parent = classClassifier.owner.parent as? IrPackageFragment ?: return false
return parent.fqName == kotlinPackageFqn
return parent.packageFqName == kotlinPackageFqn
} else return false
}
@@ -322,7 +322,7 @@ val IrClass.isNonCompanionObject: Boolean get() = isObject && !isCompanion
val IrDeclarationWithName.fqNameWhenAvailable: FqName?
get() = when (val parent = parent) {
is IrDeclarationWithName -> parent.fqNameWhenAvailable?.child(name)
is IrPackageFragment -> parent.fqName.child(name)
is IrPackageFragment -> parent.packageFqName.child(name)
else -> null
}
@@ -214,7 +214,7 @@ class RenderIrElementVisitor(private val options: DumpIrTreeOptions = DumpIrTree
}
when (parent) {
is IrPackageFragment -> {
val fqn = parent.fqName.asString()
val fqn = parent.packageFqName.asString()
append(fqn.ifEmpty { "<root>" })
}
is IrDeclaration -> {
@@ -245,10 +245,10 @@ class RenderIrElementVisitor(private val options: DumpIrTreeOptions = DumpIrTree
"MODULE_FRAGMENT name:${declaration.name}"
override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?): String =
"EXTERNAL_PACKAGE_FRAGMENT fqName:${declaration.fqName}"
"EXTERNAL_PACKAGE_FRAGMENT fqName:${declaration.packageFqName}"
override fun visitFile(declaration: IrFile, data: Nothing?): String =
"FILE fqName:${declaration.fqName} fileName:${declaration.path}"
"FILE fqName:${declaration.packageFqName} fileName:${declaration.path}"
override fun visitFunction(declaration: IrFunction, data: Nothing?): String =
declaration.runTrimEnd {
@@ -601,7 +601,7 @@ private fun IrDeclaration.renderDeclarationParentFqn(sb: StringBuilder, options:
if (parent is IrDeclaration) {
parent.renderDeclarationFqn(sb, options)
} else if (parent is IrPackageFragment) {
sb.append(parent.fqName.toString())
sb.append(parent.packageFqName.toString())
}
} catch (e: UninitializedPropertyAccessException) {
sb.append("<uninitialized parent>")
@@ -535,7 +535,7 @@ object IrTree : AbstractTreeBuilder() {
+symbol(packageFragmentSymbolType)
+field("packageFragmentDescriptor", type(Packages.descriptors, "PackageFragmentDescriptor"), mutable = false)
+field("fqName", type<FqName>())
+field("packageFqName", type<FqName>())
}
val externalPackageFragment: ElementConfig by element(Declaration) {
visitorParent = packageFragment
@@ -40,7 +40,7 @@ internal object PartialLinkageUtils {
val IrDeclarationWithName.declarationId: DeclarationId?
get() {
return when (val parent = parent) {
is IrPackageFragment -> DeclarationId(parent.fqName.asString(), name.asString())
is IrPackageFragment -> DeclarationId(parent.packageFqName.asString(), name.asString())
is IrDeclarationWithName -> parent.declarationId?.createNested(name.asString())
else -> null
}
@@ -1418,7 +1418,7 @@ open class IrFileSerializer(
val proto = ProtoFile.newBuilder()
.setFileEntry(serializeFileEntry(file.fileEntry))
.addAllFqName(serializeFqName(file.fqName.asString()))
.addAllFqName(serializeFqName(file.packageFqName.asString()))
.addAllAnnotation(serializeAnnotations(file.annotations))
file.declarations.forEach {
@@ -1455,7 +1455,7 @@ open class IrFileSerializer(
return SerializedIrFile(
proto.build().toByteArray(),
file.fqName.asString(),
file.packageFqName.asString(),
file.path,
IrMemoryArrayWriter(protoTypeArray.map { it.toByteArray() }).writeIntoMemory(),
IrMemoryArrayWriter(protoIdSignatureArray.map { it.toByteArray() }).writeIntoMemory(),
@@ -153,7 +153,7 @@ open class IrMangleComputer(
}
override fun visitPackageFragment(declaration: IrPackageFragment) {
declaration.fqName.let { if (!it.isRoot) builder.appendName(it.asString()) }
declaration.packageFqName.let { if (!it.isRoot) builder.appendName(it.asString()) }
}
override fun visitProperty(declaration: IrProperty) {
@@ -99,7 +99,7 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat
}
override fun visitPackageFragment(declaration: IrPackageFragment) {
packageFqn = declaration.fqName
packageFqn = declaration.packageFqName
}
private val IrDeclarationWithVisibility.isTopLevelPrivate: Boolean
@@ -231,7 +231,7 @@ class IdSignatureSerializer(
private fun composeContainerIdSignature(container: IrDeclarationParent, compatibleMode: Boolean): IdSignature =
when (container) {
is IrPackageFragment -> IdSignature.CommonSignature(container.fqName.asString(), "", null, 0)
is IrPackageFragment -> IdSignature.CommonSignature(container.packageFqName.asString(), "", null, 0)
is IrDeclaration -> table.signatureByDeclaration(container, compatibleMode)
else -> error("Unexpected container ${container.render()}")
}
@@ -34,8 +34,8 @@ class FunctionTypeInterfacePackages {
it.fileEntry.name.endsWith(fileWithRequiredPackage) && it.fileEntry.name.contains(FUNCTION_TYPE_INTERFACE_DIR)
} ?: error("can not find a functional interface file for $packageFqName package")
check(packageFragmentDescriptor.fqName == packageFile.fqName) {
"unexpected package in file ${packageFile.fileEntry.name}; expected $packageFqName, got ${packageFile.fqName}"
check(packageFragmentDescriptor.fqName == packageFile.packageFqName) {
"unexpected package in file ${packageFile.fileEntry.name}; expected $packageFqName, got ${packageFile.packageFqName}"
}
functionTypeInterfacePackageFiles += packageFile
@@ -86,9 +86,9 @@ internal class DependenciesTrackerImpl(
?: error("Can't find stdlib")
val stdlibDeserializer = context.irLinker.moduleDeserializers[context.stdlibModule]
?: error("No deserializer for stdlib")
val file = stdlibDeserializer.files.atMostOne { it.fqName == fqName && it.name == fileName }
val file = stdlibDeserializer.files.atMostOne { it.packageFqName == fqName && it.name == fileName }
?: error("Can't find $fqName:$fileName in stdlib")
return LibraryFile(stdlib, file.fqName.asString(), file.path)
return LibraryFile(stdlib, file.packageFqName.asString(), file.path)
}
private val stdlibRuntime by lazy { findStdlibFile(KonanFqNames.internalPackageName, "Runtime.kt") }
@@ -124,7 +124,7 @@ internal class DependenciesTrackerImpl(
library == null -> FileOrigin.CurrentFile
packageFragment.packageFragmentDescriptor.containingDeclaration.isFromInteropLibrary() ->
FileOrigin.EntireModule(library)
else -> FileOrigin.CertainFile(library, packageFragment.fqName.asString(), filePathGetter())
else -> FileOrigin.CertainFile(library, packageFragment.packageFqName.asString(), filePathGetter())
}
}
}
@@ -188,7 +188,7 @@ internal class DependenciesTrackerImpl(
require(library.isInteropLibrary()) { "No module deserializer for cached library ${library.uniqueName}" }
} else {
moduleDeserializer.eagerInitializedFiles.forEach {
add(CacheSupport.cacheFileId(it.fqName.asString(), it.path))
add(CacheSupport.cacheFileId(it.packageFqName.asString(), it.path))
}
}
}
@@ -104,7 +104,7 @@ internal fun PhaseContext.fir2Ir(
components.symbolTable.forEachDeclarationSymbol {
val p = it.owner as? IrDeclaration ?: return@forEachDeclarationSymbol
val fragment = (p.getPackageFragment() as? IrExternalPackageFragment) ?: return@forEachDeclarationSymbol
add(fragment.fqName)
add(fragment.packageFqName)
}
// This packages exists in all platform libraries, but can contain only synthetic declarations.
// These declarations are not really located in klib, so we don't need to depend on klib to use them.
@@ -191,7 +191,7 @@ private fun PhaseEngine<out Context>.splitIntoFragments(
val containsStdlib = config.libraryToCache!!.klib == context.stdlibModule.konanLibrary
files.asSequence().filter { !it.isFunctionInterfaceFile }.map { file ->
val cacheDeserializationStrategy = CacheDeserializationStrategy.SingleFile(file.path, file.fqName.asString())
val cacheDeserializationStrategy = CacheDeserializationStrategy.SingleFile(file.path, file.packageFqName.asString())
val llvmModuleSpecification = CacheLlvmModuleSpecification(
config.cachedLibraries,
PartialCacheInfo(config.libraryToCache!!.klib, cacheDeserializationStrategy),
@@ -29,7 +29,7 @@ internal class CodeGenerator(override val generationState: NativeGenerationState
fun llvmFunction(function: IrFunction): LlvmCallable =
llvmFunctionOrNull(function)
?: error("no function ${function.name} in ${function.file.fqName}")
?: error("no function ${function.name} in ${function.file.packageFqName}")
fun llvmFunctionOrNull(function: IrFunction): LlvmCallable? =
function.llvmFunctionOrNull
@@ -764,7 +764,7 @@ internal class CodeGeneratorVisitor(
}
private val IrDeclarationContainer.initVariableSuffix get() = when (this) {
is IrFile -> "${fqName}\$${fileEntry.name}"
is IrFile -> "${packageFqName}\$${fileEntry.name}"
else -> fqNameForIrSerialization.asString()
}
@@ -160,7 +160,7 @@ private class DeclarationsGeneratorVisitor(override val generationState: NativeG
private fun getFqName(declaration: IrDeclaration): FqName {
val parent = declaration.parent
val parentFqName = when (parent) {
is IrPackageFragment -> parent.fqName
is IrPackageFragment -> parent.packageFqName
is IrDeclaration -> getFqName(parent)
else -> error(parent)
}
@@ -595,7 +595,7 @@ internal class RTTIGenerator(
null
}
val packageName: String = reflectionPackageName ?: packageFragment.fqName.asString() // Compute and store package name in TypeInfo anyways.
val packageName: String = reflectionPackageName ?: packageFragment.packageFqName.asString() // Compute and store package name in TypeInfo anyways.
val relativeName: String?
val flags: Int
@@ -731,7 +731,7 @@ private class InteropLoweringPart1(val generationState: NativeGenerationState) :
private fun IrFunction.isAutoreleasepool(): Boolean {
return this.name.asString() == "autoreleasepool" && this.parent.let { parent ->
parent is IrPackageFragment && parent.fqName == InteropFqNames.packageName
parent is IrPackageFragment && parent.packageFqName == InteropFqNames.packageName
}
}
@@ -178,7 +178,7 @@ internal class TestProcessor (val context: Context) {
val topLevelFunctions = mutableListOf<TestFunction>()
val topLevelSuiteClassId: ClassId by lazy {
ClassId(irFile.fqName, PackagePartClassUtils.getFilePartShortName(irFile.fileName).let(Name::identifier))
ClassId(irFile.packageFqName, PackagePartClassUtils.getFilePartShortName(irFile.fileName).let(Name::identifier))
}
val topLevelSuiteName: String get() = topLevelSuiteClassId.asFqNameString()
@@ -546,7 +546,7 @@ internal class TestProcessor (val context: Context) {
/** Check if this fqName already used or not. */
private fun checkTopLevelSuiteName(irFile: IrFile, topLevelSuiteName: String): Boolean {
if (topLevelSuiteNames.contains(topLevelSuiteName)) {
context.reportCompilationError("Package '${irFile.fqName}' has top-level test " +
context.reportCompilationError("Package '${irFile.packageFqName}' has top-level test " +
"functions in several files with the same name: '${irFile.fileName}'")
}
topLevelSuiteNames.add(topLevelSuiteName)
@@ -132,7 +132,7 @@ internal class ByteArrayStream(val buf: ByteArray) {
}
data class SerializedFileReference(val fqName: String, val path: String) {
constructor(irFile: IrFile) : this(irFile.fqName.asString(), irFile.path)
constructor(irFile: IrFile) : this(irFile.packageFqName.asString(), irFile.path)
}
private class StringTableBuilder {
@@ -597,7 +597,7 @@ internal class KonanIrLinker(
}
private val fileReferenceToFileDeserializationState by lazy {
fileDeserializationStates.associateBy { SerializedFileReference(it.file.fqName.asString(), it.file.path) }
fileDeserializationStates.associateBy { SerializedFileReference(it.file.packageFqName.asString(), it.file.path) }
}
private val SerializedFileReference.deserializationState
@@ -1011,7 +1011,7 @@ internal class KonanIrLinker(
val sortedFileIds by lazy {
fileDeserializationStates
.sortedBy { it.file.fileEntry.name }
.map { CacheSupport.cacheFileId(it.file.fqName.asString(), it.file.fileEntry.name) }
.map { CacheSupport.cacheFileId(it.file.packageFqName.asString(), it.file.fileEntry.name) }
}
}