[kotlin compiler][update][temporary] workaround over fresh refactoring of fqNameSafe

- this commit should be just reverted when fqNameSafe will return.
This commit is contained in:
Vasily Levchenko
2019-05-29 09:44:54 +03:00
parent cf2d45b774
commit 2cc567291a
17 changed files with 45 additions and 47 deletions
@@ -39,7 +39,7 @@ private fun KonanSymbols.getTypeConversionImpl(
actualInlinedClass == null && expectedInlinedClass == null -> null
actualInlinedClass != null && expectedInlinedClass == null -> context.getBoxFunction(actualInlinedClass)
actualInlinedClass == null && expectedInlinedClass != null -> context.getUnboxFunction(expectedInlinedClass)
else -> error("actual type is ${actualInlinedClass?.fqNameSafe}, expected ${expectedInlinedClass?.fqNameSafe}")
else -> error("actual type is ${actualInlinedClass?.fqNameForIrSerialization}, expected ${expectedInlinedClass?.fqNameForIrSerialization}")
}?.symbol
}
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.types.classifierOrFail
import org.jetbrains.kotlin.ir.util.constructedClass
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.hasAnnotation
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
@@ -47,8 +47,8 @@ fun KotlinType.isObjCObjectType(): Boolean =
private fun IrClass.getAllSuperClassifiers(): List<IrClass> =
listOf(this) + this.superTypes.flatMap { (it.classifierOrFail.owner as IrClass).getAllSuperClassifiers() }
internal fun IrClass.isObjCClass() = this.getAllSuperClassifiers().any { it.fqNameSafe == objCObjectFqName } &&
this.parent.fqNameSafe != interopPackageName
internal fun IrClass.isObjCClass() = this.getAllSuperClassifiers().any { it.fqNameForIrSerialization == objCObjectFqName } &&
this.parent.fqNameForIrSerialization != interopPackageName
@Deprecated("Use IR version rather than descriptor version")
fun ClassDescriptor.isExternalObjCClass(): Boolean = this.isObjCClass() &&
@@ -586,7 +586,7 @@ private fun IrType.isCEnumType(): Boolean {
if (!enumClass.isEnumClass) return false
return enumClass.superTypes
.any { (it.classifierOrNull?.owner as? IrClass)?.fqNameSafe == FqName("kotlinx.cinterop.CEnum") }
.any { (it.classifierOrNull?.owner as? IrClass)?.fqNameForIrSerialization == FqName("kotlinx.cinterop.CEnum") }
}
// TODO: get rid of consulting descriptors for annotations.
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.types.isUnit
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.isSuspend
import org.jetbrains.kotlin.ir.util.overrides
import org.jetbrains.kotlin.types.SimpleType
@@ -97,7 +97,7 @@ internal val arrayTypes = setOf(
internal val IrClass.isArray: Boolean
get() = this.fqNameSafe.asString() in arrayTypes
get() = this.fqNameForIrSerialization.asString() in arrayTypes
fun IrClass.isAbstract() = this.modality == Modality.SEALED || this.modality == Modality.ABSTRACT
@@ -39,7 +39,7 @@ val IrDeclaration.name: Name
private val SPECIAL_INIT_NAME = Name.special("<init>")
val IrField.fqNameSafe: FqName get() = this.parent.fqNameSafe.child(this.name)
val IrField.fqNameForIrSerialization: FqName get() = this.parent.fqNameForIrSerialization.child(this.name)
/**
* @return naturally-ordered list of all parameters available inside the function body.
@@ -53,15 +53,15 @@ val IrFunction.allParameters: List<IrValueParameter>
explicitParameters
}
fun IrClass.isUnit() = this.fqNameSafe == KotlinBuiltIns.FQ_NAMES.unit.toSafe()
fun IrClass.isUnit() = this.fqNameForIrSerialization == KotlinBuiltIns.FQ_NAMES.unit.toSafe()
fun IrClass.isKotlinArray() = this.fqNameSafe == KotlinBuiltIns.FQ_NAMES.array.toSafe()
fun IrClass.isKotlinArray() = this.fqNameForIrSerialization == KotlinBuiltIns.FQ_NAMES.array.toSafe()
val IrClass.superClasses get() = this.superTypes.map { it.classifierOrFail as IrClassSymbol }
fun IrClass.getSuperClassNotAny() = this.superClasses.map { it.owner }.atMostOne { !it.isInterface && !it.isAny() }
fun IrClass.isAny() = this.fqNameSafe == KotlinBuiltIns.FQ_NAMES.any.toSafe()
fun IrClass.isNothing() = this.fqNameSafe == KotlinBuiltIns.FQ_NAMES.nothing.toSafe()
fun IrClass.isAny() = this.fqNameForIrSerialization == KotlinBuiltIns.FQ_NAMES.any.toSafe()
fun IrClass.isNothing() = this.fqNameForIrSerialization == KotlinBuiltIns.FQ_NAMES.nothing.toSafe()
fun IrClass.getSuperInterfaces() = this.superClasses.map { it.owner }.filter { it.isInterface }
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.isSuspend
import org.jetbrains.kotlin.ir.util.isVararg
import org.jetbrains.kotlin.konan.library.uniqueName
@@ -131,7 +131,7 @@ object KonanMangler : KotlinManglerImpl() {
val parent = this.parent
val containingDeclarationPart = parent.fqNameSafe.let {
val containingDeclarationPart = parent.fqNameForIrSerialization.let {
if (it.isRoot) "" else "$it."
}
return "kfun:$containingDeclarationPart$functionName"
@@ -141,7 +141,7 @@ object KonanMangler : KotlinManglerImpl() {
internal val IrClass.writableTypeInfoSymbolName: String
get() {
assert (this.isExported())
return "ktypew:" + this.fqNameSafe.toString()
return "ktypew:" + this.fqNameForIrSerialization.toString()
}
internal val theUnitInstanceName = "kobj:kotlin.Unit"
@@ -152,7 +152,7 @@ internal val IrClass.objectInstanceFieldSymbolName: String
assert (this.kind.isSingleton)
assert (!this.isUnit())
return "kobjref:$fqNameSafe"
return "kobjref:$fqNameForIrSerialization"
}
internal val IrClass.objectInstanceShadowFieldSymbolName: String
@@ -162,7 +162,7 @@ internal val IrClass.objectInstanceShadowFieldSymbolName: String
assert (!this.isUnit())
assert (this.objectIsShared)
return "kshadowobjref:$fqNameSafe"
return "kshadowobjref:$fqNameForIrSerialization"
}
val IrFunction.functionName get() = with(KonanMangler) { functionName }
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.descriptors.konan.CurrentKonanModuleOrigin
import org.jetbrains.kotlin.descriptors.konan.DeserializedKonanModuleOrigin
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.util.file
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
import org.jetbrains.kotlin.konan.library.KonanLibrary
import org.jetbrains.kotlin.konan.library.resolver.TopologicalLibraryOrder
@@ -157,7 +157,7 @@ internal interface ContextUtils : RuntimeAware {
* It may be declared as external function prototype.
*/
val IrFunction.llvmFunction: LLVMValueRef
get() = llvmFunctionOrNull ?: error("$name in $file/${parent.fqNameSafe}")
get() = llvmFunctionOrNull ?: error("$name in $file/${parent.fqNameForIrSerialization}")
val IrFunction.llvmFunctionOrNull: LLVMValueRef?
get() {
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.backend.konan.ir.*
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.util.constructors
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.hasAnnotation
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
@@ -97,7 +97,7 @@ internal class KotlinObjCClassInfoGenerator(override val context: Context) : Con
?: if (irClass.annotations.hasAnnotation(exportObjCClassAnnotation))
irClass.name.asString()
else if (irClass.isExported()) {
irClass.fqNameSafe.asString()
irClass.fqNameForIrSerialization.asString()
} else {
null // Generate as anonymous.
}
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.types.isNothing
import org.jetbrains.kotlin.ir.util.defaultType
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.hasAnnotation
import org.jetbrains.kotlin.ir.util.file
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -44,7 +44,7 @@ internal class LlvmDeclarations(
private val fields: Map<IrField, FieldLlvmDeclarations>,
private val staticFields: Map<IrField, StaticFieldLlvmDeclarations>,
private val unique: Map<UniqueKind, UniqueLlvmDeclarations>) {
fun forFunction(function: IrFunction) = forFunctionOrNull(function) ?: with(function){error("$name in $file/${parent.fqNameSafe}")}
fun forFunction(function: IrFunction) = forFunctionOrNull(function) ?: with(function){error("$name in $file/${parent.fqNameForIrSerialization}")}
fun forFunctionOrNull(function: IrFunction) = functions[function]
fun forClass(irClass: IrClass) = classes[irClass] ?:
@@ -131,7 +131,7 @@ private fun Context.getDeclaredFields(irClass: IrClass): List<IrField> {
return fields
return fields.sortedBy {
it.fqNameSafe.localHash.value
it.fqNameForIrSerialization.localHash.value
}
}
@@ -173,7 +173,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
fun generate(irClass: IrClass) {
val className = irClass.fqNameSafe
val className = irClass.fqNameForIrSerialization
val llvmDeclarations = context.llvmDeclarations.forClass(irClass)
@@ -283,7 +283,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
if (context.shouldOptimize())
return NullPointer(runtime.extendedTypeInfoType)
val className = irClass.fqNameSafe.toString()
val className = irClass.fqNameForIrSerialization.toString()
val llvmDeclarations = context.llvmDeclarations.forClass(irClass)
val bodyType = llvmDeclarations.bodyType
val elementType = arrayClasses[className]
@@ -333,7 +333,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
}
return staticData.placeGlobalConstArray(
name = "kassociatedobjects:${irClass.fqNameSafe}",
name = "kassociatedobjects:${irClass.fqNameForIrSerialization}",
elemType = runtime.associatedObjectTableRecordType,
elements = associatedObjectTableRecords + Struct(runtime.associatedObjectTableRecordType, null, null)
)
@@ -417,7 +417,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
irClass.isLocal -> ReflectionInfo(packageName = null, relativeName = irClass.name.asString())
else -> ReflectionInfo(
packageName = irClass.findPackage().fqName.asString(),
packageName = irClass.findPackage().fqNameForIrSerialization.asString(),
relativeName = generateSequence(irClass) { it.parent as? IrClass }
.toList().reversed()
.joinToString(".") { it.name.asString() }
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.backend.konan.llvm
import kotlinx.cinterop.cValuesOf
import llvm.*
import org.jetbrains.kotlin.backend.konan.ir.fqNameSafe
import org.jetbrains.kotlin.backend.konan.ir.fqNameForIrSerialization
import org.jetbrains.kotlin.backend.konan.ir.llvmSymbolOrigin
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
private fun ConstPointer.add(index: Int): ConstPointer {
return constPointer(LLVMConstGEP(llvm, cValuesOf(Int32(index).llvm), 1)!!)
@@ -92,7 +92,7 @@ internal fun StaticData.createInitializer(type: IrClass, vararg fields: ConstVal
internal fun StaticData.createConstArrayList(array: ConstPointer, length: Int): ConstPointer {
val arrayListClass = context.ir.symbols.arrayList.owner
val arrayListFqName = arrayListClass.fqNameSafe
val arrayListFqName = arrayListClass.fqNameForIrSerialization
val arrayListFields = mapOf(
"$arrayListFqName.array" to array,
"$arrayListFqName.offset" to Int32(0),
@@ -103,7 +103,7 @@ internal fun StaticData.createConstArrayList(array: ConstPointer, length: Int):
// to match the sorting order of the real ArrayList().
val sorted = linkedMapOf<String, ConstValue>()
getFields(arrayListClass).forEach {
val fqName = it.fqNameSafe.asString()
val fqName = it.fqNameForIrSerialization.asString()
sorted.put(fqName, arrayListFields[fqName]!!)
}
@@ -218,7 +218,7 @@ private class InlineClassTransformer(private val context: Context) : IrBuildingT
if (declaration.isInlined()) {
if (declaration.isUsedAsBoxClass()) {
if (KonanPrimitiveType.byFqName[declaration.fqNameSafe.toUnsafe()] != null) {
if (KonanPrimitiveType.byFqName[declaration.fqNameForIrSerialization.toUnsafe()] != null) {
buildBoxField(declaration)
}
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.backend.konan.Context
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
import org.jetbrains.kotlin.backend.common.pop
import org.jetbrains.kotlin.backend.common.push
import org.jetbrains.kotlin.backend.konan.ir.fqNameSafe
import org.jetbrains.kotlin.backend.konan.ir.fqNameForIrSerialization
import org.jetbrains.kotlin.backend.konan.ir.isFunctionOrKFunctionType
import org.jetbrains.kotlin.backend.konan.llvm.functionName
import org.jetbrains.kotlin.descriptors.*
@@ -278,7 +278,7 @@ internal class CallableReferenceLowering(val context: Context): FileLoweringPass
}
private val IrFunction.fullName: String
get() = parent.fqNameSafe.child(Name.identifier(functionName)).asString()
get() = parent.fqNameForIrSerialization.child(Name.identifier(functionName)).asString()
private fun buildInvokeMethod(superFunction: IrSimpleFunction) = WrappedSimpleFunctionDescriptor().let {
IrFunctionImpl(
@@ -150,7 +150,7 @@ internal class FunctionInlining(val context: Context) : IrElementTransformerVoid
val oldThis = constructedClass.thisReceiver!!
val newThis = currentScope.scope.createTemporaryVariableWithWrappedDescriptor(
irExpression = constructorCall,
nameHint = constructedClass.fqNameSafe.toString() + ".this"
nameHint = constructedClass.fqNameForIrSerialization.toString() + ".this"
)
statements[0] = newThis
substituteMap[oldThis] = irGet(newThis)
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.backend.common.reportWarning
import org.jetbrains.kotlin.backend.konan.Context
import org.jetbrains.kotlin.backend.konan.descriptors.isAbstract
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
import org.jetbrains.kotlin.backend.konan.ir.fqNameSafe
import org.jetbrains.kotlin.backend.konan.ir.typeWithStarProjections
import org.jetbrains.kotlin.backend.konan.ir.typeWithoutArguments
import org.jetbrains.kotlin.backend.konan.reportCompilationError
@@ -236,7 +235,7 @@ internal class TestProcessor (val context: Context) {
warn("Annotation $annotation is not allowed for methods of a companion object")
constructors.none { it.valueParameters.size == 0 } ->
warn("Test class has no default constructor: $fqNameSafe")
warn("Test class has no default constructor: $fqNameForIrSerialization")
else ->
testClasses.getTestClass(irClass).registerFunction(function, kind, ignored)
@@ -267,12 +266,12 @@ internal class TestProcessor (val context: Context) {
// Test runner requires test functions to have the following signature: () -> Unit.
if (!returnType.isUnit()) {
context.reportCompilationError(
"Test function must return Unit: $fqNameSafe", irFile, this
"Test function must return Unit: $fqNameForIrSerialization", irFile, this
)
}
if (valueParameters.isNotEmpty()) {
context.reportCompilationError(
"Test function must have no arguments: $fqNameSafe", irFile, this
"Test function must have no arguments: $fqNameForIrSerialization", irFile, this
)
}
}
@@ -498,7 +497,7 @@ internal class TestProcessor (val context: Context) {
}
val constructor = buildClassSuiteConstructor(
testClass.fqNameSafe.toString(), testClassType, testCompanionType,
testClass.fqNameForIrSerialization.toString(), testClassType, testCompanionType,
symbol, this, functions, testClass.ignored
)
@@ -1,11 +1,10 @@
package org.jetbrains.kotlin.backend.konan.lower.matchers
import org.jetbrains.kotlin.backend.konan.ir.fqNameSafe
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.classifierOrNull
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.name.FqName
internal interface IrFunctionMatcher : (IrFunction) -> Boolean
@@ -53,7 +52,7 @@ internal class FqNameMatcher(
) : IrFunctionMatcher {
override fun invoke(function: IrFunction): Boolean {
return restriction(function.fqNameSafe)
return restriction(function.fqNameForIrSerialization)
}
}
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.getClass
import org.jetbrains.kotlin.ir.types.isNothing
import org.jetbrains.kotlin.ir.types.isUnit
import org.jetbrains.kotlin.ir.util.fqNameSafe
import org.jetbrains.kotlin.ir.util.fqNameForIrSerialization
import org.jetbrains.kotlin.ir.util.isInterface
import org.jetbrains.kotlin.ir.util.isSuspend
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
@@ -508,7 +508,7 @@ internal object DataFlowIR {
val isFinal = irClass.isFinal()
val isAbstract = irClass.isAbstract()
val name = irClass.fqNameSafe.asString()
val name = irClass.fqNameForIrSerialization.asString()
classMap[irClass]?.let { return it }
@@ -569,7 +569,7 @@ internal object DataFlowIR {
// TODO: use from LlvmDeclarations.
private fun getFqName(declaration: IrDeclaration): FqName =
declaration.parent.fqNameSafe.child(declaration.name)
declaration.parent.fqNameForIrSerialization.child(declaration.name)
private val IrFunction.internalName get() = getFqName(this).asString() + "#internal"