Skip to content

Commit

Permalink
[kotlin compiler][update][temporary] workaround over fresh refactorin…
Browse files Browse the repository at this point in the history
…g of fqNameSafe

- this commit should be just reverted when fqNameSafe will return.
  • Loading branch information
vvlevchenko committed May 30, 2019
1 parent cf2d45b commit 2cc5672
Show file tree
Hide file tree
Showing 17 changed files with 45 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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 }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand All @@ -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
Expand All @@ -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 }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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.
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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] ?:
Expand Down Expand Up @@ -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
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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)
)
Expand Down Expand Up @@ -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() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)!!)
Expand Down Expand Up @@ -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),
Expand All @@ -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]!!)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
)
}
}
Expand Down Expand Up @@ -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
)

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -53,7 +52,7 @@ internal class FqNameMatcher(
) : IrFunctionMatcher {

override fun invoke(function: IrFunction): Boolean {
return restriction(function.fqNameSafe)
return restriction(function.fqNameForIrSerialization)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 }

Expand Down Expand Up @@ -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"

Expand Down

0 comments on commit 2cc5672

Please sign in to comment.