[FIR] Fix translation of invokes & add return expressions for lambdas
* fixed NoSuchMethod caused by mismatched signatures of the "invoke" method generated for lambda arguments * added test cases in invoke.kt for KFunction and anonymous functions * added a transformer to wrap the last expression in the bodies of lambdas with return
This commit is contained in:
committed by
Mikhail Glukhikh
parent
5eedba3903
commit
7249d2f889
@@ -12,18 +12,14 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
||||
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
|
||||
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.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.fir.references.FirReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.buildUseSiteMemberScope
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirResolvedNamedReferenceImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.SyntheticPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.IntegerLiteralTypeApproximationTransformer
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperator
|
||||
@@ -485,8 +481,8 @@ class Fir2IrVisitor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement =
|
||||
anonymousFunction.convertWithOffsets { startOffset, endOffset ->
|
||||
override fun visitAnonymousFunction(anonymousFunction: FirAnonymousFunction, data: Any?): IrElement {
|
||||
return anonymousFunction.convertWithOffsets { startOffset, endOffset ->
|
||||
val irFunction = declarationStorage.getIrLocalFunction(anonymousFunction)
|
||||
irFunction.setParentByParentStack().withFunction {
|
||||
setFunctionContent(irFunction.descriptor, anonymousFunction)
|
||||
@@ -496,6 +492,7 @@ class Fir2IrVisitor(
|
||||
|
||||
IrFunctionExpressionImpl(startOffset, endOffset, type, irFunction, IrStatementOrigin.LAMBDA)
|
||||
}
|
||||
}
|
||||
|
||||
private fun IrValueParameter.setDefaultValue(firValueParameter: FirValueParameter) {
|
||||
val firDefaultValue = firValueParameter.defaultValue
|
||||
@@ -708,6 +705,7 @@ class Fir2IrVisitor(
|
||||
is FirPropertyFromParameterResolvedNamedReference -> IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||
is FirResolvedNamedReference -> when (resolvedSymbol) {
|
||||
is AccessorSymbol, is SyntheticPropertySymbol -> IrStatementOrigin.GET_PROPERTY
|
||||
is FirNamedFunctionSymbol -> if (resolvedSymbol.callableId.isInvoke()) IrStatementOrigin.INVOKE else null
|
||||
else -> null
|
||||
}
|
||||
else -> null
|
||||
@@ -893,12 +891,30 @@ class Fir2IrVisitor(
|
||||
val convertibleCall = if (functionCall.toResolvedCallableSymbol()?.fir is FirIntegerOperator) {
|
||||
functionCall.copy().transformSingle(integerApproximator, null)
|
||||
} else {
|
||||
functionCall
|
||||
checkIfInvoke(functionCall)
|
||||
}
|
||||
return convertibleCall.toIrExpression(convertibleCall.typeRef)
|
||||
.applyCallArguments(convertibleCall).applyTypeArguments(convertibleCall).applyReceivers(convertibleCall)
|
||||
}
|
||||
|
||||
// Use the generic invoke method in Function classes, to match bridges generated by the backend.
|
||||
private fun checkIfInvoke(functionCall: FirFunctionCall): FirFunctionCall {
|
||||
if (functionCall !is FirFunctionCallImpl) {
|
||||
return functionCall
|
||||
}
|
||||
val calleeReference = (functionCall.calleeReference as? FirResolvedNamedReferenceImpl) ?: return functionCall
|
||||
val resolvedSymbol = (calleeReference.resolvedSymbol as? FirNamedFunctionSymbol) ?: return functionCall
|
||||
if (resolvedSymbol.callableId.isInvoke()) {
|
||||
functionCall.calleeReference =
|
||||
FirResolvedNamedReferenceImpl(
|
||||
source = calleeReference.source,
|
||||
name = calleeReference.name,
|
||||
resolvedSymbol = resolvedSymbol.overriddenSymbol!!
|
||||
)
|
||||
}
|
||||
return functionCall
|
||||
}
|
||||
|
||||
override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Any?): IrElement {
|
||||
return annotationCall.toIrExpression().applyCallArguments(annotationCall)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
@@ -438,3 +439,8 @@ fun BodyResolveComponents.transformQualifiedAccessUsingSmartcastInfo(qualifiedAc
|
||||
}
|
||||
return FirExpressionWithSmartcastImpl(qualifiedAccessExpression, intersectedTypeRef, typesFromSmartCast)
|
||||
}
|
||||
|
||||
fun CallableId.isInvoke() =
|
||||
packageName == KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME
|
||||
&& className?.asString()?.startsWith("Function") == true
|
||||
&& callableName.asString() == "invoke"
|
||||
|
||||
+38
-7
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirFunctionTarget
|
||||
import org.jetbrains.kotlin.fir.copy
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
|
||||
@@ -13,7 +14,10 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirValueParameterImpl
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.diagnostics.FirSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirReturnExpressionImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
@@ -27,10 +31,7 @@ import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.compose
|
||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
@@ -406,10 +407,10 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
|
||||
return when (data) {
|
||||
ResolutionMode.ContextDependent -> {
|
||||
dataFlowAnalyzer.visitPostponedAnonymousFunction(anonymousFunction)
|
||||
anonymousFunction.compose()
|
||||
anonymousFunction.addReturn().compose()
|
||||
}
|
||||
is ResolutionMode.LambdaResolution -> {
|
||||
transformAnonymousFunctionWithLambdaResolution(anonymousFunction, data).compose()
|
||||
transformAnonymousFunctionWithLambdaResolution(anonymousFunction, data).addReturn().compose()
|
||||
}
|
||||
is ResolutionMode.WithExpectedType, is ResolutionMode.ContextIndependent -> {
|
||||
val expectedTypeRef = (data as? ResolutionMode.WithExpectedType)?.expectedTypeRef ?: FirImplicitTypeRefImpl(null)
|
||||
@@ -484,7 +485,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
|
||||
val returnTypes = dataFlowAnalyzer.returnExpressionsOfAnonymousFunction(af).mapNotNull { (it as? FirExpression)?.resultType?.coneTypeUnsafe() }
|
||||
af.replaceReturnTypeRef(af.returnTypeRef.resolvedTypeFromPrototype(inferenceComponents.ctx.commonSuperTypeOrNull(returnTypes) ?: session.builtinTypes.unitType.coneTypeUnsafe()))
|
||||
af.replaceTypeRef(af.constructFunctionalTypeRef(session))
|
||||
af.compose()
|
||||
af.addReturn().compose()
|
||||
}
|
||||
is ResolutionMode.WithStatus -> {
|
||||
throw AssertionError("Should not be here in WithStatus mode")
|
||||
@@ -492,6 +493,36 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirAnonymousFunction.addReturn(): FirAnonymousFunction {
|
||||
val lastStatement = body?.statements?.lastOrNull()
|
||||
val returnType = (body?.typeRef as? FirResolvedTypeRef) ?: return this
|
||||
val returnNothing = returnType.isNothing || returnType.isUnit
|
||||
if (lastStatement is FirExpression && !returnNothing) {
|
||||
body?.transformChildren(
|
||||
object : FirDefaultTransformer<FirExpression>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: FirExpression): CompositeTransformResult<E> {
|
||||
if (element == lastStatement) {
|
||||
val returnExpression = FirReturnExpressionImpl(element.source, lastStatement)
|
||||
returnExpression.target = FirFunctionTarget(null)
|
||||
(returnExpression.target as FirFunctionTarget).bind(this@addReturn)
|
||||
return (returnExpression as E).compose()
|
||||
}
|
||||
return element.compose()
|
||||
}
|
||||
|
||||
override fun transformReturnExpression(
|
||||
returnExpression: FirReturnExpression,
|
||||
data: FirExpression
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
return returnExpression.compose()
|
||||
}
|
||||
},
|
||||
FirUnitExpression(null)
|
||||
)
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
private inline fun <T> withLabelAndReceiverType(
|
||||
labelName: Name?,
|
||||
owner: FirDeclaration,
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ FILE: incorrectFunctionalType.kt
|
||||
}
|
||||
public final fun test(): R|kotlin/Unit| {
|
||||
R|/foo|(<L> = foo@fun R|kotlin/Int|.<anonymous>(it: R|kotlin/Int|): R|kotlin/Int| {
|
||||
this@R|special/anonymous|.R|kotlin/Int.plus|(R|<local>/it|)
|
||||
^ this@R|special/anonymous|.R|kotlin/Int.plus|(R|<local>/it|)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -26,29 +26,29 @@ FILE: integerLiteralTypes.kt
|
||||
}
|
||||
public final fun test_3(): R|kotlin/Unit| {
|
||||
R|/takeInt|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
R|/takeByte|(R|kotlin/run|<R|kotlin/Byte|>(<L> = run@fun <anonymous>(): R|kotlin/Byte| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
R|/takeLong|(R|kotlin/run|<R|kotlin/Long|>(<L> = run@fun <anonymous>(): R|kotlin/Long| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
}
|
||||
public final fun test_4(): R|kotlin/Unit| {
|
||||
R|/takeAny|(Int(1))
|
||||
R|/takeAny|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
}
|
||||
public final fun test_5(): R|kotlin/Unit| {
|
||||
<Inapplicable(INAPPLICABLE): [/takeString]>#(Int(1))
|
||||
<Inapplicable(INAPPLICABLE): [/takeString]>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ FILE: lambdaInLambda.kt
|
||||
R|/buildString|(<L> = buildString@fun R|StringBuilder|.<anonymous>(): R|kotlin/Unit| {
|
||||
this@R|special/anonymous|.R|/insert|<R|StringBuilder|, R|KDocTemplate|>(R|/KDocTemplate.KDocTemplate|(), <L> = insert@fun R|KDocTemplate|.<anonymous>(): R|kotlin/Unit| {
|
||||
this@R|special/anonymous|.R|/KDocTemplate.definition|(<L> = definition@fun R|StringBuilder|.<anonymous>(): R|kotlin/Unit| {
|
||||
R|<local>/ordinal|?.R|kotlin/let|<R|kotlin/Int|, R|kotlin/Unit|>(<L> = let@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
|
||||
^ R|<local>/ordinal|?.R|kotlin/let|<R|kotlin/Int|, R|kotlin/Unit|>(<L> = let@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
|
||||
Unit
|
||||
}
|
||||
)
|
||||
|
||||
@@ -8,7 +8,7 @@ FILE: main.kt
|
||||
}
|
||||
public final fun test(): R|kotlin/Unit| {
|
||||
lval processor: <ERROR TYPE REF: Inapplicable(INAPPLICABLE): [/AdapterProcessor.AdapterProcessor]> = <Inapplicable(INAPPLICABLE): [/AdapterProcessor.AdapterProcessor]>#<R|PsiMethod|, R|PsiClass|>(R|/Function|<R|PsiMethod?|, R|PsiClass?|>(<L> = Function@fun <anonymous>(method: R|PsiMethod?|): R|PsiClass?| {
|
||||
R|<local>/method|?.R|/PsiMethod.containingClass|
|
||||
^ R|<local>/method|?.R|/PsiMethod.containingClass|
|
||||
}
|
||||
))
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@ FILE: lambdaInUnresolvedCall.kt
|
||||
public final fun test_1(): R|kotlin/Unit| {
|
||||
<Unresolved name: myRun>#(<L> = myRun@fun <anonymous>(): R|kotlin/Int| {
|
||||
lval x: R|kotlin/Int| = Int(1)
|
||||
R|<local>/x|.R|kotlin/Int.times|(Int(2))
|
||||
^ R|<local>/x|.R|kotlin/Int.times|(Int(2))
|
||||
}
|
||||
)
|
||||
}
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
<Unresolved name: myRun>#(<L> = myRun@fun <anonymous>(): R|kotlin/Any?| {
|
||||
R|/materialize|<R|kotlin/Any?|>()
|
||||
^ R|/materialize|<R|kotlin/Any?|>()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ fun test_5() {
|
||||
|
||||
fun test_6() {
|
||||
<!INAPPLICABLE_CANDIDATE!>takeByte<!>(run { 127 + 1 })
|
||||
<!INAPPLICABLE_CANDIDATE!>takeByte<!>(1 <!INAPPLICABLE_CANDIDATE!>+<!> run { 1 })
|
||||
<!INAPPLICABLE_CANDIDATE!>takeByte<!>(1 + run { 1 })
|
||||
takeByte(run { 1 + 1 })
|
||||
1 + 1
|
||||
run { 1 }
|
||||
|
||||
@@ -52,24 +52,24 @@ FILE: operatorsOverLiterals.kt
|
||||
}
|
||||
public final fun test_6(): R|kotlin/Unit| {
|
||||
<Inapplicable(INAPPLICABLE): [/takeByte]>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(127).R|kotlin/Int.plus|(Int(1))
|
||||
^ Int(127).R|kotlin/Int.plus|(Int(1))
|
||||
}
|
||||
))
|
||||
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1).<Inapplicable(INAPPLICABLE): [kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus, kotlin/Int.plus]>#(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
<Inapplicable(INAPPLICABLE): [/takeByte]>#(Int(1).R|<local>/plus|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
^ Int(1)
|
||||
}
|
||||
)))
|
||||
R|/takeByte|(R|kotlin/run|<R|kotlin/Byte|>(<L> = run@fun <anonymous>(): R|kotlin/Byte| <kind=EXACTLY_ONCE> {
|
||||
Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
^ Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
}
|
||||
))
|
||||
Int(1).R|kotlin/Int.plus|(Int(1))
|
||||
R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
)
|
||||
Int(1).R|<local>/plus|(R|kotlin/run|<R|kotlin/Int|>(<L> = run@fun <anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
))
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ FILE: overloadWithDefault.kt
|
||||
}
|
||||
public final fun test(a: R|A|): R|kotlin/Unit| {
|
||||
R|<local>/a|.R|/A.foo|(<L> = foo@fun <anonymous>(): R|kotlin/Boolean| {
|
||||
Boolean(true)
|
||||
^ Boolean(true)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -14,12 +14,12 @@ FILE: cast.kt
|
||||
|
||||
public get(): R|() -> kotlin/Unit|
|
||||
public final val h: R|(kotlin/String) -> kotlin/Boolean| = fun <anonymous>(_: R|kotlin/String|): R|kotlin/Boolean| {
|
||||
Boolean(false)
|
||||
^ Boolean(false)
|
||||
}
|
||||
|
||||
public get(): R|(kotlin/String) -> kotlin/Boolean|
|
||||
public final val hError: R|(ERROR CLASS: No type for parameter) -> kotlin/Boolean| = fun <anonymous>(_: R|ERROR CLASS: No type for parameter|): R|kotlin/Boolean| {
|
||||
Boolean(true)
|
||||
^ Boolean(true)
|
||||
}
|
||||
|
||||
public get(): R|(ERROR CLASS: No type for parameter) -> kotlin/Boolean|
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ digraph complex_kt {
|
||||
17 [label="Postponed enter to lambda"];
|
||||
18 [label="Postponed exit from lambda"];
|
||||
19 [label="Function call: <Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|).<Unresolved name: connect>#(<L> = connect@fun <anonymous>(): R|ERROR CLASS: Unresolved name: fromJson| {
|
||||
<Unresolved name: GsonBuilder>#().<Unresolved name: create>#().<Unresolved name: fromJson>#(<Unresolved name: it>#.<Unresolved name: inputStream>#.<Ambiguity: reader, [kotlin/io/reader, kotlin/io/reader, kotlin/io/reader]>#(), <getClass>(Q|kotlin/Array|).R|kotlin/jvm/java|)
|
||||
^ <Unresolved name: GsonBuilder>#().<Unresolved name: create>#().<Unresolved name: fromJson>#(<Unresolved name: it>#.<Unresolved name: inputStream>#.<Ambiguity: reader, [kotlin/io/reader, kotlin/io/reader, kotlin/io/reader]>#(), <getClass>(Q|kotlin/Array|).R|kotlin/jvm/java|)
|
||||
}
|
||||
)"];
|
||||
20 [label="Exit block"];
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ FILE: complex.kt
|
||||
lval url: R|kotlin/String| = <strcat>(String(https://plugins.jetbrains.com/api/plugins/), R|<local>/pluginId|.<Unresolved name: idString>#.R|kotlin/toString|(), String(/updates?version=), R|<local>/version|.R|kotlin/Any.toString|())
|
||||
lval pluginDTOs: R|kotlin/Array<ERROR CLASS: Symbol not found, for `PluginDTO`>| = try {
|
||||
<Unresolved name: HttpRequests>#.<Unresolved name: request>#(R|<local>/url|).<Unresolved name: connect>#(<L> = connect@fun <anonymous>(): R|ERROR CLASS: Unresolved name: fromJson| {
|
||||
<Unresolved name: GsonBuilder>#().<Unresolved name: create>#().<Unresolved name: fromJson>#(<Unresolved name: it>#.<Unresolved name: inputStream>#.<Ambiguity: reader, [kotlin/io/reader, kotlin/io/reader, kotlin/io/reader]>#(), <getClass>(Q|kotlin/Array|).R|kotlin/jvm/java|)
|
||||
^ <Unresolved name: GsonBuilder>#().<Unresolved name: create>#().<Unresolved name: fromJson>#(<Unresolved name: it>#.<Unresolved name: inputStream>#.<Ambiguity: reader, [kotlin/io/reader, kotlin/io/reader, kotlin/io/reader]>#(), <getClass>(Q|kotlin/Array|).R|kotlin/jvm/java|)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ FILE: initBlockAndInPlaceLambda.kt
|
||||
|
||||
init {
|
||||
lval c: R|C?| = R|<local>/a|.R|/A.b|?.R|kotlin/let|<R|B|, R|C|>(<L> = let@fun <anonymous>(it: R|B|): R|C| <kind=EXACTLY_ONCE> {
|
||||
R|/C.C|(R|<local>/a|, R|<local>/it|)
|
||||
^ R|/C.C|(R|<local>/a|, R|<local>/it|)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@ digraph lambdas_kt {
|
||||
}
|
||||
17 [label="Postponed exit from lambda"];
|
||||
18 [label="Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
R|<local>/x|.R|kotlin/Int.inc|()
|
||||
^ R|<local>/x|.R|kotlin/Int.inc|()
|
||||
}
|
||||
)"];
|
||||
19 [label="Exit block"];
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@ FILE: lambdas.kt
|
||||
when () {
|
||||
(R|<local>/x| is R|kotlin/Int|) -> {
|
||||
R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
R|<local>/x|.R|kotlin/Int.inc|()
|
||||
^ R|<local>/x|.R|kotlin/Int.inc|()
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -17,7 +17,7 @@ FILE: lambdas.kt
|
||||
when () {
|
||||
(R|<local>/x| is R|kotlin/Int|) -> {
|
||||
lval lambda: R|() -> kotlin/Int| = fun <anonymous>(): R|kotlin/Int| {
|
||||
R|<local>/x|.R|kotlin/Int.inc|()
|
||||
^ R|<local>/x|.R|kotlin/Int.inc|()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
0: Enter function "testWhile" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter while loop -> 3 | <- 1
|
||||
3: Enter loop condition -> 4 | <- 2, 12
|
||||
4: Access variable R|<local>/b| -> 5 | <- 3
|
||||
5: Exit loop condition -> 6, 13 | <- 4
|
||||
6: Enter loop block -> 7 | <- 5
|
||||
7: Enter block -> 8 | <- 6
|
||||
8: Access variable R|<local>/x| -> 9 | <- 7
|
||||
9: Type operator: "x is String" -> 10 | <- 8
|
||||
10: Variable declaration: lval y: R|kotlin/Boolean| -> 11 | <- 9
|
||||
11: Exit block -> 12 | <- 10
|
||||
12: Exit loop block -> 3 | <- 11
|
||||
13: Exit whileloop -> 14 | <- 5
|
||||
14: Access variable R|<local>/x| -> 15 | <- 13
|
||||
15: Type operator: "x is String" -> 16 | <- 14
|
||||
16: Exit block -> 17 | <- 15
|
||||
17: Exit function "testWhile" -> | <- 16
|
||||
|
||||
0: Enter function "testDoWhile" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Enter do-while loop -> 3 | <- 1
|
||||
3: Enter loop block -> 4 | <- 2, 12
|
||||
4: Enter block -> 5 | <- 3
|
||||
5: Access variable R|<local>/x| -> 6 | <- 4
|
||||
6: Type operator: "x is String" -> 7 | <- 5
|
||||
7: Variable declaration: lval y: R|kotlin/Boolean| -> 8 | <- 6
|
||||
8: Exit block -> 9 | <- 7
|
||||
9: Exit loop block -> 10 | <- 8
|
||||
10: Enter loop condition -> 11 | <- 9
|
||||
11: Access variable R|<local>/b| -> 12 | <- 10
|
||||
12: Exit loop condition -> 3, 13 | <- 11
|
||||
13: Exit do-whileloop -> 14 | <- 12
|
||||
14: Access variable R|<local>/x| -> 15 | <- 13
|
||||
15: Type operator: "x is String" -> 16 | <- 14
|
||||
16: Exit block -> 17 | <- 15
|
||||
17: Exit function "testDoWhile" -> | <- 16
|
||||
|
||||
0: Enter function "testFor" -> 1
|
||||
1: Enter block -> 2 | <- 0
|
||||
2: Const: Int(0) -> 3 | <- 1
|
||||
3: Const: Int(5) -> 4 | <- 2
|
||||
4: Function call: Int(0).R|kotlin/Int.rangeTo|(Int(5)) -> 5 | <- 3
|
||||
5: Variable declaration: lval <range>: R|kotlin/ranges/IntRange| -> 6 | <- 4
|
||||
6: Access variable R|<local>/<range>| -> 7 | <- 5
|
||||
7: Function call: R|<local>/<range>|.R|kotlin/ranges/IntProgression.iterator|() -> 8 | <- 6
|
||||
8: Variable declaration: lval <iterator>: R|kotlin/collections/IntIterator| -> 9 | <- 7
|
||||
9: Enter while loop -> 10 | <- 8
|
||||
10: Enter loop condition -> 11 | <- 9, 23
|
||||
11: Access variable R|<local>/<iterator>| -> 12 | <- 10
|
||||
12: Function call: R|<local>/<iterator>|.R|FakeOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|() -> 13 | <- 11
|
||||
13: Exit loop condition -> 14, 24 | <- 12
|
||||
14: Enter loop block -> 15 | <- 13
|
||||
15: Enter block -> 16 | <- 14
|
||||
16: Access variable R|<local>/<iterator>| -> 17 | <- 15
|
||||
17: Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|() -> 18 | <- 16
|
||||
18: Variable declaration: lval i: R|kotlin/Int| -> 19 | <- 17
|
||||
19: Access variable R|<local>/x| -> 20 | <- 18
|
||||
20: Type operator: "x is String" -> 21 | <- 19
|
||||
21: Variable declaration: lval y: R|kotlin/Boolean| -> 22 | <- 20
|
||||
22: Exit block -> 23 | <- 21
|
||||
23: Exit loop block -> 10 | <- 22
|
||||
24: Exit whileloop -> 25 | <- 13
|
||||
25: Access variable R|<local>/x| -> 26 | <- 24
|
||||
26: Type operator: "x is String" -> 27 | <- 25
|
||||
27: Exit block -> 28 | <- 26
|
||||
28: Exit function "testFor" -> | <- 27
|
||||
|
||||
@@ -25,7 +25,7 @@ digraph postponedLambdas_kt {
|
||||
8 [label="Postponed exit from lambda"];
|
||||
9 [label="Access variable R|<local>/b|"];
|
||||
10 [label="Function call: R|/foo|(vararg(R|<local>/a|, foo@fun <anonymous>(): R|kotlin/String| <kind=UNKNOWN> {
|
||||
String()
|
||||
^ String()
|
||||
}
|
||||
, R|<local>/b|))"];
|
||||
11 [label="Exit function test" style="filled" fillcolor=red];
|
||||
|
||||
@@ -3,7 +3,7 @@ FILE: postponedLambdas.kt
|
||||
}
|
||||
public final fun test(a: R|kotlin/Any|, b: R|kotlin/Any|, c: R|kotlin/Any|): R|kotlin/Unit| {
|
||||
R|/foo|(vararg(R|<local>/a|, foo@fun <anonymous>(): R|kotlin/String| <kind=UNKNOWN> {
|
||||
String()
|
||||
^ String()
|
||||
}
|
||||
, R|<local>/b|))
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ digraph returnValuesFromLambda_kt {
|
||||
}
|
||||
}
|
||||
|
||||
R|/C.C|()
|
||||
^ R|/C.C|()
|
||||
}
|
||||
)"];
|
||||
24 [label="Variable declaration: lval x: R|A|"];
|
||||
|
||||
@@ -21,7 +21,7 @@ FILE: returnValuesFromLambda.kt
|
||||
}
|
||||
}
|
||||
|
||||
R|/C.C|()
|
||||
^ R|/C.C|()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ FILE: CallBasedInExpressionGenerator.kt
|
||||
|
||||
public final override fun generate(argument: R|ERROR CLASS: Symbol not found, for `StackValue`|): R|ERROR CLASS: Symbol not found, for `BranchedValue`| {
|
||||
^generate R?C|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).<Inapplicable(WRONG_RECEIVER): [kotlin/let]>#(<L> = let@fun <anonymous>(): R|ERROR CLASS: Can't resolve when expression| {
|
||||
when () {
|
||||
^ when () {
|
||||
this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.isInverted| -> {
|
||||
<Unresolved name: Invert>#(<Unresolved name: it>#)
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ FILE: extensionPropertyInLambda.kt
|
||||
}
|
||||
public final fun test1(): R|kotlin/Unit| {
|
||||
R|/use|(<L> = use@fun <anonymous>(): R|kotlin/String| {
|
||||
R|/C.C|<R|kotlin/String|>(String(abc)).R|/y|
|
||||
^ R|/C.C|<R|kotlin/String|>(String(abc)).R|/y|
|
||||
}
|
||||
)
|
||||
R|/use|(R|/C.C|<R|kotlin/String|>(String(abc))::R|/y<kotlin/String>|)
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
FILE: doubleBrackets.kt
|
||||
public final fun R|kotlin/String|.k(): R|() -> kotlin/String| {
|
||||
^k fun <anonymous>(): R|kotlin/String| {
|
||||
this@R|/k|
|
||||
^ this@R|/k|
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,27 +9,27 @@ FILE: lambda.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/foo|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| {
|
||||
String(This is test)
|
||||
^ String(This is test)
|
||||
}
|
||||
)
|
||||
R|/bar|(<L> = bar@fun <anonymous>(): R|kotlin/String| {
|
||||
String(This is also test)
|
||||
^ String(This is also test)
|
||||
}
|
||||
)
|
||||
R|/itIs|(<L> = itIs@fun <anonymous>(it: R|kotlin/String|): R|kotlin/String| {
|
||||
<strcat>(String(this is ), R|<local>/it|.R|kotlin/Any.toString|(), String( test))
|
||||
^ <strcat>(String(this is ), R|<local>/it|.R|kotlin/Any.toString|(), String( test))
|
||||
}
|
||||
)
|
||||
R|/multipleArgs|(<L> = multipleArgs@fun <anonymous>(a: R|kotlin/String|, b: R|kotlin/String|): R|kotlin/String| {
|
||||
<strcat>(String(This is test of ), R|<local>/a|.R|kotlin/Any.toString|(), String(, ), R|<local>/b|.R|kotlin/Any.toString|())
|
||||
^ <strcat>(String(This is test of ), R|<local>/a|.R|kotlin/Any.toString|(), String(, ), R|<local>/b|.R|kotlin/Any.toString|())
|
||||
}
|
||||
)
|
||||
lval s: R|kotlin/String| = fun <anonymous>(): R|kotlin/String| {
|
||||
String(OK)
|
||||
^ String(OK)
|
||||
}
|
||||
.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
lval f: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| {
|
||||
String(OK)
|
||||
^ String(OK)
|
||||
}
|
||||
|
||||
lval ss: R|kotlin/String| = R|<local>/f|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
|
||||
@@ -35,7 +35,7 @@ FILE: lambdaWithReceiver.kt
|
||||
R|/complexLambda|(<L> = complexLambda@fun R|kotlin/Int|.<anonymous>(it: R|kotlin/String|): R|kotlin/Unit| {
|
||||
this@R|special/anonymous|.R|kotlin/Int.inc|()
|
||||
this@R|special/anonymous|.R|kotlin/Int.inc|()
|
||||
R|<local>/it|.R|kotlin/String.length|
|
||||
^ R|<local>/it|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,8 +18,8 @@ FILE: nestedLambdas.kt
|
||||
^associateBy1 R|kotlin/TODO|()
|
||||
}
|
||||
public final val x: R|MyMap<kotlin/Int, kotlin/String>| = R|/myRun|<R|MyMap<kotlin/Int, kotlin/String>|>(<L> = myRun@fun <anonymous>(): R|MyMap<kotlin/Int, kotlin/String>| {
|
||||
R|/w|.R|/associateBy1|<R|kotlin/String|, R|kotlin/Int|>(<L> = associateBy1@fun <anonymous>(f: R|kotlin/String|): R|kotlin/Int| {
|
||||
R|<local>/f|.R|kotlin/String.length|
|
||||
^ R|/w|.R|/associateBy1|<R|kotlin/String|, R|kotlin/Int|>(<L> = associateBy1@fun <anonymous>(f: R|kotlin/String|): R|kotlin/Int| {
|
||||
^ R|<local>/f|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ FILE: localObject.kt
|
||||
|
||||
}
|
||||
|
||||
Int(2)
|
||||
^ Int(2)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -76,7 +76,7 @@ FILE: localObject.kt
|
||||
|
||||
}
|
||||
|
||||
Int(2)
|
||||
^ Int(2)
|
||||
}
|
||||
)
|
||||
public get(): R|kotlin/Int|
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ FILE: covariantArrayAsReceiver.kt
|
||||
lval adjusted: R|kotlin/collections/List<UsageInfo>?| = when () {
|
||||
(R|<local>/element| is R|KtParameter|) -> {
|
||||
R|<local>/usages|.R|/filterNot|<R|UsageInfo|>(<L> = filterNot@fun <anonymous>(it: R|UsageInfo|): R|kotlin/Boolean| {
|
||||
(R|<local>/it|.R|/UsageInfo.usage| is R|KtLightMethod|)
|
||||
^ (R|<local>/it|.R|/UsageInfo.usage| is R|KtLightMethod|)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
FILE: main.kt
|
||||
public final fun test(): R|kotlin/Unit| {
|
||||
<Inapplicable(INAPPLICABLE): [/Foo.Foo]>#(<L> = Foo@fun <anonymous>(): R|ERROR CLASS: Unresolved name: it| {
|
||||
<Unresolved name: it>#
|
||||
^ <Unresolved name: it>#
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
FILE: main.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/MyFunction|<R|kotlin/Int|, R|kotlin/String|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
R|/MyFunction|<R|ft<kotlin/Int, kotlin/Int?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
R|/MyFunction|<R|kotlin/Any?|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Any?|): R|kotlin/String| {
|
||||
String()
|
||||
^ String()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Vendored
+5
-5
@@ -7,23 +7,23 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/foo1|(R|/MyFunction|<R|kotlin/Int|, R|kotlin/String|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
))
|
||||
R|/foo2|(R|/MyFunction|<R|kotlin/Number|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
))
|
||||
<Inapplicable(INAPPLICABLE): [/foo2]>#(R|/MyFunction|<R|ft<kotlin/Int, kotlin/Int?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Any.toString|()
|
||||
}
|
||||
))
|
||||
R|/foo3|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(R|/MyFunction|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Any.toString|()
|
||||
}
|
||||
), Int(1))
|
||||
R|/foo3|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(R|/MyFunction|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = MyFunction@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
), Int(2))
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ FILE: kotlinSam.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/foo|(R|/MyRunnable|(<L> = MyRunnable@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
))
|
||||
R|/foo|(R|/MyRunnable|(MyRunnable@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
))
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
R|/foo|(R|/MyRunnable|(R|<local>/x|))
|
||||
|
||||
+3
-3
@@ -6,15 +6,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(<L> = MyRunnable@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
))
|
||||
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(MyRunnable@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
))
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
<Inapplicable(INAPPLICABLE): [/foo]>#(R|/MyRunnable|(R|<local>/x|))
|
||||
|
||||
@@ -3,15 +3,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/foo|(R|/MyRunnable|(<L> = MyRunnable@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
))
|
||||
R|/foo|(R|/MyRunnable|(MyRunnable@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
))
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
R|/foo|(R|/MyRunnable|(R|<local>/x|))
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
FILE: main.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaUsage|.R|/JavaUsage.foo1|(<L> = foo1@fun <anonymous>(x: R|ft<kotlin/Int, kotlin/Int?>!|): R|ft<kotlin/String, kotlin/String?>!| {
|
||||
R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.R|/JavaUsage.foo2|(<L> = foo2@fun <anonymous>(x: R|ft<kotlin/Number, kotlin/Number?>!|): R|ft<kotlin/CharSequence, kotlin/CharSequence?>!| {
|
||||
R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo2]>#(<L> = foo2@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.R|/JavaUsage.foo3|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(foo3@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Any.toString|()
|
||||
}
|
||||
, Int(1))
|
||||
Q|JavaUsage|.R|/JavaUsage.foo3|<R|kotlin/Int|, R|ft<kotlin/String, kotlin/String?>!|>(foo3@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Any.toString|()
|
||||
}
|
||||
, Int(2))
|
||||
}
|
||||
|
||||
@@ -30,26 +30,26 @@ FILE: kotlinSam.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
lval f: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(t: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/t|, Int(1))
|
||||
^ >(R|<local>/t|, Int(1))
|
||||
}
|
||||
|
||||
R|/foo1|(<L> = foo1@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
R|/foo1|(R|<local>/f|)
|
||||
<Inapplicable(INAPPLICABLE): [/foo2]>#(<L> = foo2@fun <anonymous>(x: R|ERROR CLASS: No type for parameter|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
<Inapplicable(INAPPLICABLE): [/foo2]>#(R|<local>/f|)
|
||||
<Inapplicable(INAPPLICABLE): [/foo3]>#(<L> = foo3@fun <anonymous>(x: R|ERROR CLASS: No type for parameter|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
<Inapplicable(INAPPLICABLE): [/foo3]>#(R|<local>/f|)
|
||||
R|/foo4|(<L> = foo4@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
R|/foo4|(R|<local>/f|)
|
||||
|
||||
+3
-3
@@ -3,15 +3,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(<L> = foo@fun <anonymous>(x: R|ERROR CLASS: No type for parameter|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(foo@fun <anonymous>(): R|kotlin/Boolean| {
|
||||
>(<Unresolved name: it>#, Int(1))
|
||||
^ >(<Unresolved name: it>#, Int(1))
|
||||
}
|
||||
)
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
Q|JavaUsage|.<Inapplicable(INAPPLICABLE): [/JavaUsage.foo]>#(R|<local>/x|)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
FILE: main.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaClass|.R|/JavaClass.foo|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| {
|
||||
String()
|
||||
^ String()
|
||||
}
|
||||
)
|
||||
R|/JavaClass.JavaClass|().R|/JavaClass.bar|(<L> = bar@fun <anonymous>(): R|kotlin/Unit| {
|
||||
String()
|
||||
^ String()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,15 +3,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
)
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|)
|
||||
|
||||
+3
-3
@@ -3,15 +3,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|ft<kotlin/Boolean, kotlin/Boolean?>!| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|ft<kotlin/Boolean, kotlin/Boolean?>!| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
)
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|)
|
||||
|
||||
@@ -12,7 +12,7 @@ FILE: main.kt
|
||||
}
|
||||
}
|
||||
|
||||
Boolean(false)
|
||||
^ Boolean(false)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,15 +3,15 @@ FILE: main.kt
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
)
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/it|, Int(1))
|
||||
^ >(R|<local>/it|, Int(1))
|
||||
}
|
||||
)
|
||||
lval x: R|(kotlin/Int) -> kotlin/Boolean| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| {
|
||||
>(R|<local>/x|, Int(1))
|
||||
^ >(R|<local>/x|, Int(1))
|
||||
}
|
||||
|
||||
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|)
|
||||
|
||||
@@ -103,7 +103,7 @@ digraph inPlaceLambdas_kt {
|
||||
}
|
||||
33 [label="Postponed exit from lambda"];
|
||||
34 [label="Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
(R|<local>/x| as R|B|)
|
||||
^ (R|<local>/x| as R|B|)
|
||||
}
|
||||
)"];
|
||||
35 [label="Access variable R|<local>/x|"];
|
||||
@@ -155,7 +155,7 @@ digraph inPlaceLambdas_kt {
|
||||
54 [label="Postponed exit from lambda"];
|
||||
55 [label="Function call: R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
R|<local>/x|.R|/A.foo|()
|
||||
(R|<local>/x| as R|B|)
|
||||
^ (R|<local>/x| as R|B|)
|
||||
}
|
||||
)"];
|
||||
56 [label="Access variable R|<local>/x|"];
|
||||
|
||||
@@ -23,7 +23,7 @@ FILE: inPlaceLambdas.kt
|
||||
}
|
||||
public final fun test_2(x: R|kotlin/Any?|): R|kotlin/Unit| {
|
||||
R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
(R|<local>/x| as R|B|)
|
||||
^ (R|<local>/x| as R|B|)
|
||||
}
|
||||
)
|
||||
R|<local>/x|.R|/B.bar|()
|
||||
@@ -33,7 +33,7 @@ FILE: inPlaceLambdas.kt
|
||||
(R|<local>/x| is R|A|) -> {
|
||||
R|/run|(<L> = run@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
R|<local>/x|.R|/A.foo|()
|
||||
(R|<local>/x| as R|B|)
|
||||
^ (R|<local>/x| as R|B|)
|
||||
}
|
||||
)
|
||||
R|<local>/x|.R|/B.bar|()
|
||||
|
||||
@@ -116,7 +116,7 @@ digraph safeCalls_kt {
|
||||
46 [label="Postponed enter to lambda"];
|
||||
47 [label="Postponed exit from lambda"];
|
||||
48 [label="Function call: (R|<local>/x| as? R|A|)?.R|/A.bar|(R|<local>/x|)?.R|/foo|(R|<local>/x|.R|/A.bool|())?.R|/let|(<L> = let@fun <anonymous>(): R|kotlin/Unit| {
|
||||
R|<local>/x|.R|/A.bool|()
|
||||
^ R|<local>/x|.R|/A.bool|()
|
||||
}
|
||||
)"];
|
||||
49 [label="Exit safe call"];
|
||||
|
||||
@@ -21,7 +21,7 @@ FILE: safeCalls.kt
|
||||
}
|
||||
public final fun test_3(x: R|kotlin/Any|): R|kotlin/Unit| {
|
||||
(R|<local>/x| as? R|A|)?.R|/A.bar|(R|<local>/x|)?.R|/foo|(R|<local>/x|.R|/A.bool|())?.R|/let|(<L> = let@fun <anonymous>(): R|kotlin/Unit| {
|
||||
R|<local>/x|.R|/A.bool|()
|
||||
^ R|<local>/x|.R|/A.bool|()
|
||||
}
|
||||
)
|
||||
R|<local>/x|.<Unresolved name: bool>#()
|
||||
|
||||
@@ -2,7 +2,7 @@ FILE: addAllOnJavaCollection.kt
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
lval y: R|kotlin/collections/List<kotlin/String>| = R|kotlin/collections/listOf|<R|kotlin/String|>(vararg(String(Alpha), String(Beta)))
|
||||
lval x: R|java/util/LinkedHashSet<kotlin/String>| = R|java/util/LinkedHashSet.LinkedHashSet|<R|kotlin/String|>().R|kotlin/apply|<R|java/util/LinkedHashSet<kotlin/String>|>(<L> = apply@fun R|java/util/LinkedHashSet<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|FakeOverride<java/util/AbstractCollection.addAll: R|kotlin/Boolean|>|(R|<local>/y|)
|
||||
^ this@R|special/anonymous|.R|FakeOverride<java/util/AbstractCollection.addAll: R|kotlin/Boolean|>|(R|<local>/y|)
|
||||
}
|
||||
)
|
||||
lval z: R|java/util/ArrayList<kotlin/String>| = R|java/util/ArrayList.ArrayList|<R|kotlin/String|>()
|
||||
|
||||
@@ -15,7 +15,7 @@ FILE: anonymousInDelegate.kt
|
||||
|
||||
}
|
||||
|
||||
R|<local>/foo|.R|/anonymous.bar|()
|
||||
^ R|<local>/foo|.R|/anonymous.bar|()
|
||||
}
|
||||
)
|
||||
public get(): R|kotlin/Int| {
|
||||
|
||||
@@ -51,7 +51,7 @@ digraph callsInPlace_kt {
|
||||
}
|
||||
18 [label="Postponed exit from lambda"];
|
||||
19 [label="Function call: R|kotlin/repeat|(Int(10), <L> = repeat@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_2)
|
||||
^ String(test_2)
|
||||
}
|
||||
)"];
|
||||
20 [label="Exit function test_2" style="filled" fillcolor=red];
|
||||
@@ -81,7 +81,7 @@ digraph callsInPlace_kt {
|
||||
26 [label="Postponed exit from lambda"];
|
||||
27 [label="Const: Int(10)"];
|
||||
28 [label="Function call: R|kotlin/repeat|(action = repeat@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_3)
|
||||
^ String(test_3)
|
||||
}
|
||||
, times = Int(10))"];
|
||||
29 [label="Exit function test_3" style="filled" fillcolor=red];
|
||||
@@ -115,7 +115,7 @@ digraph callsInPlace_kt {
|
||||
39 [label="Postponed exit from lambda"];
|
||||
40 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(<L> = takeUnless@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <kind=EXACTLY_ONCE> {
|
||||
String(test_4)
|
||||
>(R|<local>/it|, Int(0))
|
||||
^ >(R|<local>/it|, Int(0))
|
||||
}
|
||||
)"];
|
||||
41 [label="Exit function test_4" style="filled" fillcolor=red];
|
||||
@@ -151,7 +151,7 @@ digraph callsInPlace_kt {
|
||||
51 [label="Postponed exit from lambda"];
|
||||
52 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(predicate = takeUnless@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <kind=EXACTLY_ONCE> {
|
||||
String(test_5)
|
||||
>(R|<local>/it|, Int(0))
|
||||
^ >(R|<local>/it|, Int(0))
|
||||
}
|
||||
)"];
|
||||
53 [label="Exit function test_5" style="filled" fillcolor=red];
|
||||
@@ -202,10 +202,10 @@ digraph callsInPlace_kt {
|
||||
}
|
||||
68 [label="Postponed exit from lambda"];
|
||||
69 [label="Function call: R|/myRun|(myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_6_1)
|
||||
^ String(test_6_1)
|
||||
}
|
||||
, <L> = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_6_2)
|
||||
^ String(test_6_2)
|
||||
}
|
||||
)"];
|
||||
70 [label="Exit function test_6" style="filled" fillcolor=red];
|
||||
@@ -248,10 +248,10 @@ digraph callsInPlace_kt {
|
||||
}
|
||||
81 [label="Postponed exit from lambda"];
|
||||
82 [label="Function call: R|/myRun|(block2 = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_7_2)
|
||||
^ String(test_7_2)
|
||||
}
|
||||
, block1 = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_7_1)
|
||||
^ String(test_7_1)
|
||||
}
|
||||
)"];
|
||||
83 [label="Exit function test_7" style="filled" fillcolor=red];
|
||||
@@ -290,7 +290,7 @@ digraph callsInPlace_kt {
|
||||
88 [label="Postponed enter to lambda"];
|
||||
89 [label="Postponed exit from lambda"];
|
||||
90 [label="Function call: R|/myDummyRun|(<L> = myDummyRun@fun <anonymous>(): R|kotlin/Unit| {
|
||||
String(test_8)
|
||||
^ String(test_8)
|
||||
}
|
||||
)"];
|
||||
91 [label="Exit function test_8" style="filled" fillcolor=red];
|
||||
|
||||
@@ -9,27 +9,27 @@ FILE: callsInPlace.kt
|
||||
}
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
R|kotlin/repeat|(Int(10), <L> = repeat@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_2)
|
||||
^ String(test_2)
|
||||
}
|
||||
)
|
||||
}
|
||||
public final fun test_3(): R|kotlin/Unit| {
|
||||
R|kotlin/repeat|(action = repeat@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_3)
|
||||
^ String(test_3)
|
||||
}
|
||||
, times = Int(10))
|
||||
}
|
||||
public final fun test_4(): R|kotlin/Unit| {
|
||||
Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(<L> = takeUnless@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <kind=EXACTLY_ONCE> {
|
||||
String(test_4)
|
||||
>(R|<local>/it|, Int(0))
|
||||
^ >(R|<local>/it|, Int(0))
|
||||
}
|
||||
)
|
||||
}
|
||||
public final fun test_5(): R|kotlin/Unit| {
|
||||
Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(predicate = takeUnless@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <kind=EXACTLY_ONCE> {
|
||||
String(test_5)
|
||||
>(R|<local>/it|, Int(0))
|
||||
^ >(R|<local>/it|, Int(0))
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -39,19 +39,19 @@ FILE: callsInPlace.kt
|
||||
}
|
||||
public final fun test_6(): R|kotlin/Unit| {
|
||||
R|/myRun|(myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_6_1)
|
||||
^ String(test_6_1)
|
||||
}
|
||||
, <L> = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_6_2)
|
||||
^ String(test_6_2)
|
||||
}
|
||||
)
|
||||
}
|
||||
public final fun test_7(): R|kotlin/Unit| {
|
||||
R|/myRun|(block2 = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_7_2)
|
||||
^ String(test_7_2)
|
||||
}
|
||||
, block1 = myRun@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
String(test_7_1)
|
||||
^ String(test_7_1)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -60,7 +60,7 @@ FILE: callsInPlace.kt
|
||||
}
|
||||
public final fun test_8(): R|kotlin/Unit| {
|
||||
R|/myDummyRun|(<L> = myDummyRun@fun <anonymous>(): R|kotlin/Unit| {
|
||||
String(test_8)
|
||||
^ String(test_8)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
FILE: functionX.kt
|
||||
public final val x: R|kotlin/jvm/functions/Function0<kotlin/Int>| = fun <anonymous>(): R|kotlin/Int| {
|
||||
Int(42)
|
||||
^ Int(42)
|
||||
}
|
||||
|
||||
public get(): R|kotlin/jvm/functions/Function0<kotlin/Int>|
|
||||
public final val y: R|(kotlin/String) -> kotlin/String| = fun <anonymous>(it: R|kotlin/String|): R|kotlin/String| {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
|
||||
public get(): R|(kotlin/String) -> kotlin/String|
|
||||
|
||||
@@ -15,7 +15,7 @@ FILE: hashTableWithForEach.kt
|
||||
R|/DEBUG| -> {
|
||||
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
|
||||
this@R|/SomeHashTable|.R|FakeOverride</SomeHashTable.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|K|, value: R|V|): R|kotlin/Unit| {
|
||||
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
|
||||
^ this@R|special/anonymous|.R|FakeOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -29,17 +29,17 @@ FILE: implicitReceiverOrder.kt
|
||||
}
|
||||
public final fun test(a: R|A|, b: R|B|): R|kotlin/Unit| {
|
||||
R|kotlin/with|<R|B|, R|kotlin/Int|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
R|kotlin/with|<R|A|, R|kotlin/Int|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
^ R|kotlin/with|<R|A|, R|kotlin/Int|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|/A.foo|()
|
||||
(this@R|special/anonymous|, this@R|special/anonymous|).R|/B.bar|()
|
||||
^ (this@R|special/anonymous|, this@R|special/anonymous|).R|/B.bar|()
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
R|kotlin/with|<R|A|, R|kotlin/Int|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
R|kotlin/with|<R|B|, R|kotlin/Int|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
^ R|kotlin/with|<R|B|, R|kotlin/Int|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|/B.foo|()
|
||||
(this@R|special/anonymous|, this@R|special/anonymous|).R|/A.bar|()
|
||||
^ (this@R|special/anonymous|, this@R|special/anonymous|).R|/A.bar|()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ FILE: complexConstraintSystem.kt
|
||||
}
|
||||
public final fun test_0(list: R|kotlin/collections/List<kotlin/Int>|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
||||
lval x: R|kotlin/Int| = R|<local>/list|.R|kotlin/collections/mapNotNull|<R|kotlin/Int|, R|Inv<kotlin/Int>|>(<L> = mapNotNull@fun <anonymous>(it: R|kotlin/Int|): R|Inv<kotlin/Int>?| <kind=UNKNOWN> {
|
||||
when () {
|
||||
^ when () {
|
||||
R|<local>/b| -> {
|
||||
R|/Inv.Inv|<R|kotlin/Int|>(R|<local>/it|)
|
||||
}
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
FILE: main.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
Q|JavaClass|.R|/JavaClass.foo1|(<L> = foo1@fun <anonymous>(): R|ft<kotlin/Int, kotlin/Int?>!| {
|
||||
Int(123)
|
||||
^ Int(123)
|
||||
}
|
||||
)
|
||||
Q|JavaClass|.R|/JavaClass.foo2|(<L> = foo2@fun <anonymous>(it: R|ft<kotlin/Int, kotlin/Int?>!|): R|ft<kotlin/String, kotlin/String?>!| {
|
||||
R|<local>/it|.R|kotlin/Int.plus|(Int(2)).R|kotlin/Any.toString|()
|
||||
^ R|<local>/it|.R|kotlin/Int.plus|(Int(2)).R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
Q|JavaClass|.R|/JavaClass.foo2|(foo2@fun <anonymous>(it: R|ft<kotlin/Int, kotlin/Int?>!|): R|ft<kotlin/String, kotlin/String?>!| {
|
||||
R|<local>/it|.R|kotlin/Int.plus|(Int(3)).R|kotlin/Any.toString|()
|
||||
^ R|<local>/it|.R|kotlin/Int.plus|(Int(3)).R|kotlin/Any.toString|()
|
||||
}
|
||||
)
|
||||
lval y: R|(kotlin/Int) -> kotlin/String| = fun <anonymous>(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
R|<local>/x|.R|kotlin/Any.toString|()
|
||||
^ R|<local>/x|.R|kotlin/Any.toString|()
|
||||
}
|
||||
|
||||
Q|JavaClass|.R|/JavaClass.foo2|(R|<local>/y|)
|
||||
Q|JavaClass|.R|/JavaClass.foo3|<R|kotlin/Int|>(foo3@fun <anonymous>(it: R|kotlin/Int|): R|ft<kotlin/String, kotlin/String?>!| {
|
||||
R|<local>/it|.R|kotlin/Int.plus|(Int(4)).R|kotlin/Any.toString|()
|
||||
^ R|<local>/it|.R|kotlin/Int.plus|(Int(4)).R|kotlin/Any.toString|()
|
||||
}
|
||||
, Int(5))
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FILE: test.kt
|
||||
public final fun test(map: R|MyMap|): R|kotlin/Unit| {
|
||||
lval result: R|ft<kotlin/String, kotlin/String?>!| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>(String(key), <L> = getOrPut@fun <anonymous>(): R|kotlin/String| <kind=UNKNOWN> {
|
||||
String(value)
|
||||
^ String(value)
|
||||
}
|
||||
)
|
||||
lval otherResult: R|ft<kotlin/String, kotlin/String?>!| = R|<local>/map|.R|FakeOverride<kotlin/collections/Map.getOrDefault: R|ft<kotlin/String, kotlin/String?>!|>|(String(key), String(value))
|
||||
@@ -9,7 +9,7 @@ FILE: test.kt
|
||||
R|<local>/map|.R|FakeOverride<java/util/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>!|, value: R|ft<kotlin/String, kotlin/String?>!|): R|kotlin/Unit| {
|
||||
R|kotlin/io/println|(<strcat>(R|<local>/key|.R|kotlin/Any.toString|(), String(: ), R|<local>/value|.R|kotlin/Any.toString|()))
|
||||
R|<local>/key|.R|kotlin/String.length|
|
||||
R|<local>/value|.R|kotlin/String.length|
|
||||
^ R|<local>/value|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
R|<local>/map|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>!, ft<kotlin/String, kotlin/String?>!>|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
@@ -17,13 +17,13 @@ FILE: test.kt
|
||||
lval value: R|ft<kotlin/String, kotlin/String?>!| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>()
|
||||
R|kotlin/io/println|(<strcat>(R|<local>/key|.R|kotlin/Any.toString|(), String(: ), R|<local>/value|.R|kotlin/Any.toString|()))
|
||||
R|<local>/key|.R|kotlin/String.length|
|
||||
R|<local>/value|.R|kotlin/String.length|
|
||||
^ R|<local>/value|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
}
|
||||
public final fun test(map: R|kotlin/collections/MutableMap<kotlin/String, kotlin/String>|): R|kotlin/Unit| {
|
||||
lval result: R|kotlin/String| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|kotlin/String|, R|kotlin/String|>(String(key), <L> = getOrPut@fun <anonymous>(): R|kotlin/String| <kind=UNKNOWN> {
|
||||
String(value)
|
||||
^ String(value)
|
||||
}
|
||||
)
|
||||
lval otherResult: R|kotlin/String| = R|<local>/map|.R|FakeOverride<kotlin/collections/Map.getOrDefault: R|kotlin/String|>|(String(key), String(value))
|
||||
@@ -31,7 +31,7 @@ FILE: test.kt
|
||||
R|<local>/map|.R|FakeOverride<java/util/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|kotlin/String|, value: R|kotlin/String|): R|kotlin/Unit| {
|
||||
R|kotlin/io/println|(<strcat>(R|<local>/key|.R|kotlin/Any.toString|(), String(: ), R|<local>/value|.R|kotlin/Any.toString|()))
|
||||
R|<local>/key|.R|kotlin/String.length|
|
||||
R|<local>/value|.R|kotlin/String.length|
|
||||
^ R|<local>/value|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
R|<local>/map|.R|kotlin/collections/forEach|<R|kotlin/String|, R|kotlin/String|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<kotlin/String, kotlin/String>|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
@@ -39,7 +39,7 @@ FILE: test.kt
|
||||
lval value: R|kotlin/String| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|kotlin/String|, R|kotlin/String|>()
|
||||
R|kotlin/io/println|(<strcat>(R|<local>/key|.R|kotlin/Any.toString|(), String(: ), R|<local>/value|.R|kotlin/Any.toString|()))
|
||||
R|<local>/key|.R|kotlin/String.length|
|
||||
R|<local>/value|.R|kotlin/String.length|
|
||||
^ R|<local>/value|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
FILE: test.kt
|
||||
public final fun foo(tag: R|XmlTag|, name: R|kotlin/String|): R|kotlin/collections/List<XmlTag>| {
|
||||
lval result: R|kotlin/collections/List<XmlTag>| = R|<local>/tag|.R|/PsiElement.children|.R|kotlin/collections/filterIsInstance|<R|XmlTag|>().R|kotlin/collections/filter|<R|XmlTag|>(<L> = filter@fun <anonymous>(it: R|XmlTag|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
==(R|<local>/it|.R|/XmlTag.localName|, R|<local>/name|)
|
||||
^ ==(R|<local>/it|.R|/XmlTag.localName|, R|<local>/name|)
|
||||
}
|
||||
)
|
||||
^foo R|<local>/result|
|
||||
|
||||
@@ -2,12 +2,12 @@ FILE: test.kt
|
||||
public final fun <D : R|kotlin/Any|> R|Call<D>|.testForEach(): R|kotlin/Unit| {
|
||||
this@R|/testForEach|.R|/Call.arguments|.R|FakeOverride<java/util/Map.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<kotlin/String, kotlin/String?>!|, value: R|ft<kotlin/String, kotlin/String?>!|): R|kotlin/Unit| {
|
||||
R|<local>/key|.R|kotlin/String.length|
|
||||
R|<local>/value|.R|kotlin/String.length|
|
||||
^ R|<local>/value|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
this@R|/testForEach|.R|/Call.arguments|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/String, kotlin/String?>!|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>!, ft<kotlin/String, kotlin/String?>!>|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.key: R|ft<kotlin/String, kotlin/String?>!|>|.R|kotlin/String.length|
|
||||
R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.value: R|ft<kotlin/String, kotlin/String?>!|>|.R|kotlin/String.length|
|
||||
^ R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.value: R|ft<kotlin/String, kotlin/String?>!|>|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FILE: javaLangComparator.kt
|
||||
public final fun test_2(list: R|kotlin/collections/List<kotlin/Int>|): R|kotlin/Unit| {
|
||||
lval comp: R|java/util/Comparator<kotlin/Int>| = Q|java/util|.R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|kotlin/Int|, y: R|kotlin/Int|): R|kotlin/Int| {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
FILE: kotlinComparatorAlias.kt
|
||||
public final fun test_1(): R|kotlin/Unit| {
|
||||
lval comp: R|java/util/Comparator<kotlin/Int>| = R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|kotlin/Int|, y: R|kotlin/Int|): R|kotlin/Int| {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@ FILE: mapList.kt
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
lval x: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/collections/emptyList|<R|kotlin/Int|>()
|
||||
lval u: R|kotlin/collections/List<kotlin/Int>| = R|<local>/x|.R|kotlin/collections/map|<R|kotlin/Int|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|kotlin/Int.plus|(R|<local>/it|)
|
||||
^ R|<local>/it|.R|kotlin/Int.plus|(R|<local>/it|)
|
||||
}
|
||||
)
|
||||
R|<local>/u|.R|/applyX|<R|kotlin/collections/List<kotlin/Int>|>(<L> = applyX@fun R|kotlin/collections/List<kotlin/Int>|.<anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
|
||||
this@R|special/anonymous|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
|
||||
^ this@R|special/anonymous|.R|FakeOverride<kotlin/collections/List.contains: R|kotlin/Boolean|>|(Int(1))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -26,10 +26,10 @@ FILE: multipleImplicitReceivers.kt
|
||||
}
|
||||
public final fun test(fooImpl: R|IFoo|, invokeImpl: R|IInvoke|): R|kotlin/Unit| {
|
||||
R|kotlin/with|<R|A|, R|kotlin/Int|>(Q|A|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
R|kotlin/with|<R|IFoo|, R|kotlin/Int|>(R|<local>/fooImpl|, <L> = with@fun R|IFoo|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
^ R|kotlin/with|<R|IFoo|, R|kotlin/Int|>(R|<local>/fooImpl|, <L> = with@fun R|IFoo|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
(this@R|special/anonymous|, this@R|special/anonymous|).R|/IFoo.foo|
|
||||
R|kotlin/with|<R|IInvoke|, R|kotlin/Int|>(R|<local>/invokeImpl|, <L> = with@fun R|IInvoke|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
(this@R|special/anonymous|, (this@R|special/anonymous|, this@R|special/anonymous|).R|/IFoo.foo|).R|/IInvoke.invoke|()
|
||||
^ R|kotlin/with|<R|IInvoke|, R|kotlin/Int|>(R|<local>/invokeImpl|, <L> = with@fun R|IInvoke|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
^ (this@R|special/anonymous|, (this@R|special/anonymous|, this@R|special/anonymous|).R|/IFoo.foo|).R|/IInvoke.invoke|()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ FILE: noneWithForEach.kt
|
||||
public final fun foo(conflicting: R|kotlin/collections/List<Diagnostic>|): R|kotlin/Unit| {
|
||||
lval filtered: R|kotlin/collections/ArrayList<Diagnostic>| = R|kotlin/collections/arrayListOf|<R|Diagnostic|>()
|
||||
R|<local>/conflicting|.R|kotlin/collections/groupBy|<R|Diagnostic|, R|kotlin/String|>(<L> = groupBy@fun <anonymous>(it: R|Diagnostic|): R|kotlin/String| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|/Diagnostic.name|
|
||||
^ R|<local>/it|.R|/Diagnostic.name|
|
||||
}
|
||||
).R|kotlin/collections/forEach|<R|kotlin/String|, R|kotlin/collections/List<Diagnostic>|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<kotlin/String, kotlin/collections/List<Diagnostic>>|): R|kotlin/Unit| <kind=UNKNOWN> {
|
||||
lval diagnostics: R|kotlin/collections/List<Diagnostic>| = R|<local>/it|.R|FakeOverride<kotlin/collections/Map.Entry.value: R|kotlin/collections/List<Diagnostic>|>|
|
||||
R|<local>/filtered|.R|FakeOverride<java/util/ArrayList.addAll: R|kotlin/Boolean|>|(R|<local>/diagnostics|.R|kotlin/collections/filter|<R|Diagnostic|>(<L> = filter@fun <anonymous>(me: R|Diagnostic|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
R|<local>/diagnostics|.R|kotlin/collections/none|<R|Diagnostic|>(<L> = none@fun <anonymous>(other: R|Diagnostic|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
!=(R|<local>/me|, R|<local>/other|)
|
||||
^ R|<local>/filtered|.R|FakeOverride<java/util/ArrayList.addAll: R|kotlin/Boolean|>|(R|<local>/diagnostics|.R|kotlin/collections/filter|<R|Diagnostic|>(<L> = filter@fun <anonymous>(me: R|Diagnostic|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
^ R|<local>/diagnostics|.R|kotlin/collections/none|<R|Diagnostic|>(<L> = none@fun <anonymous>(other: R|Diagnostic|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
^ !=(R|<local>/me|, R|<local>/other|)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ FILE: complexSmartCasts.kt
|
||||
}
|
||||
|
||||
R|/runHigherOrder|<R|kotlin/Boolean|>(<L> = runHigherOrder@fun <anonymous>(): R|kotlin/Boolean| {
|
||||
R|<local>/s|.R|kotlin/text/isNotEmpty|()
|
||||
^ R|<local>/s|.R|kotlin/text/isNotEmpty|()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ FILE: delegateTypeMismatch.kt
|
||||
|
||||
private final fun <T> property(initialValue: R|T|): R|kotlin/properties/ReadWriteProperty<A, T>| {
|
||||
^property Q|kotlin/properties/Delegates|.R|kotlin/properties/Delegates.vetoable|<R|T|>(R|<local>/initialValue|, <L> = vetoable@fun <anonymous>(_: R|kotlin/reflect/KProperty<*>|, _: R|T|, _: R|T|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
when () {
|
||||
^ when () {
|
||||
this@R|/A|.R|/A.isLocked| -> {
|
||||
throw R|java/lang/IllegalStateException.IllegalStateException|(String(Cannot modify readonly DescriptorRendererOptions))
|
||||
}
|
||||
@@ -42,7 +42,7 @@ FILE: delegateTypeMismatch.kt
|
||||
}
|
||||
|
||||
public final var typeNormalizer: <ERROR TYPE REF: Ambiguity: getValue, [kotlin/getValue, kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]>by <Inapplicable(INAPPLICABLE): [/A.property]>#<R|(KotlinType) -> KotlinType|>(property@fun <anonymous>(): R|ERROR CLASS: Unresolved name: it| {
|
||||
<Unresolved name: it>#
|
||||
^ <Unresolved name: it>#
|
||||
}
|
||||
)
|
||||
public get(): <ERROR TYPE REF: Ambiguity: getValue, [kotlin/getValue, kotlin/collections/getValue, kotlin/collections/getValue, kotlin/collections/getValue]> {
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
FILE: inapplicableRemoveAll.kt
|
||||
public final fun test(list: R|kotlin/collections/MutableList<kotlin/String>|): R|kotlin/Unit| {
|
||||
R|<local>/list|.R|kotlin/collections/removeAll|<R|kotlin/String|>(<L> = removeAll@fun <anonymous>(it: R|kotlin/String|): R|kotlin/Boolean| {
|
||||
R|<local>/it|.R|kotlin/text/isEmpty|()
|
||||
^ R|<local>/it|.R|kotlin/text/isEmpty|()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ FILE: recursiveBug.kt
|
||||
}
|
||||
|
||||
public final val result: R|kotlin/String| = this@R|/Foo|.R|kotlin/run|<R|Foo|, R|kotlin/String|>(<L> = run@fun R|Foo|.<anonymous>(): R|kotlin/String| <kind=EXACTLY_ONCE> {
|
||||
R|<local>/name|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
^ R|<local>/name|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
}
|
||||
)
|
||||
public get(): R|kotlin/String|
|
||||
@@ -16,7 +16,7 @@ FILE: recursiveBug.kt
|
||||
}
|
||||
public final fun bar(name: R|() -> kotlin/String|): R|kotlin/Unit| {
|
||||
lval result: R|kotlin/String| = R|kotlin/run|<R|kotlin/String|>(<L> = run@fun <anonymous>(): R|kotlin/String| <kind=EXACTLY_ONCE> {
|
||||
R|<local>/name|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
^ R|<local>/name|.R|FakeOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
|
||||
}
|
||||
)
|
||||
lval name: R|kotlin/Int| = R|<local>/result|.R|kotlin/String.length|
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FILE: simpleLazy.kt
|
||||
public final val x: R|kotlin/String|by R|kotlin/lazy|<R|kotlin/String|>(<L> = lazy@fun <anonymous>(): R|kotlin/String| {
|
||||
String(Hello)
|
||||
^ String(Hello)
|
||||
}
|
||||
)
|
||||
public get(): R|kotlin/String| {
|
||||
@@ -9,7 +9,7 @@ FILE: simpleLazy.kt
|
||||
public final fun foo(): R|kotlin/Unit| {
|
||||
R|/x|.R|kotlin/String.length|
|
||||
lval y: R|kotlin/String|by R|kotlin/lazy|<R|kotlin/String|>(<L> = lazy@fun <anonymous>(): R|kotlin/String| {
|
||||
String(Bye)
|
||||
^ String(Bye)
|
||||
}
|
||||
)
|
||||
R|<local>/y|.R|kotlin/String.length|
|
||||
@@ -20,7 +20,7 @@ FILE: simpleLazy.kt
|
||||
}
|
||||
|
||||
public final val z: R|kotlin/String|by R|kotlin/lazy|<R|kotlin/String|>(<L> = lazy@fun <anonymous>(): R|kotlin/String| {
|
||||
String(Some)
|
||||
^ String(Some)
|
||||
}
|
||||
)
|
||||
public get(): R|kotlin/String| {
|
||||
|
||||
+4
-4
@@ -48,7 +48,7 @@ digraph tryWithLambdaInside_kt {
|
||||
}
|
||||
16 [label="Postponed exit from lambda"];
|
||||
17 [label="Function call: R|<local>/list|.R|kotlin/collections/filter|(<L> = filter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)"];
|
||||
18 [label="Exit block"];
|
||||
@@ -69,7 +69,7 @@ digraph tryWithLambdaInside_kt {
|
||||
}
|
||||
25 [label="Jump: ^testInPlace try {
|
||||
R|<local>/list|.R|kotlin/collections/filter|<R|kotlin/Boolean|>(<L> = filter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -120,7 +120,7 @@ finally {
|
||||
33 [label="Postponed enter to lambda"];
|
||||
34 [label="Postponed exit from lambda"];
|
||||
35 [label="Function call: R|<local>/list|.R|/notInPlaceFilter|(<L> = notInPlaceFilter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)"];
|
||||
36 [label="Exit block"];
|
||||
@@ -141,7 +141,7 @@ finally {
|
||||
}
|
||||
43 [label="Jump: ^testNotInPlace try {
|
||||
R|<local>/list|.R|/notInPlaceFilter|<R|kotlin/Boolean|>(<L> = notInPlaceFilter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ FILE: tryWithLambdaInside.kt
|
||||
public final fun testInPlace(list: R|kotlin/collections/List<kotlin/Boolean>|): R|kotlin/collections/List<kotlin/Boolean>| {
|
||||
^testInPlace try {
|
||||
R|<local>/list|.R|kotlin/collections/filter|<R|kotlin/Boolean|>(<L> = filter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| <kind=UNKNOWN> {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -18,7 +18,7 @@ FILE: tryWithLambdaInside.kt
|
||||
public final fun testNotInPlace(list: R|kotlin/collections/List<kotlin/Boolean>|): R|kotlin/collections/List<kotlin/Boolean>| {
|
||||
^testNotInPlace try {
|
||||
R|<local>/list|.R|/notInPlaceFilter|<R|kotlin/Boolean|>(<L> = notInPlaceFilter@fun <anonymous>(it: R|kotlin/Boolean|): R|kotlin/Boolean| {
|
||||
R|<local>/it|
|
||||
^ R|<local>/it|
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -20,24 +20,24 @@ FILE: topLevelResolve.kt
|
||||
}
|
||||
public final fun testMap(): R|kotlin/Unit| {
|
||||
lval first: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/collections/listOf|<R|kotlin/Int|>(vararg(Int(1), Int(2), Int(3))).R|kotlin/collections/map|<R|kotlin/Int|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|kotlin/Int.times|(Int(2))
|
||||
^ R|<local>/it|.R|kotlin/Int.times|(Int(2))
|
||||
}
|
||||
)
|
||||
lval second: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/intArrayOf|(vararg(Int(4), Int(5), Int(6))).R|kotlin/collections/map|<R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|kotlin/Int.times|(Int(2))
|
||||
^ R|<local>/it|.R|kotlin/Int.times|(Int(2))
|
||||
}
|
||||
)
|
||||
lval withId: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/collections/listOf|<R|kotlin/Int|>(vararg(Int(1), Int(2), Int(3))).R|kotlin/collections/map|<R|kotlin/Int|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|/id|<R|kotlin/Int|>(R|<local>/it|)
|
||||
^ R|/id|<R|kotlin/Int|>(R|<local>/it|)
|
||||
}
|
||||
)
|
||||
lval stringToInt: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/collections/listOf|<R|kotlin/String|>(vararg(String(alpha), String(omega))).R|kotlin/collections/map|<R|kotlin/String|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/String|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|kotlin/String.length|
|
||||
^ R|<local>/it|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
lval viaWith: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/with|<R|kotlin/collections/List<kotlin/Int>|, R|kotlin/collections/List<kotlin/Int>|>(R|kotlin/collections/listOf|<R|kotlin/Int|>(Int(42)), <L> = with@fun R|kotlin/collections/List<kotlin/Int>|.<anonymous>(): R|kotlin/collections/List<kotlin/Int>| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|kotlin/collections/map|<R|kotlin/Int|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
R|<local>/it|.R|kotlin/Int.times|(R|<local>/it|)
|
||||
^ this@R|special/anonymous|.R|kotlin/collections/map|<R|kotlin/Int|, R|kotlin/Int|>(<L> = map@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Int| <kind=UNKNOWN> {
|
||||
^ R|<local>/it|.R|kotlin/Int.times|(R|<local>/it|)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -45,11 +45,11 @@ FILE: topLevelResolve.kt
|
||||
}
|
||||
public final fun testWith(): R|kotlin/Unit| {
|
||||
lval length: R|kotlin/Int| = R|kotlin/with|<R|kotlin/String|, R|kotlin/Int|>(String(), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|kotlin/String.length|
|
||||
^ this@R|special/anonymous|.R|kotlin/String.length|
|
||||
}
|
||||
)
|
||||
lval indices: R|kotlin/ranges/IntRange| = R|kotlin/with|<R|kotlin/String|, R|kotlin/ranges/IntRange|>(String(), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/ranges/IntRange| <kind=EXACTLY_ONCE> {
|
||||
this@R|special/anonymous|.R|kotlin/text/indices|
|
||||
^ this@R|special/anonymous|.R|kotlin/text/indices|
|
||||
}
|
||||
)
|
||||
lval indicesNoWith: R|kotlin/ranges/IntRange| = String().R|kotlin/text/indices|
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ FILE: whenAsLambdaReturnStatement.kt
|
||||
}
|
||||
public final fun test_1(modules: R|kotlin/collections/Collection<Module>|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
||||
lval res: R|kotlin/collections/Map<Module, kotlin/collections/List<Module>>| = R|<local>/modules|.R|kotlin/collections/groupBy|<R|Module|, R|Module|>(<L> = groupBy@fun <anonymous>(module: R|Module|): R|Module| <kind=UNKNOWN> {
|
||||
when () {
|
||||
^ when () {
|
||||
R|<local>/b| -> {
|
||||
R|<local>/module|
|
||||
}
|
||||
@@ -27,7 +27,7 @@ FILE: whenAsLambdaReturnStatement.kt
|
||||
}
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
lval x: R|kotlin/String| = R|kotlin/run|<R|kotlin/String|>(<L> = run@fun <anonymous>(): R|kotlin/String| <kind=EXACTLY_ONCE> {
|
||||
try {
|
||||
^ try {
|
||||
String()
|
||||
}
|
||||
finally {
|
||||
|
||||
@@ -12,7 +12,7 @@ FILE: whenAsReceiver.kt
|
||||
}
|
||||
}
|
||||
?.R|/also|<R|kotlin/Int|, R|kotlin/Int|>(<L> = also@fun <anonymous>(): R|kotlin/Int| {
|
||||
Int(1)
|
||||
^ Int(1)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND: JS
|
||||
// reason - no error from division by zero in JS
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
private fun <T> upcast(value: T): T = value
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun foo(): String = "foo1"
|
||||
fun foo(i: Int): String = "foo2"
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
// TODO: muted automatically, investigate should it be ran for JS or not
|
||||
// IGNORE_BACKEND: JS
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
val foo: () -> Unit = {}
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
class MyClass(var fnc : () -> String) {
|
||||
|
||||
fun test(): String {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
class T(val f : () -> Any?) {
|
||||
fun call() : Any? = f()
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
class Foo(
|
||||
var state : Int,
|
||||
val f : (Int) -> Int){
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
open class Base(val fn: () -> String)
|
||||
|
||||
fun box(): String {
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
open class Base(val fn1: () -> String, val fn2: () -> String)
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
return apply( "OK", {arg: String -> arg } )
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
return if (apply( 5, {arg: Int -> arg + 13 } ) == 18) "OK" else "fail"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
val cl = 39
|
||||
return if (sum(200, { val ff = {cl}; ff() }) == 239) "OK" else "FAIL"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
val cl = 39
|
||||
return if (sum(200, { val m = { val r = { cl }; r() }; m() }) == 239) "OK" else "FAIL"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
open class A(val s: Int) {
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box(): String {
|
||||
val o = "O"
|
||||
val ok_L = {o + "K"}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box(): String {
|
||||
val a = 1
|
||||
val explicitlyReturned = run1 f@{
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box(): String {
|
||||
val a = 1
|
||||
val explicitlyReturned = run1 {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
return invoker( {"OK"} )
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun box() : String {
|
||||
return if (int_invoker( { 7 } ) == 7) "OK" else "fail"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun foo(block: (String, String, String) -> String): String = block("O", "fail", "K")
|
||||
|
||||
fun box() = foo { x, _, y -> x + y }
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND: JS
|
||||
// reason - no error from division by zero in JS
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
private const val z = "OK";
|
||||
|
||||
fun box(): String {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
fun zap(s: String): String? = s
|
||||
|
||||
inline fun tryZap(s: String, fn: (String) -> String): String {
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
inline fun catchAll(x: String, block: () -> Unit): String {
|
||||
try {
|
||||
block()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user