FIR2IR: call fake overrides properly #KT-49288 Fixed
This commit is contained in:
committed by
teamcity
parent
ec079a2663
commit
5b6e21690b
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.extensions.declarationGenerators
|
import org.jetbrains.kotlin.fir.extensions.declarationGenerators
|
||||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
@@ -161,17 +162,19 @@ fun FirClassifierSymbol<*>.toSymbol(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirBasedSymbol<*>.toSymbolForCall(
|
private fun FirBasedSymbol<*>.toSymbolForCall(
|
||||||
|
dispatchReceiver: FirExpression,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
classifierStorage: Fir2IrClassifierStorage,
|
classifierStorage: Fir2IrClassifierStorage,
|
||||||
declarationStorage: Fir2IrDeclarationStorage,
|
declarationStorage: Fir2IrDeclarationStorage,
|
||||||
preferGetter: Boolean
|
preferGetter: Boolean
|
||||||
) = when (this) {
|
) = when (this) {
|
||||||
is FirCallableSymbol<*> -> unwrapCallRepresentative().toSymbolForCall(declarationStorage, preferGetter)
|
is FirCallableSymbol<*> -> unwrapCallRepresentative().toSymbolForCall(dispatchReceiver, declarationStorage, preferGetter)
|
||||||
is FirClassifierSymbol<*> -> toSymbol(session, classifierStorage)
|
is FirClassifierSymbol<*> -> toSymbol(session, classifierStorage)
|
||||||
else -> error("Unknown symbol: $this")
|
else -> error("Unknown symbol: $this")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirReference.toSymbolForCall(
|
fun FirReference.toSymbolForCall(
|
||||||
|
dispatchReceiver: FirExpression,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
classifierStorage: Fir2IrClassifierStorage,
|
classifierStorage: Fir2IrClassifierStorage,
|
||||||
declarationStorage: Fir2IrDeclarationStorage,
|
declarationStorage: Fir2IrDeclarationStorage,
|
||||||
@@ -179,8 +182,10 @@ fun FirReference.toSymbolForCall(
|
|||||||
preferGetter: Boolean = true
|
preferGetter: Boolean = true
|
||||||
): IrSymbol? {
|
): IrSymbol? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirResolvedNamedReference -> resolvedSymbol.toSymbolForCall(session, classifierStorage, declarationStorage, preferGetter)
|
is FirResolvedNamedReference ->
|
||||||
is FirErrorNamedReference -> candidateSymbol?.toSymbolForCall(session, classifierStorage, declarationStorage, preferGetter)
|
resolvedSymbol.toSymbolForCall(dispatchReceiver, session, classifierStorage, declarationStorage, preferGetter)
|
||||||
|
is FirErrorNamedReference ->
|
||||||
|
candidateSymbol?.toSymbolForCall(dispatchReceiver, session, classifierStorage, declarationStorage, preferGetter)
|
||||||
is FirThisReference -> {
|
is FirThisReference -> {
|
||||||
when (val boundSymbol = boundSymbol) {
|
when (val boundSymbol = boundSymbol) {
|
||||||
is FirClassSymbol<*> -> classifierStorage.getIrClassSymbol(boundSymbol).owner.thisReceiver?.symbol
|
is FirClassSymbol<*> -> classifierStorage.getIrClassSymbol(boundSymbol).owner.thisReceiver?.symbol
|
||||||
@@ -196,9 +201,20 @@ fun FirReference.toSymbolForCall(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirCallableSymbol<*>.toSymbolForCall(declarationStorage: Fir2IrDeclarationStorage, preferGetter: Boolean): IrSymbol? =
|
private fun FirCallableSymbol<*>.toSymbolForCall(
|
||||||
when (this) {
|
dispatchReceiver: FirExpression,
|
||||||
is FirFunctionSymbol<*> -> declarationStorage.getIrFunctionSymbol(this)
|
declarationStorage: Fir2IrDeclarationStorage,
|
||||||
|
preferGetter: Boolean
|
||||||
|
): IrSymbol? {
|
||||||
|
val dispatchReceiverLookupTag = when (dispatchReceiver) {
|
||||||
|
is FirNoReceiverExpression -> null
|
||||||
|
else -> {
|
||||||
|
val session = declarationStorage.session
|
||||||
|
val coneType = dispatchReceiver.typeRef.coneType.lowerBoundIfFlexible()
|
||||||
|
(coneType as? ConeClassLikeType)?.fullyExpandedType(session)?.lookupTag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return when (this) {
|
||||||
is FirSimpleSyntheticPropertySymbol -> {
|
is FirSimpleSyntheticPropertySymbol -> {
|
||||||
(fir as? FirSyntheticProperty)?.let { syntheticProperty ->
|
(fir as? FirSyntheticProperty)?.let { syntheticProperty ->
|
||||||
val delegateSymbol = if (preferGetter) {
|
val delegateSymbol = if (preferGetter) {
|
||||||
@@ -207,16 +223,18 @@ private fun FirCallableSymbol<*>.toSymbolForCall(declarationStorage: Fir2IrDecla
|
|||||||
syntheticProperty.setter?.delegate?.symbol
|
syntheticProperty.setter?.delegate?.symbol
|
||||||
?: throw AssertionError("Written synthetic property must have a setter")
|
?: throw AssertionError("Written synthetic property must have a setter")
|
||||||
}
|
}
|
||||||
delegateSymbol.unwrapCallRepresentative().toSymbolForCall(declarationStorage, preferGetter)
|
delegateSymbol.unwrapCallRepresentative().toSymbolForCall(dispatchReceiver, declarationStorage, preferGetter)
|
||||||
} ?: declarationStorage.getIrPropertySymbol(this)
|
} ?: declarationStorage.getIrPropertySymbol(this)
|
||||||
}
|
}
|
||||||
is FirPropertySymbol -> declarationStorage.getIrPropertySymbol(this)
|
is FirFunctionSymbol<*> -> declarationStorage.getIrFunctionSymbol(this, dispatchReceiverLookupTag)
|
||||||
|
is FirPropertySymbol -> declarationStorage.getIrPropertySymbol(this, dispatchReceiverLookupTag)
|
||||||
is FirFieldSymbol -> declarationStorage.getIrFieldSymbol(this)
|
is FirFieldSymbol -> declarationStorage.getIrFieldSymbol(this)
|
||||||
is FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this)
|
is FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this)
|
||||||
is FirDelegateFieldSymbol -> declarationStorage.getIrDelegateFieldSymbol(this)
|
is FirDelegateFieldSymbol -> declarationStorage.getIrDelegateFieldSymbol(this)
|
||||||
is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this)
|
is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this)
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) {
|
fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) {
|
||||||
ConstantValueKind.IntegerLiteral -> {
|
ConstantValueKind.IntegerLiteral -> {
|
||||||
|
|||||||
+33
-8
@@ -267,8 +267,6 @@ class Fir2IrDeclarationStorage(
|
|||||||
parent = irParent
|
parent = irParent
|
||||||
if (irParent is IrExternalPackageFragment) {
|
if (irParent is IrExternalPackageFragment) {
|
||||||
irParent.declarations += this
|
irParent.declarations += this
|
||||||
} else if (irParent is IrClass) {
|
|
||||||
// TODO: irParent.declarations += this (probably needed for external stuff)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -599,7 +597,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
else
|
else
|
||||||
symbolTable.declareSimpleFunction(signature, { Fir2IrSimpleFunctionSymbol(signature, containerSource) }, factory)
|
symbolTable.declareSimpleFunction(signature, { Fir2IrSimpleFunctionSymbol(signature, containerSource) }, factory)
|
||||||
|
|
||||||
internal fun createIrPropertyAccessor(
|
private fun createIrPropertyAccessor(
|
||||||
propertyAccessor: FirPropertyAccessor?,
|
propertyAccessor: FirPropertyAccessor?,
|
||||||
property: FirProperty,
|
property: FirProperty,
|
||||||
correspondingProperty: IrDeclarationWithName,
|
correspondingProperty: IrDeclarationWithName,
|
||||||
@@ -1089,7 +1087,10 @@ class Fir2IrDeclarationStorage(
|
|||||||
) as IrConstructorSymbol
|
) as IrConstructorSymbol
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getIrFunctionSymbol(firFunctionSymbol: FirFunctionSymbol<*>): IrFunctionSymbol {
|
fun getIrFunctionSymbol(
|
||||||
|
firFunctionSymbol: FirFunctionSymbol<*>,
|
||||||
|
dispatchReceiverLookupTag: ConeClassLikeLookupTag? = null
|
||||||
|
): IrFunctionSymbol {
|
||||||
return when (val fir = firFunctionSymbol.fir) {
|
return when (val fir = firFunctionSymbol.fir) {
|
||||||
is FirAnonymousFunction -> {
|
is FirAnonymousFunction -> {
|
||||||
getCachedIrFunction(fir)?.let { return it.symbol }
|
getCachedIrFunction(fir)?.let { return it.symbol }
|
||||||
@@ -1099,7 +1100,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
createIrFunction(fir, irParent, predefinedOrigin = declarationOrigin).symbol
|
createIrFunction(fir, irParent, predefinedOrigin = declarationOrigin).symbol
|
||||||
}
|
}
|
||||||
is FirSimpleFunction -> {
|
is FirSimpleFunction -> {
|
||||||
return getIrCallableSymbol(
|
val originalSymbol = getIrCallableSymbol(
|
||||||
firFunctionSymbol,
|
firFunctionSymbol,
|
||||||
getCachedIrDeclaration = ::getCachedIrFunction,
|
getCachedIrDeclaration = ::getCachedIrFunction,
|
||||||
createIrDeclaration = { parent, origin -> createIrFunction(fir, parent, predefinedOrigin = origin) },
|
createIrDeclaration = { parent, origin -> createIrFunction(fir, parent, predefinedOrigin = origin) },
|
||||||
@@ -1125,6 +1126,17 @@ class Fir2IrDeclarationStorage(
|
|||||||
irFunction
|
irFunction
|
||||||
}
|
}
|
||||||
) as IrFunctionSymbol
|
) as IrFunctionSymbol
|
||||||
|
if (dispatchReceiverLookupTag != null && dispatchReceiverLookupTag != firFunctionSymbol.containingClass()) {
|
||||||
|
val dispatchReceiverIrClass =
|
||||||
|
classifierStorage.getIrClassSymbol(dispatchReceiverLookupTag.toSymbol(session) as FirClassSymbol).owner
|
||||||
|
dispatchReceiverIrClass.declarations.find {
|
||||||
|
it is IrSimpleFunction && it.isFakeOverride && it.name == fir.name &&
|
||||||
|
it.overrides(originalSymbol.owner as IrSimpleFunction)
|
||||||
|
}?.symbol as? IrFunctionSymbol
|
||||||
|
?: originalSymbol // Fallback (normally we should not be here, but f/o are bound too late)
|
||||||
|
} else {
|
||||||
|
originalSymbol
|
||||||
|
}
|
||||||
}
|
}
|
||||||
is FirConstructor -> {
|
is FirConstructor -> {
|
||||||
getIrConstructorSymbol(fir.symbol)
|
getIrConstructorSymbol(fir.symbol)
|
||||||
@@ -1133,12 +1145,15 @@ class Fir2IrDeclarationStorage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getIrPropertySymbol(firPropertySymbol: FirPropertySymbol): IrSymbol {
|
fun getIrPropertySymbol(
|
||||||
|
firPropertySymbol: FirPropertySymbol,
|
||||||
|
dispatchReceiverLookupTag: ConeClassLikeLookupTag? = null
|
||||||
|
): IrSymbol {
|
||||||
val fir = firPropertySymbol.fir
|
val fir = firPropertySymbol.fir
|
||||||
if (fir.isLocal) {
|
if (fir.isLocal) {
|
||||||
return localStorage.getDelegatedProperty(fir)?.symbol ?: getIrVariableSymbol(fir)
|
return localStorage.getDelegatedProperty(fir)?.symbol ?: getIrVariableSymbol(fir)
|
||||||
}
|
}
|
||||||
return getIrCallableSymbol(
|
val originalSymbol = getIrCallableSymbol(
|
||||||
firPropertySymbol,
|
firPropertySymbol,
|
||||||
getCachedIrDeclaration = ::getCachedIrProperty,
|
getCachedIrDeclaration = ::getCachedIrProperty,
|
||||||
createIrDeclaration = { parent, origin -> createIrProperty(fir, parent, predefinedOrigin = origin) },
|
createIrDeclaration = { parent, origin -> createIrProperty(fir, parent, predefinedOrigin = origin) },
|
||||||
@@ -1161,6 +1176,16 @@ class Fir2IrDeclarationStorage(
|
|||||||
return symbol
|
return symbol
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
return if (dispatchReceiverLookupTag != null && dispatchReceiverLookupTag != firPropertySymbol.containingClass()) {
|
||||||
|
val dispatchReceiverIrClass =
|
||||||
|
classifierStorage.getIrClassSymbol(dispatchReceiverLookupTag.toSymbol(session) as FirClassSymbol).owner
|
||||||
|
dispatchReceiverIrClass.declarations.find {
|
||||||
|
it is IrProperty && it.isFakeOverride && it.name == fir.name && it.overrides(originalSymbol.owner as IrProperty)
|
||||||
|
}?.symbol as? IrPropertySymbol
|
||||||
|
?: originalSymbol // Fallback (normally we should not be here, but f/o are bound too late)
|
||||||
|
} else {
|
||||||
|
originalSymbol
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private inline fun <
|
private inline fun <
|
||||||
@@ -1247,7 +1272,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
return getIrPropertyForwardedSymbol(firVariableSymbol.fir)
|
return getIrPropertyForwardedSymbol(firVariableSymbol.fir)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getIrPropertyForwardedSymbol(fir: FirVariable): IrSymbol {
|
private fun getIrPropertyForwardedSymbol(fir: FirVariable): IrSymbol {
|
||||||
return when (fir) {
|
return when (fir) {
|
||||||
is FirProperty -> {
|
is FirProperty -> {
|
||||||
if (fir.isLocal) {
|
if (fir.isLocal) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic
|
|||||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
@@ -443,7 +444,7 @@ class Fir2IrVisitor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (boundSymbol is FirCallableSymbol) {
|
} else if (boundSymbol is FirCallableSymbol) {
|
||||||
val receiverSymbol = calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope)
|
val receiverSymbol = calleeReference.toSymbolForCall(FirNoReceiverExpression, session, classifierStorage, declarationStorage, conversionScope)
|
||||||
val receiver = (receiverSymbol?.owner as? IrSimpleFunction)?.extensionReceiverParameter
|
val receiver = (receiverSymbol?.owner as? IrSimpleFunction)?.extensionReceiverParameter
|
||||||
if (receiver != null) {
|
if (receiver != null) {
|
||||||
return thisReceiverExpression.convertWithOffsets { startOffset, endOffset ->
|
return thisReceiverExpression.convertWithOffsets { startOffset, endOffset ->
|
||||||
|
|||||||
+16
-13
@@ -70,8 +70,9 @@ class CallAndReferenceGenerator(
|
|||||||
callableReferenceAccess: FirCallableReferenceAccess,
|
callableReferenceAccess: FirCallableReferenceAccess,
|
||||||
explicitReceiverExpression: IrExpression?
|
explicitReceiverExpression: IrExpression?
|
||||||
): IrExpression {
|
): IrExpression {
|
||||||
val symbol =
|
val symbol = callableReferenceAccess.calleeReference.toSymbolForCall(
|
||||||
callableReferenceAccess.calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope)
|
callableReferenceAccess.dispatchReceiver, session, classifierStorage, declarationStorage, conversionScope
|
||||||
|
)
|
||||||
val type = callableReferenceAccess.typeRef.toIrType()
|
val type = callableReferenceAccess.typeRef.toIrType()
|
||||||
// val x by y ->
|
// val x by y ->
|
||||||
// val `x$delegate` = y
|
// val `x$delegate` = y
|
||||||
@@ -233,15 +234,17 @@ class CallAndReferenceGenerator(
|
|||||||
val samConstructorCall = qualifiedAccess.tryConvertToSamConstructorCall(type)
|
val samConstructorCall = qualifiedAccess.tryConvertToSamConstructorCall(type)
|
||||||
if (samConstructorCall != null) return samConstructorCall
|
if (samConstructorCall != null) return samConstructorCall
|
||||||
|
|
||||||
val symbol = qualifiedAccess.calleeReference.toSymbolForCall(
|
val dispatchReceiver = qualifiedAccess.dispatchReceiver
|
||||||
|
val calleeReference = qualifiedAccess.calleeReference
|
||||||
|
val symbol = calleeReference.toSymbolForCall(
|
||||||
|
dispatchReceiver,
|
||||||
session,
|
session,
|
||||||
classifierStorage,
|
classifierStorage,
|
||||||
declarationStorage,
|
declarationStorage,
|
||||||
conversionScope
|
conversionScope
|
||||||
)
|
)
|
||||||
return qualifiedAccess.convertWithOffsets { startOffset, endOffset ->
|
return qualifiedAccess.convertWithOffsets { startOffset, endOffset ->
|
||||||
val dispatchReceiver = qualifiedAccess.dispatchReceiver
|
if (calleeReference is FirSuperReference) {
|
||||||
if (qualifiedAccess.calleeReference is FirSuperReference) {
|
|
||||||
if (dispatchReceiver !is FirNoReceiverExpression) {
|
if (dispatchReceiver !is FirNoReceiverExpression) {
|
||||||
return@convertWithOffsets visitor.convertToIrExpression(dispatchReceiver)
|
return@convertWithOffsets visitor.convertToIrExpression(dispatchReceiver)
|
||||||
}
|
}
|
||||||
@@ -253,7 +256,7 @@ class CallAndReferenceGenerator(
|
|||||||
startOffset, endOffset, type, symbol,
|
startOffset, endOffset, type, symbol,
|
||||||
typeArgumentsCount = symbol.owner.typeParameters.size,
|
typeArgumentsCount = symbol.owner.typeParameters.size,
|
||||||
valueArgumentsCount = symbol.owner.valueParameters.size,
|
valueArgumentsCount = symbol.owner.valueParameters.size,
|
||||||
origin = qualifiedAccess.calleeReference.statementOrigin(),
|
origin = calleeReference.statementOrigin(),
|
||||||
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -283,22 +286,22 @@ class CallAndReferenceGenerator(
|
|||||||
)
|
)
|
||||||
else -> IrErrorCallExpressionImpl(
|
else -> IrErrorCallExpressionImpl(
|
||||||
startOffset, endOffset, type,
|
startOffset, endOffset, type,
|
||||||
description = "No getter or backing field found for ${qualifiedAccess.calleeReference.render()}"
|
description = "No getter or backing field found for ${calleeReference.render()}"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is IrFieldSymbol -> IrGetFieldImpl(
|
is IrFieldSymbol -> IrGetFieldImpl(
|
||||||
startOffset, endOffset, symbol, type,
|
startOffset, endOffset, symbol, type,
|
||||||
origin = IrStatementOrigin.GET_PROPERTY.takeIf { qualifiedAccess.calleeReference !is FirDelegateFieldReference },
|
origin = IrStatementOrigin.GET_PROPERTY.takeIf { calleeReference !is FirDelegateFieldReference },
|
||||||
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
||||||
)
|
)
|
||||||
is IrValueSymbol -> IrGetValueImpl(
|
is IrValueSymbol -> IrGetValueImpl(
|
||||||
startOffset, endOffset, type, symbol,
|
startOffset, endOffset, type, symbol,
|
||||||
origin = if (variableAsFunctionMode) IrStatementOrigin.VARIABLE_AS_FUNCTION
|
origin = if (variableAsFunctionMode) IrStatementOrigin.VARIABLE_AS_FUNCTION
|
||||||
else qualifiedAccess.calleeReference.statementOrigin()
|
else calleeReference.statementOrigin()
|
||||||
)
|
)
|
||||||
is IrEnumEntrySymbol -> IrGetEnumValueImpl(startOffset, endOffset, type, symbol)
|
is IrEnumEntrySymbol -> IrGetEnumValueImpl(startOffset, endOffset, type, symbol)
|
||||||
else -> generateErrorCallExpression(startOffset, endOffset, qualifiedAccess.calleeReference, type)
|
else -> generateErrorCallExpression(startOffset, endOffset, calleeReference, type)
|
||||||
}
|
}
|
||||||
}.applyTypeArguments(qualifiedAccess).applyReceivers(qualifiedAccess, explicitReceiverExpression)
|
}.applyTypeArguments(qualifiedAccess).applyReceivers(qualifiedAccess, explicitReceiverExpression)
|
||||||
.applyCallArguments(qualifiedAccess as? FirCall, annotationMode)
|
.applyCallArguments(qualifiedAccess as? FirCall, annotationMode)
|
||||||
@@ -314,10 +317,10 @@ class CallAndReferenceGenerator(
|
|||||||
try {
|
try {
|
||||||
val type = irBuiltIns.unitType
|
val type = irBuiltIns.unitType
|
||||||
val calleeReference = variableAssignment.calleeReference
|
val calleeReference = variableAssignment.calleeReference
|
||||||
val symbol =
|
val symbol = calleeReference.toSymbolForCall(
|
||||||
calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope, preferGetter = false)
|
variableAssignment.dispatchReceiver, session, classifierStorage, declarationStorage, conversionScope, preferGetter = false
|
||||||
|
)
|
||||||
val origin = variableAssignment.getIrAssignmentOrigin()
|
val origin = variableAssignment.getIrAssignmentOrigin()
|
||||||
|
|
||||||
return variableAssignment.convertWithOffsets { startOffset, endOffset ->
|
return variableAssignment.convertWithOffsets { startOffset, endOffset ->
|
||||||
val assignedValue = visitor.convertToIrExpression(variableAssignment.rValue)
|
val assignedValue = visitor.convertToIrExpression(variableAssignment.rValue)
|
||||||
when (symbol) {
|
when (symbol) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -68,11 +69,12 @@ val IrFunction.isSuspend get() = this is IrSimpleFunction && this.isSuspend
|
|||||||
|
|
||||||
val IrFunction.isReal get() = !(this is IrSimpleFunction && isFakeOverride)
|
val IrFunction.isReal get() = !(this is IrSimpleFunction && isFakeOverride)
|
||||||
|
|
||||||
fun IrSimpleFunction.overrides(other: IrSimpleFunction): Boolean {
|
fun <S : IrSymbol> IrOverridableDeclaration<S>.overrides(other: IrOverridableDeclaration<S>): Boolean {
|
||||||
if (this == other) return true
|
if (this == other) return true
|
||||||
|
|
||||||
this.overriddenSymbols.forEach {
|
this.overriddenSymbols.forEach {
|
||||||
if (it.owner.overrides(other)) {
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
if ((it.owner as IrOverridableDeclaration<S>).overrides(other)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ FILE fqName:<root> fileName:/noSymbolForIntRangeIterator.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
||||||
VAR FOR_LOOP_ITERATOR name:tmp_1 type:kotlin.collections.IntIterator [val]
|
VAR FOR_LOOP_ITERATOR name:tmp_1 type:kotlin.collections.IntIterator [val]
|
||||||
CALL 'public open fun iterator (): kotlin.collections.IntIterator [operator] declared in kotlin.ranges.IntProgression' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
CALL 'public open fun iterator (): kotlin.collections.IntIterator [fake_override,operator] declared in kotlin.ranges.IntRange' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
||||||
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
||||||
$this: CONST Int type=kotlin.Int value=0
|
$this: CONST Int type=kotlin.Int value=0
|
||||||
other: GET_VAR 'val x: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
|
other: GET_VAR 'val x: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
|
||||||
@@ -73,7 +73,7 @@ FILE fqName:<root> fileName:/noSymbolForIntRangeIterator.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
||||||
VAR FOR_LOOP_ITERATOR name:tmp_2 type:kotlin.collections.IntIterator [val]
|
VAR FOR_LOOP_ITERATOR name:tmp_2 type:kotlin.collections.IntIterator [val]
|
||||||
CALL 'public open fun iterator (): kotlin.collections.IntIterator [operator] declared in kotlin.ranges.IntProgression' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
CALL 'public open fun iterator (): kotlin.collections.IntIterator [fake_override,operator] declared in kotlin.ranges.IntRange' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
||||||
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
||||||
$this: CONST Int type=kotlin.Int value=0
|
$this: CONST Int type=kotlin.Int value=0
|
||||||
other: GET_VAR 'val y: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
|
other: GET_VAR 'val y: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
|
||||||
|
|||||||
-2
@@ -1,5 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
|
|
||||||
fun testBoolean(): Int {
|
fun testBoolean(): Int {
|
||||||
val b: Boolean? = true
|
val b: Boolean? = true
|
||||||
return b!!.hashCode()
|
return b!!.hashCode()
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
|
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
230?.hashCode()
|
230?.hashCode()
|
||||||
|
|
||||||
|
|||||||
Vendored
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: +InlineClasses
|
// !LANGUAGE: +InlineClasses
|
||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
|
|
||||||
// FILE: utils.kt
|
// FILE: utils.kt
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
|
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
|
|||||||
+1
-1
@@ -340,7 +340,7 @@ FILE fqName:<root> fileName:/enum.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:z type:kotlin.Int visibility:private [final]' type=kotlin.Unit origin=null
|
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:z type:kotlin.Int visibility:private [final]' type=kotlin.Unit origin=null
|
||||||
receiver: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
|
receiver: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
|
||||||
value: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.TestEnum4' type=kotlin.Int origin=GET_PROPERTY
|
value: CALL 'public final fun <get-x> (): kotlin.Int [fake_override] declared in <root>.TestEnum4.TEST2' type=kotlin.Int origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
|
$this: GET_VAR '<this>: <root>.TestEnum4.TEST2 declared in <root>.TestEnum4.TEST2' type=<root>.TestEnum4.TEST2 origin=null
|
||||||
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.TestEnum4.TEST2) returnType:kotlin.Unit
|
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.TestEnum4.TEST2) returnType:kotlin.Unit
|
||||||
overridden:
|
overridden:
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ FILE fqName:<root> fileName:/enumWithMultipleCtors.kt
|
|||||||
VALUE_PARAMETER name:x index:0 type:kotlin.Int
|
VALUE_PARAMETER name:x index:0 type:kotlin.Int
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (arg: kotlin.String) declared in <root>.A'
|
ENUM_CONSTRUCTOR_CALL 'private constructor <init> (arg: kotlin.String) declared in <root>.A'
|
||||||
arg: CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null
|
arg: CALL 'public open fun toString (): kotlin.String [fake_override] declared in kotlin.Int' type=kotlin.String origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Int declared in <root>.A.<init>' type=kotlin.Int origin=null
|
$this: GET_VAR 'x: kotlin.Int declared in <root>.A.<init>' type=kotlin.Int origin=null
|
||||||
CALL 'public final fun <set-prop3> (<set-?>: kotlin.String): kotlin.Unit declared in <root>.A' type=kotlin.Unit origin=EQ
|
CALL 'public final fun <set-prop3> (<set-?>: kotlin.String): kotlin.Unit declared in <root>.A' type=kotlin.Unit origin=EQ
|
||||||
$this: GET_VAR '<this>: <root>.A declared in <root>.A' type=<root>.A origin=null
|
$this: GET_VAR '<this>: <root>.A declared in <root>.A' type=<root>.A origin=null
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
FILE fqName:test1 fileName:/kt19306_test1.kt
|
|
||||||
CLASS CLASS name:A modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
|
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test1.A
|
|
||||||
CONSTRUCTOR visibility:public <> () returnType:test1.A [primary]
|
|
||||||
BLOCK_BODY
|
|
||||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
|
|
||||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:A modality:ABSTRACT visibility:public superTypes:[kotlin.Any]'
|
|
||||||
PROPERTY name:p visibility:protected modality:FINAL [var]
|
|
||||||
FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.String visibility:private
|
|
||||||
EXPRESSION_BODY
|
|
||||||
CONST String type=kotlin.String value=""
|
|
||||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p> visibility:protected modality:FINAL <> ($this:test1.A) returnType:kotlin.String
|
|
||||||
correspondingProperty: PROPERTY name:p visibility:protected modality:FINAL [var]
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:test1.A
|
|
||||||
BLOCK_BODY
|
|
||||||
RETURN type=kotlin.Nothing from='protected final fun <get-p> (): kotlin.String declared in test1.A'
|
|
||||||
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.String visibility:private' type=kotlin.String origin=null
|
|
||||||
receiver: GET_VAR '<this>: test1.A declared in test1.A.<get-p>' type=test1.A origin=null
|
|
||||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-p> visibility:private modality:FINAL <> ($this:test1.A, <set-?>:kotlin.String) returnType:kotlin.Unit
|
|
||||||
correspondingProperty: PROPERTY name:p visibility:protected modality:FINAL [var]
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:test1.A
|
|
||||||
VALUE_PARAMETER name:<set-?> index:0 type:kotlin.String
|
|
||||||
BLOCK_BODY
|
|
||||||
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p type:kotlin.String visibility:private' type=kotlin.Unit origin=null
|
|
||||||
receiver: GET_VAR '<this>: test1.A declared in test1.A.<set-p>' type=test1.A origin=null
|
|
||||||
value: GET_VAR '<set-?>: kotlin.String declared in test1.A.<set-p>' type=kotlin.String origin=null
|
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
|
||||||
overridden:
|
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
|
||||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun hashCode (): kotlin.Int declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun toString (): kotlin.String declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FILE fqName:test2 fileName:/kt19306_test2.kt
|
|
||||||
CLASS CLASS name:B modality:FINAL visibility:public superTypes:[test1.A]
|
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:test2.B
|
|
||||||
CONSTRUCTOR visibility:public <> () returnType:test2.B [primary]
|
|
||||||
BLOCK_BODY
|
|
||||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in test1.A'
|
|
||||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:B modality:FINAL visibility:public superTypes:[test1.A]'
|
|
||||||
FUN name:test visibility:public modality:FINAL <> ($this:test2.B) returnType:kotlin.Function0<kotlin.String>
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:test2.B
|
|
||||||
BLOCK_BODY
|
|
||||||
RETURN type=kotlin.Nothing from='public final fun test (): kotlin.Function0<kotlin.String> declared in test2.B'
|
|
||||||
FUN_EXPR type=kotlin.Function0<kotlin.String> origin=LAMBDA
|
|
||||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.String
|
|
||||||
BLOCK_BODY
|
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.String declared in test2.B.test'
|
|
||||||
CALL 'protected final fun <get-p> (): kotlin.String declared in test1.A' type=kotlin.String origin=GET_PROPERTY
|
|
||||||
$this: GET_VAR '<this>: test2.B declared in test2.B.test' type=test2.B origin=null
|
|
||||||
PROPERTY FAKE_OVERRIDE name:p visibility:protected modality:FINAL [fake_override,var]
|
|
||||||
overridden:
|
|
||||||
protected final p: kotlin.String [var]
|
|
||||||
FUN FAKE_OVERRIDE name:<get-p> visibility:protected modality:FINAL <> ($this:test1.A) returnType:kotlin.String [fake_override]
|
|
||||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:p visibility:protected modality:FINAL [fake_override,var]
|
|
||||||
overridden:
|
|
||||||
protected final fun <get-p> (): kotlin.String declared in test1.A
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:test1.A
|
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
|
||||||
overridden:
|
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in test1.A
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
|
||||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun hashCode (): kotlin.Int [fake_override] declared in test1.A
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun toString (): kotlin.String [fake_override] declared in test1.A
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// SKIP_KT_DUMP
|
// SKIP_KT_DUMP
|
||||||
// FILE: kt19306_test1.kt
|
// FILE: kt19306_test1.kt
|
||||||
package test1
|
package test1
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/equals.kt
|
|||||||
VALUE_PARAMETER name:b index:1 type:kotlin.Int
|
VALUE_PARAMETER name:b index:1 type:kotlin.Int
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun testEquals (a: kotlin.Int, b: kotlin.Int): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun testEquals (a: kotlin.Int, b: kotlin.Int): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Int' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'a: kotlin.Int declared in <root>.testEquals' type=kotlin.Int origin=null
|
$this: GET_VAR 'a: kotlin.Int declared in <root>.testEquals' type=kotlin.Int origin=null
|
||||||
other: GET_VAR 'b: kotlin.Int declared in <root>.testEquals' type=kotlin.Int origin=null
|
other: GET_VAR 'b: kotlin.Int declared in <root>.testEquals' type=kotlin.Int origin=null
|
||||||
FUN name:testJEqeqNull visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
FUN name:testJEqeqNull visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||||
@@ -24,6 +24,6 @@ FILE fqName:<root> fileName:/equals.kt
|
|||||||
FUN name:testJEqualsNull visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
FUN name:testJEqualsNull visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun testJEqualsNull (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun testJEqualsNull (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Int' type=kotlin.Boolean origin=null
|
||||||
$this: GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:INT_NULL type:@[FlexibleNullability] kotlin.Int? visibility:public [static]' type=@[FlexibleNullability] kotlin.Int? origin=GET_PROPERTY
|
$this: GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:INT_NULL type:@[FlexibleNullability] kotlin.Int? visibility:public [static]' type=@[FlexibleNullability] kotlin.Int? origin=GET_PROPERTY
|
||||||
other: CONST Null type=kotlin.Nothing? value=null
|
other: CONST Null type=kotlin.Nothing? value=null
|
||||||
|
|||||||
Vendored
+20
-20
@@ -4,7 +4,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Double
|
VALUE_PARAMETER name:y index:1 type:kotlin.Double
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test1d (x: kotlin.Double, y: kotlin.Double): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test1d (x: kotlin.Double, y: kotlin.Double): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Double declared in <root>.test1d' type=kotlin.Double origin=null
|
$this: GET_VAR 'x: kotlin.Double declared in <root>.test1d' type=kotlin.Double origin=null
|
||||||
other: GET_VAR 'y: kotlin.Double declared in <root>.test1d' type=kotlin.Double origin=null
|
other: GET_VAR 'y: kotlin.Double declared in <root>.test1d' type=kotlin.Double origin=null
|
||||||
FUN name:test2d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Double?) returnType:kotlin.Boolean
|
FUN name:test2d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Double?) returnType:kotlin.Boolean
|
||||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Double?
|
VALUE_PARAMETER name:y index:1 type:kotlin.Double?
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test2d (x: kotlin.Double, y: kotlin.Double?): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test2d (x: kotlin.Double, y: kotlin.Double?): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Double declared in <root>.test2d' type=kotlin.Double origin=null
|
$this: GET_VAR 'x: kotlin.Double declared in <root>.test2d' type=kotlin.Double origin=null
|
||||||
other: GET_VAR 'y: kotlin.Double? declared in <root>.test2d' type=kotlin.Double? origin=null
|
other: GET_VAR 'y: kotlin.Double? declared in <root>.test2d' type=kotlin.Double? origin=null
|
||||||
FUN name:test3d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test3d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test3d (x: kotlin.Double, y: kotlin.Any): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test3d (x: kotlin.Double, y: kotlin.Any): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Double declared in <root>.test3d' type=kotlin.Double origin=null
|
$this: GET_VAR 'x: kotlin.Double declared in <root>.test3d' type=kotlin.Double origin=null
|
||||||
other: GET_VAR 'y: kotlin.Any declared in <root>.test3d' type=kotlin.Any origin=null
|
other: GET_VAR 'y: kotlin.Any declared in <root>.test3d' type=kotlin.Any origin=null
|
||||||
FUN name:test4d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Number) returnType:kotlin.Boolean
|
FUN name:test4d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Number) returnType:kotlin.Boolean
|
||||||
@@ -28,7 +28,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test4d (x: kotlin.Double, y: kotlin.Number): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test4d (x: kotlin.Double, y: kotlin.Number): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Double declared in <root>.test4d' type=kotlin.Double origin=null
|
$this: GET_VAR 'x: kotlin.Double declared in <root>.test4d' type=kotlin.Double origin=null
|
||||||
other: GET_VAR 'y: kotlin.Number declared in <root>.test4d' type=kotlin.Number origin=null
|
other: GET_VAR 'y: kotlin.Number declared in <root>.test4d' type=kotlin.Number origin=null
|
||||||
FUN name:test5d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test5d visibility:public modality:FINAL <> (x:kotlin.Double, y:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -40,7 +40,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Double
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Double
|
||||||
GET_VAR 'y: kotlin.Any declared in <root>.test5d' type=kotlin.Any origin=null
|
GET_VAR 'y: kotlin.Any declared in <root>.test5d' type=kotlin.Any origin=null
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Double declared in <root>.test5d' type=kotlin.Double origin=null
|
$this: GET_VAR 'x: kotlin.Double declared in <root>.test5d' type=kotlin.Double origin=null
|
||||||
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
GET_VAR 'y: kotlin.Any declared in <root>.test5d' type=kotlin.Any origin=null
|
GET_VAR 'y: kotlin.Any declared in <root>.test5d' type=kotlin.Any origin=null
|
||||||
@@ -63,7 +63,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CONST Boolean type=kotlin.Boolean value=false
|
then: CONST Boolean type=kotlin.Boolean value=false
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
$this: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test6d' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test6d' type=kotlin.Any origin=null
|
||||||
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
@@ -76,7 +76,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Float
|
VALUE_PARAMETER name:y index:1 type:kotlin.Float
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test1f (x: kotlin.Float, y: kotlin.Float): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test1f (x: kotlin.Float, y: kotlin.Float): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Float declared in <root>.test1f' type=kotlin.Float origin=null
|
$this: GET_VAR 'x: kotlin.Float declared in <root>.test1f' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'y: kotlin.Float declared in <root>.test1f' type=kotlin.Float origin=null
|
other: GET_VAR 'y: kotlin.Float declared in <root>.test1f' type=kotlin.Float origin=null
|
||||||
FUN name:test2f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Float?) returnType:kotlin.Boolean
|
FUN name:test2f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Float?) returnType:kotlin.Boolean
|
||||||
@@ -84,7 +84,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Float?
|
VALUE_PARAMETER name:y index:1 type:kotlin.Float?
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test2f (x: kotlin.Float, y: kotlin.Float?): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test2f (x: kotlin.Float, y: kotlin.Float?): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Float declared in <root>.test2f' type=kotlin.Float origin=null
|
$this: GET_VAR 'x: kotlin.Float declared in <root>.test2f' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'y: kotlin.Float? declared in <root>.test2f' type=kotlin.Float? origin=null
|
other: GET_VAR 'y: kotlin.Float? declared in <root>.test2f' type=kotlin.Float? origin=null
|
||||||
FUN name:test3f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test3f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -92,7 +92,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test3f (x: kotlin.Float, y: kotlin.Any): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test3f (x: kotlin.Float, y: kotlin.Any): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Float declared in <root>.test3f' type=kotlin.Float origin=null
|
$this: GET_VAR 'x: kotlin.Float declared in <root>.test3f' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'y: kotlin.Any declared in <root>.test3f' type=kotlin.Any origin=null
|
other: GET_VAR 'y: kotlin.Any declared in <root>.test3f' type=kotlin.Any origin=null
|
||||||
FUN name:test4f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Number) returnType:kotlin.Boolean
|
FUN name:test4f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Number) returnType:kotlin.Boolean
|
||||||
@@ -100,7 +100,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test4f (x: kotlin.Float, y: kotlin.Number): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test4f (x: kotlin.Float, y: kotlin.Number): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Float declared in <root>.test4f' type=kotlin.Float origin=null
|
$this: GET_VAR 'x: kotlin.Float declared in <root>.test4f' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'y: kotlin.Number declared in <root>.test4f' type=kotlin.Number origin=null
|
other: GET_VAR 'y: kotlin.Number declared in <root>.test4f' type=kotlin.Number origin=null
|
||||||
FUN name:test5f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test5f visibility:public modality:FINAL <> (x:kotlin.Float, y:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -112,7 +112,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Float
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Float
|
||||||
GET_VAR 'y: kotlin.Any declared in <root>.test5f' type=kotlin.Any origin=null
|
GET_VAR 'y: kotlin.Any declared in <root>.test5f' type=kotlin.Any origin=null
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'x: kotlin.Float declared in <root>.test5f' type=kotlin.Float origin=null
|
$this: GET_VAR 'x: kotlin.Float declared in <root>.test5f' type=kotlin.Float origin=null
|
||||||
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
GET_VAR 'y: kotlin.Any declared in <root>.test5f' type=kotlin.Any origin=null
|
GET_VAR 'y: kotlin.Any declared in <root>.test5f' type=kotlin.Any origin=null
|
||||||
@@ -135,7 +135,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CONST Boolean type=kotlin.Boolean value=false
|
then: CONST Boolean type=kotlin.Boolean value=false
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
$this: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test6f' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test6f' type=kotlin.Any origin=null
|
||||||
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
@@ -159,7 +159,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CONST Boolean type=kotlin.Boolean value=false
|
then: CONST Boolean type=kotlin.Boolean value=false
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
$this: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.testFD' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.testFD' type=kotlin.Any origin=null
|
||||||
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
@@ -183,7 +183,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CONST Boolean type=kotlin.Boolean value=false
|
then: CONST Boolean type=kotlin.Boolean value=false
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
$this: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.testDF' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.testDF' type=kotlin.Any origin=null
|
||||||
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
@@ -196,7 +196,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:x index:0 type:kotlin.Float
|
VALUE_PARAMETER name:x index:0 type:kotlin.Float
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test1fr (x: kotlin.Float): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test1fr (x: kotlin.Float): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'x: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
|
other: GET_VAR 'x: kotlin.Float declared in <root>.test1fr' type=kotlin.Float origin=null
|
||||||
FUN name:test2fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Float?) returnType:kotlin.Boolean
|
FUN name:test2fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Float?) returnType:kotlin.Boolean
|
||||||
@@ -204,7 +204,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:x index:0 type:kotlin.Float?
|
VALUE_PARAMETER name:x index:0 type:kotlin.Float?
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test2fr (x: kotlin.Float?): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test2fr (x: kotlin.Float?): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test2fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test2fr' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'x: kotlin.Float? declared in <root>.test2fr' type=kotlin.Float? origin=null
|
other: GET_VAR 'x: kotlin.Float? declared in <root>.test2fr' type=kotlin.Float? origin=null
|
||||||
FUN name:test3fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test3fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -212,7 +212,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:x index:0 type:kotlin.Any
|
VALUE_PARAMETER name:x index:0 type:kotlin.Any
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test3fr (x: kotlin.Any): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test3fr (x: kotlin.Any): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test3fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test3fr' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'x: kotlin.Any declared in <root>.test3fr' type=kotlin.Any origin=null
|
other: GET_VAR 'x: kotlin.Any declared in <root>.test3fr' type=kotlin.Any origin=null
|
||||||
FUN name:test4fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Number) returnType:kotlin.Boolean
|
FUN name:test4fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Number) returnType:kotlin.Boolean
|
||||||
@@ -220,7 +220,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
VALUE_PARAMETER name:x index:0 type:kotlin.Number
|
VALUE_PARAMETER name:x index:0 type:kotlin.Number
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test4fr (x: kotlin.Number): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test4fr (x: kotlin.Number): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test4fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test4fr' type=kotlin.Float origin=null
|
||||||
other: GET_VAR 'x: kotlin.Number declared in <root>.test4fr' type=kotlin.Number origin=null
|
other: GET_VAR 'x: kotlin.Number declared in <root>.test4fr' type=kotlin.Number origin=null
|
||||||
FUN name:test5fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
|
FUN name:test5fr visibility:public modality:FINAL <> ($receiver:kotlin.Float, x:kotlin.Any) returnType:kotlin.Boolean
|
||||||
@@ -232,7 +232,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Float
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Float
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Any origin=null
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test5fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test5fr' type=kotlin.Float origin=null
|
||||||
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
other: TYPE_OP type=kotlin.Float origin=IMPLICIT_CAST typeOperand=kotlin.Float
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test5fr' type=kotlin.Any origin=null
|
||||||
@@ -248,7 +248,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Double
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Double
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Any origin=null
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Float' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test6fr' type=kotlin.Float origin=null
|
$this: GET_VAR '<this>: kotlin.Float declared in <root>.test6fr' type=kotlin.Float origin=null
|
||||||
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
other: TYPE_OP type=kotlin.Double origin=IMPLICIT_CAST typeOperand=kotlin.Double
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.test6fr' type=kotlin.Any origin=null
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ FILE fqName:<root> fileName:/for.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
||||||
VAR FOR_LOOP_ITERATOR name:tmp_4 type:kotlin.collections.IntIterator [val]
|
VAR FOR_LOOP_ITERATOR name:tmp_4 type:kotlin.collections.IntIterator [val]
|
||||||
CALL 'public open fun iterator (): kotlin.collections.IntIterator [operator] declared in kotlin.ranges.IntProgression' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
CALL 'public open fun iterator (): kotlin.collections.IntIterator [fake_override,operator] declared in kotlin.ranges.IntRange' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
||||||
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
||||||
$this: CONST Int type=kotlin.Int value=1
|
$this: CONST Int type=kotlin.Int value=1
|
||||||
other: CONST Int type=kotlin.Int value=10
|
other: CONST Int type=kotlin.Int value=10
|
||||||
|
|||||||
@@ -78,13 +78,13 @@ FILE fqName:<root> fileName:/kt16904.kt
|
|||||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.A'
|
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.A'
|
||||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.A]'
|
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test1 modality:FINAL visibility:public superTypes:[<root>.A]'
|
||||||
CALL 'public final fun plusAssign (x: kotlin.Int): kotlin.Unit [operator] declared in <root>.B' type=kotlin.Unit origin=null
|
CALL 'public final fun plusAssign (x: kotlin.Int): kotlin.Unit [operator] declared in <root>.B' type=kotlin.Unit origin=null
|
||||||
$this: CALL 'public final fun <get-x> (): <root>.B declared in <root>.A' type=<root>.B origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-x> (): <root>.B [fake_override] declared in <root>.Test1' type=<root>.B origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
||||||
x: CONST Int type=kotlin.Int value=42
|
x: CONST Int type=kotlin.Int value=42
|
||||||
CALL 'public final fun <set-y> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.A' type=kotlin.Unit origin=EQ
|
CALL 'public final fun <set-y> (<set-?>: kotlin.Int): kotlin.Unit [fake_override] declared in <root>.Test1' type=kotlin.Unit origin=EQ
|
||||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
||||||
<set-?>: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
<set-?>: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||||
$this: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.A' type=kotlin.Int origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-y> (): kotlin.Int [fake_override] declared in <root>.Test1' type=kotlin.Int origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
$this: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1' type=<root>.Test1 origin=null
|
||||||
other: CONST Int type=kotlin.Int value=42
|
other: CONST Int type=kotlin.Int value=42
|
||||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL [fake_override,val]
|
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL [fake_override,val]
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
FILE fqName:<root> fileName:/kt35730.kt
|
|
||||||
CLASS INTERFACE name:Base modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
|
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Base
|
|
||||||
FUN name:foo visibility:public modality:OPEN <> ($this:<root>.Base) returnType:kotlin.Unit
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:<root>.Base
|
|
||||||
BLOCK_BODY
|
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
|
||||||
overridden:
|
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
|
||||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun hashCode (): kotlin.Int declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun toString (): kotlin.String declared in kotlin.Any
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
CLASS OBJECT name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]
|
|
||||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Derived
|
|
||||||
CONSTRUCTOR visibility:private <> () returnType:<root>.Derived [primary]
|
|
||||||
BLOCK_BODY
|
|
||||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
|
|
||||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]'
|
|
||||||
FUN FAKE_OVERRIDE name:foo visibility:public modality:OPEN <> ($this:<root>.Base) returnType:kotlin.Unit [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun foo (): kotlin.Unit declared in <root>.Base
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:<root>.Base
|
|
||||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
|
||||||
overridden:
|
|
||||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.Base
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
|
||||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.Base
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
|
||||||
overridden:
|
|
||||||
public open fun toString (): kotlin.String [fake_override] declared in <root>.Base
|
|
||||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
|
||||||
FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
|
||||||
BLOCK_BODY
|
|
||||||
CALL 'public open fun foo (): kotlin.Unit declared in <root>.Base' type=kotlin.Unit origin=null
|
|
||||||
$this: GET_OBJECT 'CLASS OBJECT name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]' type=<root>.Derived
|
|
||||||
CALL 'public open fun foo (): kotlin.Unit declared in <root>.Base' type=kotlin.Unit origin=null
|
|
||||||
$this: GET_OBJECT 'CLASS OBJECT name:Derived modality:FINAL visibility:public superTypes:[<root>.Base]' type=<root>.Derived
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
interface Base {
|
|
||||||
fun foo() {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
object Derived : Base {
|
|
||||||
private constructor() /* primary */ {
|
|
||||||
super/*Any*/()
|
|
||||||
/* <init>() */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun test() {
|
|
||||||
Derived.foo()
|
|
||||||
Derived.foo()
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
import Derived.foo
|
import Derived.foo
|
||||||
interface Base {
|
interface Base {
|
||||||
fun foo() {}
|
fun foo() {}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
FILE fqName:<root> fileName:/kt47245.kt
|
|
||||||
FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
|
||||||
BLOCK_BODY
|
|
||||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
|
||||||
VAR FOR_LOOP_ITERATOR name:tmp_0 type:kotlin.collections.IntIterator [val]
|
|
||||||
CALL 'public open fun iterator (): kotlin.collections.IntIterator [operator] declared in kotlin.ranges.IntProgression' type=kotlin.collections.IntIterator origin=FOR_LOOP_ITERATOR
|
|
||||||
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange [operator] declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
|
||||||
$this: CONST Int type=kotlin.Int value=0
|
|
||||||
other: CONST Int type=kotlin.Int value=0
|
|
||||||
WHILE label=null origin=FOR_LOOP_INNER_WHILE
|
|
||||||
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.IntIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
|
|
||||||
$this: GET_VAR 'val tmp_0: kotlin.collections.IntIterator [val] declared in <root>.test' type=kotlin.collections.IntIterator origin=null
|
|
||||||
body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
|
|
||||||
VAR FOR_LOOP_VARIABLE name:i type:kotlin.Int [val]
|
|
||||||
CALL 'public final fun next (): kotlin.Int [operator] declared in kotlin.collections.IntIterator' type=kotlin.Int origin=FOR_LOOP_NEXT
|
|
||||||
$this: GET_VAR 'val tmp_0: kotlin.collections.IntIterator [val] declared in <root>.test' type=kotlin.collections.IntIterator origin=null
|
|
||||||
BLOCK type=kotlin.Unit origin=null
|
|
||||||
FUN LOCAL_FUNCTION name:x visibility:local modality:FINAL <> () returnType:kotlin.Unit
|
|
||||||
BLOCK_BODY
|
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// SKIP_KT_DUMP
|
// SKIP_KT_DUMP
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
|
|||||||
@@ -141,10 +141,10 @@ FILE fqName:<root> fileName:/kt49203.kt
|
|||||||
VALUE_PARAMETER name:b index:0 type:<root>.B
|
VALUE_PARAMETER name:b index:0 type:<root>.B
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
CALL 'public final fun plusAssign (data: kotlin.String): kotlin.Unit [operator] declared in <root>.X' type=kotlin.Unit origin=null
|
CALL 'public final fun plusAssign (data: kotlin.String): kotlin.Unit [operator] declared in <root>.X' type=kotlin.Unit origin=null
|
||||||
$this: CALL 'public final fun <get-x> (): <root>.X declared in <root>.A' type=<root>.X origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-x> (): <root>.X [fake_override] declared in <root>.B' type=<root>.X origin=GET_PROPERTY
|
||||||
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
|
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
|
||||||
data: CONST String type=kotlin.String value="x"
|
data: CONST String type=kotlin.String value="x"
|
||||||
CALL 'public final fun plusAssign (data: kotlin.String): kotlin.Unit [operator] declared in <root>.X' type=kotlin.Unit origin=null
|
CALL 'public final fun plusAssign (data: kotlin.String): kotlin.Unit [operator] declared in <root>.X' type=kotlin.Unit origin=null
|
||||||
$this: CALL 'public final fun <get-y> (): <root>.X declared in <root>.A' type=<root>.X origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-y> (): <root>.X [fake_override] declared in <root>.B' type=<root>.X origin=GET_PROPERTY
|
||||||
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
|
$this: GET_VAR 'b: <root>.B declared in <root>.test' type=<root>.B origin=null
|
||||||
data: CONST String type=kotlin.String value="y"
|
data: CONST String type=kotlin.String value="y"
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
|
|||||||
FIELD PROPERTY_BACKING_FIELD name:xx type:kotlin.Int visibility:private [final]
|
FIELD PROPERTY_BACKING_FIELD name:xx type:kotlin.Int visibility:private [final]
|
||||||
EXPRESSION_BODY
|
EXPRESSION_BODY
|
||||||
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PLUS
|
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PLUS
|
||||||
$this: CALL 'public final fun <get-x> (): kotlin.Int declared in <root>.Outer.Inner' type=kotlin.Int origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-x> (): kotlin.Int [fake_override] declared in <root>.Host.test.<no name provided>' type=kotlin.Int origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.Host.test.<no name provided> declared in <root>.Host.test.<no name provided>' type=<root>.Host.test.<no name provided> origin=null
|
$this: GET_VAR '<this>: <root>.Host.test.<no name provided> declared in <root>.Host.test.<no name provided>' type=<root>.Host.test.<no name provided> origin=null
|
||||||
other: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.Host' type=kotlin.Int origin=GET_PROPERTY
|
other: CALL 'public final fun <get-y> (): kotlin.Int declared in <root>.Host' type=kotlin.Int origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.Host declared in <root>.Host.test' type=<root>.Host origin=null
|
$this: GET_VAR '<this>: <root>.Host declared in <root>.Host.test' type=<root>.Host origin=null
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
|
|||||||
then: CONST Null type=kotlin.Nothing? value=null
|
then: CONST Null type=kotlin.Nothing? value=null
|
||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CALL 'public open fun hashCode (): kotlin.Int declared in kotlin.Any' type=kotlin.Int origin=null
|
then: CALL 'public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.String' type=kotlin.Int origin=null
|
||||||
$this: GET_VAR 'val tmp_1: kotlin.String? [val] declared in <root>.test2' type=kotlin.String? origin=null
|
$this: GET_VAR 'val tmp_1: kotlin.String? [val] declared in <root>.test2' type=kotlin.String? origin=null
|
||||||
FUN name:test3 visibility:public modality:FINAL <> (x:kotlin.String?, y:kotlin.Any?) returnType:kotlin.Boolean?
|
FUN name:test3 visibility:public modality:FINAL <> (x:kotlin.String?, y:kotlin.Any?) returnType:kotlin.Boolean?
|
||||||
VALUE_PARAMETER name:x index:0 type:kotlin.String?
|
VALUE_PARAMETER name:x index:0 type:kotlin.String?
|
||||||
@@ -110,7 +110,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
|
|||||||
then: CONST Null type=kotlin.Nothing? value=null
|
then: CONST Null type=kotlin.Nothing? value=null
|
||||||
BRANCH
|
BRANCH
|
||||||
if: CONST Boolean type=kotlin.Boolean value=true
|
if: CONST Boolean type=kotlin.Boolean value=true
|
||||||
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
then: CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.String' type=kotlin.Boolean origin=null
|
||||||
$this: GET_VAR 'val tmp_2: kotlin.String? [val] declared in <root>.test3' type=kotlin.String? origin=null
|
$this: GET_VAR 'val tmp_2: kotlin.String? [val] declared in <root>.test3' type=kotlin.String? origin=null
|
||||||
other: GET_VAR 'y: kotlin.Any? declared in <root>.test3' type=kotlin.Any? origin=null
|
other: GET_VAR 'y: kotlin.Any? declared in <root>.test3' type=kotlin.Any? origin=null
|
||||||
FUN name:test4 visibility:public modality:FINAL <> (x:<root>.Ref?) returnType:kotlin.Unit
|
FUN name:test4 visibility:public modality:FINAL <> (x:<root>.Ref?) returnType:kotlin.Unit
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ FILE fqName:<root> fileName:/useImportedMember.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
|
if: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
|
||||||
$this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
|
$this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
|
||||||
arg0: CALL 'public final fun <get-fromClass> <T> (): T of <root>.BaseClass.<get-fromClass> declared in <root>.BaseClass' type=kotlin.String origin=GET_PROPERTY
|
arg0: CALL 'public final fun <get-fromClass> <T> (): T of <root>.C.<get-fromClass> [fake_override] declared in <root>.C' type=kotlin.String origin=GET_PROPERTY
|
||||||
<T>: kotlin.String
|
<T>: kotlin.String
|
||||||
$this: GET_OBJECT 'CLASS OBJECT name:C modality:FINAL visibility:public superTypes:[<root>.BaseClass; <root>.I<kotlin.String>]' type=<root>.C
|
$this: GET_OBJECT 'CLASS OBJECT name:C modality:FINAL visibility:public superTypes:[<root>.BaseClass; <root>.I<kotlin.String>]' type=<root>.C
|
||||||
$receiver: CONST String type=kotlin.String value="10"
|
$receiver: CONST String type=kotlin.String value="10"
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ FILE fqName:<root> fileName:/InnerClassInAnonymous.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun bar (): kotlin.String declared in <root>.box.<no name provided>.Some'
|
RETURN type=kotlin.Nothing from='public final fun bar (): kotlin.String declared in <root>.box.<no name provided>.Some'
|
||||||
CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=PLUS
|
CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=PLUS
|
||||||
$this: CALL 'public final fun <get-s> (): kotlin.String declared in <root>.box.<no name provided>.Base' type=kotlin.String origin=GET_PROPERTY
|
$this: CALL 'public final fun <get-s> (): kotlin.String [fake_override] declared in <root>.box.<no name provided>.Some' type=kotlin.String origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.box.<no name provided>.Some declared in <root>.box.<no name provided>.Some.bar' type=<root>.box.<no name provided>.Some origin=null
|
$this: GET_VAR '<this>: <root>.box.<no name provided>.Some declared in <root>.box.<no name provided>.Some.bar' type=<root>.box.<no name provided>.Some origin=null
|
||||||
other: CALL 'public final fun <get-end> (): kotlin.String declared in <root>.box.<no name provided>' type=kotlin.String origin=GET_PROPERTY
|
other: CALL 'public final fun <get-end> (): kotlin.String declared in <root>.box.<no name provided>' type=kotlin.String origin=GET_PROPERTY
|
||||||
$this: GET_VAR '<this>: <root>.box.<no name provided> declared in <root>.box.<no name provided>' type=<root>.box.<no name provided> origin=null
|
$this: GET_VAR '<this>: <root>.box.<no name provided> declared in <root>.box.<no name provided>' type=<root>.box.<no name provided> origin=null
|
||||||
|
|||||||
+3
-3
@@ -3,7 +3,7 @@ FILE fqName:<root> fileName:/explicitEqualsAndCompareToCallsOnPlatformTypeReceiv
|
|||||||
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun testPlatformEqualsPlatform (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun testPlatformEqualsPlatform (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
$this: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
||||||
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testPlatformEqualsPlatform' type=<root>.JavaClass origin=null
|
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testPlatformEqualsPlatform' type=<root>.JavaClass origin=null
|
||||||
other: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
other: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
||||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/explicitEqualsAndCompareToCallsOnPlatformTypeReceiv
|
|||||||
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun testPlatformEqualsKotlin (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun testPlatformEqualsKotlin (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
$this: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
||||||
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testPlatformEqualsKotlin' type=<root>.JavaClass origin=null
|
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testPlatformEqualsKotlin' type=<root>.JavaClass origin=null
|
||||||
other: CONST Double type=kotlin.Double value=0.0
|
other: CONST Double type=kotlin.Double value=0.0
|
||||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/explicitEqualsAndCompareToCallsOnPlatformTypeReceiv
|
|||||||
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun testKotlinEqualsPlatform (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun testKotlinEqualsPlatform (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Double' type=kotlin.Boolean origin=null
|
||||||
$this: CONST Double type=kotlin.Double value=0.0
|
$this: CONST Double type=kotlin.Double value=0.0
|
||||||
other: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
other: CALL 'public open fun null0 (): @[FlexibleNullability] kotlin.Double? declared in <root>.JavaClass' type=@[FlexibleNullability] kotlin.Double? origin=null
|
||||||
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testKotlinEqualsPlatform' type=<root>.JavaClass origin=null
|
$this: GET_VAR '<this>: <root>.JavaClass declared in <root>.testKotlinEqualsPlatform' type=<root>.JavaClass origin=null
|
||||||
|
|||||||
+2
-2
@@ -2,12 +2,12 @@ FILE fqName:<root> fileName:/platformTypeReceiver.kt
|
|||||||
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test1 (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test1 (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=null
|
||||||
$this: GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:BOOL_NULL type:@[FlexibleNullability] kotlin.Boolean? visibility:public [static]' type=@[FlexibleNullability] kotlin.Boolean? origin=GET_PROPERTY
|
$this: GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:BOOL_NULL type:@[FlexibleNullability] kotlin.Boolean? visibility:public [static]' type=@[FlexibleNullability] kotlin.Boolean? origin=GET_PROPERTY
|
||||||
other: CONST Null type=kotlin.Nothing? value=null
|
other: CONST Null type=kotlin.Nothing? value=null
|
||||||
FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test2 (): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test2 (): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any' type=kotlin.Boolean origin=null
|
CALL 'public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=null
|
||||||
$this: CALL 'public open fun boolNull (): @[FlexibleNullability] kotlin.Boolean? declared in <root>.J' type=@[FlexibleNullability] kotlin.Boolean? origin=null
|
$this: CALL 'public open fun boolNull (): @[FlexibleNullability] kotlin.Boolean? declared in <root>.J' type=@[FlexibleNullability] kotlin.Boolean? origin=null
|
||||||
other: CONST Null type=kotlin.Nothing? value=null
|
other: CONST Null type=kotlin.Nothing? value=null
|
||||||
|
|||||||
+2
-2
@@ -79,7 +79,7 @@ FILE fqName:<root> fileName:/smartCastOnFakeOverrideReceiver.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.B
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.B
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB1' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.B.testB1' type=kotlin.Any origin=null
|
||||||
then: CALL 'public final fun f (): kotlin.Int declared in <root>.A' type=kotlin.Int origin=null
|
then: CALL 'public final fun f (): kotlin.Int [fake_override] declared in <root>.B' type=kotlin.Int origin=null
|
||||||
$this: TYPE_OP type=<root>.B origin=IMPLICIT_CAST typeOperand=<root>.B
|
$this: TYPE_OP type=<root>.B origin=IMPLICIT_CAST typeOperand=<root>.B
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB1' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.B.testB1' type=kotlin.Any origin=null
|
||||||
BRANCH
|
BRANCH
|
||||||
@@ -94,7 +94,7 @@ FILE fqName:<root> fileName:/smartCastOnFakeOverrideReceiver.kt
|
|||||||
BRANCH
|
BRANCH
|
||||||
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.B
|
if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.B
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB2' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.B.testB2' type=kotlin.Any origin=null
|
||||||
then: CALL 'public final fun <get-aVal> (): kotlin.Int declared in <root>.A' type=kotlin.Int origin=GET_PROPERTY
|
then: CALL 'public final fun <get-aVal> (): kotlin.Int [fake_override] declared in <root>.B' type=kotlin.Int origin=GET_PROPERTY
|
||||||
$this: TYPE_OP type=<root>.B origin=IMPLICIT_CAST typeOperand=<root>.B
|
$this: TYPE_OP type=<root>.B origin=IMPLICIT_CAST typeOperand=<root>.B
|
||||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB2' type=kotlin.Any origin=null
|
GET_VAR 'x: kotlin.Any declared in <root>.B.testB2' type=kotlin.Any origin=null
|
||||||
BRANCH
|
BRANCH
|
||||||
|
|||||||
Reference in New Issue
Block a user