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.extensions.declarationGenerators
|
||||
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.FirReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
@@ -161,17 +162,19 @@ fun FirClassifierSymbol<*>.toSymbol(
|
||||
}
|
||||
|
||||
private fun FirBasedSymbol<*>.toSymbolForCall(
|
||||
dispatchReceiver: FirExpression,
|
||||
session: FirSession,
|
||||
classifierStorage: Fir2IrClassifierStorage,
|
||||
declarationStorage: Fir2IrDeclarationStorage,
|
||||
preferGetter: Boolean
|
||||
) = when (this) {
|
||||
is FirCallableSymbol<*> -> unwrapCallRepresentative().toSymbolForCall(declarationStorage, preferGetter)
|
||||
is FirCallableSymbol<*> -> unwrapCallRepresentative().toSymbolForCall(dispatchReceiver, declarationStorage, preferGetter)
|
||||
is FirClassifierSymbol<*> -> toSymbol(session, classifierStorage)
|
||||
else -> error("Unknown symbol: $this")
|
||||
}
|
||||
|
||||
fun FirReference.toSymbolForCall(
|
||||
dispatchReceiver: FirExpression,
|
||||
session: FirSession,
|
||||
classifierStorage: Fir2IrClassifierStorage,
|
||||
declarationStorage: Fir2IrDeclarationStorage,
|
||||
@@ -179,8 +182,10 @@ fun FirReference.toSymbolForCall(
|
||||
preferGetter: Boolean = true
|
||||
): IrSymbol? {
|
||||
return when (this) {
|
||||
is FirResolvedNamedReference -> resolvedSymbol.toSymbolForCall(session, classifierStorage, declarationStorage, preferGetter)
|
||||
is FirErrorNamedReference -> candidateSymbol?.toSymbolForCall(session, classifierStorage, declarationStorage, preferGetter)
|
||||
is FirResolvedNamedReference ->
|
||||
resolvedSymbol.toSymbolForCall(dispatchReceiver, session, classifierStorage, declarationStorage, preferGetter)
|
||||
is FirErrorNamedReference ->
|
||||
candidateSymbol?.toSymbolForCall(dispatchReceiver, session, classifierStorage, declarationStorage, preferGetter)
|
||||
is FirThisReference -> {
|
||||
when (val boundSymbol = boundSymbol) {
|
||||
is FirClassSymbol<*> -> classifierStorage.getIrClassSymbol(boundSymbol).owner.thisReceiver?.symbol
|
||||
@@ -196,9 +201,20 @@ fun FirReference.toSymbolForCall(
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirCallableSymbol<*>.toSymbolForCall(declarationStorage: Fir2IrDeclarationStorage, preferGetter: Boolean): IrSymbol? =
|
||||
when (this) {
|
||||
is FirFunctionSymbol<*> -> declarationStorage.getIrFunctionSymbol(this)
|
||||
private fun FirCallableSymbol<*>.toSymbolForCall(
|
||||
dispatchReceiver: FirExpression,
|
||||
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 -> {
|
||||
(fir as? FirSyntheticProperty)?.let { syntheticProperty ->
|
||||
val delegateSymbol = if (preferGetter) {
|
||||
@@ -207,16 +223,18 @@ private fun FirCallableSymbol<*>.toSymbolForCall(declarationStorage: Fir2IrDecla
|
||||
syntheticProperty.setter?.delegate?.symbol
|
||||
?: throw AssertionError("Written synthetic property must have a setter")
|
||||
}
|
||||
delegateSymbol.unwrapCallRepresentative().toSymbolForCall(declarationStorage, preferGetter)
|
||||
delegateSymbol.unwrapCallRepresentative().toSymbolForCall(dispatchReceiver, declarationStorage, preferGetter)
|
||||
} ?: 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 FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this)
|
||||
is FirDelegateFieldSymbol -> declarationStorage.getIrDelegateFieldSymbol(this)
|
||||
is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) {
|
||||
ConstantValueKind.IntegerLiteral -> {
|
||||
|
||||
+33
-8
@@ -267,8 +267,6 @@ class Fir2IrDeclarationStorage(
|
||||
parent = irParent
|
||||
if (irParent is IrExternalPackageFragment) {
|
||||
irParent.declarations += this
|
||||
} else if (irParent is IrClass) {
|
||||
// TODO: irParent.declarations += this (probably needed for external stuff)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -599,7 +597,7 @@ class Fir2IrDeclarationStorage(
|
||||
else
|
||||
symbolTable.declareSimpleFunction(signature, { Fir2IrSimpleFunctionSymbol(signature, containerSource) }, factory)
|
||||
|
||||
internal fun createIrPropertyAccessor(
|
||||
private fun createIrPropertyAccessor(
|
||||
propertyAccessor: FirPropertyAccessor?,
|
||||
property: FirProperty,
|
||||
correspondingProperty: IrDeclarationWithName,
|
||||
@@ -1089,7 +1087,10 @@ class Fir2IrDeclarationStorage(
|
||||
) as IrConstructorSymbol
|
||||
}
|
||||
|
||||
fun getIrFunctionSymbol(firFunctionSymbol: FirFunctionSymbol<*>): IrFunctionSymbol {
|
||||
fun getIrFunctionSymbol(
|
||||
firFunctionSymbol: FirFunctionSymbol<*>,
|
||||
dispatchReceiverLookupTag: ConeClassLikeLookupTag? = null
|
||||
): IrFunctionSymbol {
|
||||
return when (val fir = firFunctionSymbol.fir) {
|
||||
is FirAnonymousFunction -> {
|
||||
getCachedIrFunction(fir)?.let { return it.symbol }
|
||||
@@ -1099,7 +1100,7 @@ class Fir2IrDeclarationStorage(
|
||||
createIrFunction(fir, irParent, predefinedOrigin = declarationOrigin).symbol
|
||||
}
|
||||
is FirSimpleFunction -> {
|
||||
return getIrCallableSymbol(
|
||||
val originalSymbol = getIrCallableSymbol(
|
||||
firFunctionSymbol,
|
||||
getCachedIrDeclaration = ::getCachedIrFunction,
|
||||
createIrDeclaration = { parent, origin -> createIrFunction(fir, parent, predefinedOrigin = origin) },
|
||||
@@ -1125,6 +1126,17 @@ class Fir2IrDeclarationStorage(
|
||||
irFunction
|
||||
}
|
||||
) 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 -> {
|
||||
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
|
||||
if (fir.isLocal) {
|
||||
return localStorage.getDelegatedProperty(fir)?.symbol ?: getIrVariableSymbol(fir)
|
||||
}
|
||||
return getIrCallableSymbol(
|
||||
val originalSymbol = getIrCallableSymbol(
|
||||
firPropertySymbol,
|
||||
getCachedIrDeclaration = ::getCachedIrProperty,
|
||||
createIrDeclaration = { parent, origin -> createIrProperty(fir, parent, predefinedOrigin = origin) },
|
||||
@@ -1161,6 +1176,16 @@ class Fir2IrDeclarationStorage(
|
||||
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 <
|
||||
@@ -1247,7 +1272,7 @@ class Fir2IrDeclarationStorage(
|
||||
return getIrPropertyForwardedSymbol(firVariableSymbol.fir)
|
||||
}
|
||||
|
||||
fun getIrPropertyForwardedSymbol(fir: FirVariable): IrSymbol {
|
||||
private fun getIrPropertyForwardedSymbol(fir: FirVariable): IrSymbol {
|
||||
return when (fir) {
|
||||
is FirProperty -> {
|
||||
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.expressions.*
|
||||
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.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
@@ -443,7 +444,7 @@ class Fir2IrVisitor(
|
||||
}
|
||||
}
|
||||
} 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
|
||||
if (receiver != null) {
|
||||
return thisReceiverExpression.convertWithOffsets { startOffset, endOffset ->
|
||||
|
||||
+16
-13
@@ -70,8 +70,9 @@ class CallAndReferenceGenerator(
|
||||
callableReferenceAccess: FirCallableReferenceAccess,
|
||||
explicitReceiverExpression: IrExpression?
|
||||
): IrExpression {
|
||||
val symbol =
|
||||
callableReferenceAccess.calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope)
|
||||
val symbol = callableReferenceAccess.calleeReference.toSymbolForCall(
|
||||
callableReferenceAccess.dispatchReceiver, session, classifierStorage, declarationStorage, conversionScope
|
||||
)
|
||||
val type = callableReferenceAccess.typeRef.toIrType()
|
||||
// val x by y ->
|
||||
// val `x$delegate` = y
|
||||
@@ -233,15 +234,17 @@ class CallAndReferenceGenerator(
|
||||
val samConstructorCall = qualifiedAccess.tryConvertToSamConstructorCall(type)
|
||||
if (samConstructorCall != null) return samConstructorCall
|
||||
|
||||
val symbol = qualifiedAccess.calleeReference.toSymbolForCall(
|
||||
val dispatchReceiver = qualifiedAccess.dispatchReceiver
|
||||
val calleeReference = qualifiedAccess.calleeReference
|
||||
val symbol = calleeReference.toSymbolForCall(
|
||||
dispatchReceiver,
|
||||
session,
|
||||
classifierStorage,
|
||||
declarationStorage,
|
||||
conversionScope
|
||||
)
|
||||
return qualifiedAccess.convertWithOffsets { startOffset, endOffset ->
|
||||
val dispatchReceiver = qualifiedAccess.dispatchReceiver
|
||||
if (qualifiedAccess.calleeReference is FirSuperReference) {
|
||||
if (calleeReference is FirSuperReference) {
|
||||
if (dispatchReceiver !is FirNoReceiverExpression) {
|
||||
return@convertWithOffsets visitor.convertToIrExpression(dispatchReceiver)
|
||||
}
|
||||
@@ -253,7 +256,7 @@ class CallAndReferenceGenerator(
|
||||
startOffset, endOffset, type, symbol,
|
||||
typeArgumentsCount = symbol.owner.typeParameters.size,
|
||||
valueArgumentsCount = symbol.owner.valueParameters.size,
|
||||
origin = qualifiedAccess.calleeReference.statementOrigin(),
|
||||
origin = calleeReference.statementOrigin(),
|
||||
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
||||
)
|
||||
}
|
||||
@@ -283,22 +286,22 @@ class CallAndReferenceGenerator(
|
||||
)
|
||||
else -> IrErrorCallExpressionImpl(
|
||||
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(
|
||||
startOffset, endOffset, symbol, type,
|
||||
origin = IrStatementOrigin.GET_PROPERTY.takeIf { qualifiedAccess.calleeReference !is FirDelegateFieldReference },
|
||||
origin = IrStatementOrigin.GET_PROPERTY.takeIf { calleeReference !is FirDelegateFieldReference },
|
||||
superQualifierSymbol = dispatchReceiver.superQualifierSymbol()
|
||||
)
|
||||
is IrValueSymbol -> IrGetValueImpl(
|
||||
startOffset, endOffset, type, symbol,
|
||||
origin = if (variableAsFunctionMode) IrStatementOrigin.VARIABLE_AS_FUNCTION
|
||||
else qualifiedAccess.calleeReference.statementOrigin()
|
||||
else calleeReference.statementOrigin()
|
||||
)
|
||||
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)
|
||||
.applyCallArguments(qualifiedAccess as? FirCall, annotationMode)
|
||||
@@ -314,10 +317,10 @@ class CallAndReferenceGenerator(
|
||||
try {
|
||||
val type = irBuiltIns.unitType
|
||||
val calleeReference = variableAssignment.calleeReference
|
||||
val symbol =
|
||||
calleeReference.toSymbolForCall(session, classifierStorage, declarationStorage, conversionScope, preferGetter = false)
|
||||
val symbol = calleeReference.toSymbolForCall(
|
||||
variableAssignment.dispatchReceiver, session, classifierStorage, declarationStorage, conversionScope, preferGetter = false
|
||||
)
|
||||
val origin = variableAssignment.getIrAssignmentOrigin()
|
||||
|
||||
return variableAssignment.convertWithOffsets { startOffset, endOffset ->
|
||||
val assignedValue = visitor.convertToIrExpression(variableAssignment.rValue)
|
||||
when (symbol) {
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
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.FqName
|
||||
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)
|
||||
|
||||
fun IrSimpleFunction.overrides(other: IrSimpleFunction): Boolean {
|
||||
fun <S : IrSymbol> IrOverridableDeclaration<S>.overrides(other: IrOverridableDeclaration<S>): Boolean {
|
||||
if (this == other) return true
|
||||
|
||||
this.overriddenSymbols.forEach {
|
||||
if (it.owner.overrides(other)) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
if ((it.owner as IrOverridableDeclaration<S>).overrides(other)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ FILE fqName:<root> fileName:/noSymbolForIntRangeIterator.kt
|
||||
BLOCK_BODY
|
||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
||||
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: CONST Int type=kotlin.Int value=0
|
||||
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 type=kotlin.Unit origin=FOR_LOOP
|
||||
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: CONST Int type=kotlin.Int value=0
|
||||
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 {
|
||||
val b: Boolean? = true
|
||||
return b!!.hashCode()
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
fun box(): String {
|
||||
230?.hashCode()
|
||||
|
||||
|
||||
Vendored
-1
@@ -1,5 +1,4 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
// FILE: utils.kt
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// JVM_TARGET: 1.8
|
||||
|
||||
fun box(): String {
|
||||
|
||||
+1
-1
@@ -340,7 +340,7 @@ FILE fqName:<root> fileName:/enum.kt
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.TestEnum4.TEST2) returnType:kotlin.Unit
|
||||
overridden:
|
||||
|
||||
@@ -159,7 +159,7 @@ FILE fqName:<root> fileName:/enumWithMultipleCtors.kt
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.Int
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
|
||||
@@ -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
|
||||
// FILE: kt19306_test1.kt
|
||||
package test1
|
||||
|
||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/equals.kt
|
||||
VALUE_PARAMETER name:b index:1 type:kotlin.Int
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -24,6 +24,6 @@ FILE fqName:<root> fileName:/equals.kt
|
||||
FUN name:testJEqualsNull visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Double?
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -28,7 +28,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -40,7 +40,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -63,7 +63,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
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
|
||||
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
|
||||
@@ -76,7 +76,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Float
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -84,7 +84,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Float?
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -92,7 +92,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Any
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -100,7 +100,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:y index:1 type:kotlin.Number
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -112,7 +112,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -135,7 +135,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
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
|
||||
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
|
||||
@@ -159,7 +159,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
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
|
||||
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
|
||||
@@ -183,7 +183,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
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
|
||||
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
|
||||
@@ -196,7 +196,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.Float
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -204,7 +204,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.Float?
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -212,7 +212,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.Any
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -220,7 +220,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
VALUE_PARAMETER name:x index:0 type:kotlin.Number
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
@@ -232,7 +232,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
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
|
||||
@@ -248,7 +248,7 @@ FILE fqName:<root> fileName:/floatingPointEquals.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ FILE fqName:<root> fileName:/for.kt
|
||||
BLOCK_BODY
|
||||
BLOCK type=kotlin.Unit origin=FOR_LOOP
|
||||
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: CONST Int type=kotlin.Int value=1
|
||||
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'
|
||||
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
|
||||
$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
|
||||
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
|
||||
<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
|
||||
other: CONST Int type=kotlin.Int value=42
|
||||
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
|
||||
interface Base {
|
||||
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
|
||||
|
||||
fun test() {
|
||||
|
||||
@@ -141,10 +141,10 @@ FILE fqName:<root> fileName:/kt49203.kt
|
||||
VALUE_PARAMETER name:b index:0 type:<root>.B
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
$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
|
||||
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]
|
||||
EXPRESSION_BODY
|
||||
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
|
||||
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
|
||||
|
||||
@@ -92,7 +92,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
|
||||
then: CONST Null type=kotlin.Nothing? value=null
|
||||
BRANCH
|
||||
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
|
||||
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?
|
||||
@@ -110,7 +110,7 @@ FILE fqName:<root> fileName:/safeCalls.kt
|
||||
then: CONST Null type=kotlin.Nothing? value=null
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
|
||||
@@ -260,7 +260,7 @@ FILE fqName:<root> fileName:/useImportedMember.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
$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"
|
||||
|
||||
@@ -43,7 +43,7 @@ FILE fqName:<root> fileName:/InnerClassInAnonymous.kt
|
||||
BLOCK_BODY
|
||||
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
|
||||
$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
|
||||
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
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@ FILE fqName:<root> fileName:/explicitEqualsAndCompareToCallsOnPlatformTypeReceiv
|
||||
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
||||
BLOCK_BODY
|
||||
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: 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
|
||||
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/explicitEqualsAndCompareToCallsOnPlatformTypeReceiv
|
||||
$receiver: VALUE_PARAMETER name:<this> type:<root>.JavaClass
|
||||
BLOCK_BODY
|
||||
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: GET_VAR '<this>: <root>.JavaClass declared in <root>.testPlatformEqualsKotlin' type=<root>.JavaClass origin=null
|
||||
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
|
||||
BLOCK_BODY
|
||||
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
|
||||
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
|
||||
|
||||
+2
-2
@@ -2,12 +2,12 @@ FILE fqName:<root> fileName:/platformTypeReceiver.kt
|
||||
FUN name:test1 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||
BLOCK_BODY
|
||||
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
|
||||
other: CONST Null type=kotlin.Nothing? value=null
|
||||
FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
|
||||
BLOCK_BODY
|
||||
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
|
||||
other: CONST Null type=kotlin.Nothing? value=null
|
||||
|
||||
+2
-2
@@ -79,7 +79,7 @@ FILE fqName:<root> fileName:/smartCastOnFakeOverrideReceiver.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB1' type=kotlin.Any origin=null
|
||||
BRANCH
|
||||
@@ -94,7 +94,7 @@ FILE fqName:<root> fileName:/smartCastOnFakeOverrideReceiver.kt
|
||||
BRANCH
|
||||
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
|
||||
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
|
||||
GET_VAR 'x: kotlin.Any declared in <root>.B.testB2' type=kotlin.Any origin=null
|
||||
BRANCH
|
||||
|
||||
Reference in New Issue
Block a user