[FIR] Save inline status of lambda after resolution

This commit is contained in:
Dmitriy Novozhilov
2021-03-31 14:58:59 +03:00
committed by TeamCityServer
parent a4b9e2502c
commit 5ebd24eac5
183 changed files with 496 additions and 437 deletions
@@ -36,7 +36,7 @@ FILE: CallBasedInExpressionGenerator.kt
private get(): R|kotlin/Boolean|
public final override fun generate(argument: R|org/jetbrains/kotlin/codegen/range/inExpression/StackValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| {
^generate this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).R|kotlin/let|<R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|, R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|>(<L> = let@fun <anonymous>(it: R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| <kind=EXACTLY_ONCE> {
^generate this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.gen|(R|<local>/argument|).R|kotlin/let|<R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|, R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|>(<L> = let@fun <anonymous>(it: R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue|): R|org/jetbrains/kotlin/codegen/range/inExpression/BranchedValue| <inline=Inline, kind=EXACTLY_ONCE> {
^ when () {
this@R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator|.R|org/jetbrains/kotlin/codegen/range/inExpression/CallBasedInExpressionGenerator.isInverted| -> {
<Unresolved name: Invert>#(R|<local>/it|)
@@ -19,7 +19,7 @@ FILE: extensionPropertyInLambda.kt
public final fun use(f: R|() -> kotlin/String|): R|kotlin/Unit| {
}
public final fun test1(): R|kotlin/Unit| {
R|/use|(<L> = use@fun <anonymous>(): R|kotlin/String| {
R|/use|(<L> = use@fun <anonymous>(): R|kotlin/String| <inline=NoInline> {
^ R|/C.C|<R|kotlin/String|>(String(abc)).R|/y|<R|kotlin/String|>
}
)
@@ -1,6 +1,6 @@
FILE: doubleBrackets.kt
public final fun R|kotlin/String|.k(): R|() -> kotlin/String| {
^k fun <anonymous>(): R|kotlin/String| {
^k fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ this@R|/k|
}
@@ -26,14 +26,14 @@ FILE: threeReceiversCorrect.kt
^with R|<local>/f|.R|SubstitutionOverride<kotlin/Function1.invoke: R|R|>|(R|<local>/arg|)
}
public final fun test(a: R|A|, b: R|B|, c: R|C|): R|kotlin/Unit| {
R|/with|<R|A|, R|kotlin/Unit|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Unit| {
R|/with|<R|C|, R|kotlin/Unit|>(R|<local>/c|, <L> = with@fun R|C|.<anonymous>(): R|kotlin/Unit| {
R|/with|<R|A|, R|kotlin/Unit|>(R|<local>/a|, <L> = with@fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
R|/with|<R|C|, R|kotlin/Unit|>(R|<local>/c|, <L> = with@fun R|C|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
(this@R|special/anonymous|, R|<local>/b|).R|/A.foo|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/c|)
}
)
^ R|/with|<R|B|, R|kotlin/Unit|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Unit| {
^ R|/with|<R|B|, R|kotlin/Unit|>(R|<local>/b|, <L> = with@fun R|B|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
(this@R|special/anonymous|, this@R|special/anonymous|).R|/A.foo|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(R|<local>/c|)
^ R|/with|<R|C|, R|kotlin/Unit|>(R|<local>/c|, <L> = with@fun R|C|.<anonymous>(): R|kotlin/Unit| {
^ R|/with|<R|C|, R|kotlin/Unit|>(R|<local>/c|, <L> = with@fun R|C|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
(this@R|special/anonymous|, this@R|special/anonymous|).R|/A.foo|.R|SubstitutionOverride<kotlin/Function1.invoke: R|kotlin/Unit|>|(this@R|special/anonymous|)
}
)
@@ -8,32 +8,32 @@ FILE: lambda.kt
public final fun multipleArgs(block: R|(kotlin/String, kotlin/String) -> kotlin/String|): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
R|/foo|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| {
R|/foo|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
String(This is test)
}
)
R|/bar|(<L> = bar@fun <anonymous>(): R|kotlin/String| {
R|/bar|(<L> = bar@fun <anonymous>(): R|kotlin/String| <inline=NoInline> {
^ String(This is also test)
}
)
R|/itIs|(<L> = itIs@fun <anonymous>(it: R|kotlin/String|): R|kotlin/String| {
R|/itIs|(<L> = itIs@fun <anonymous>(it: R|kotlin/String|): R|kotlin/String| <inline=NoInline> {
^ <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| {
R|/multipleArgs|(<L> = multipleArgs@fun <anonymous>(a: R|kotlin/String|, b: R|kotlin/String|): R|kotlin/String| <inline=NoInline> {
^ <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| {
lval s: R|kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String(OK)
}
.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
lval f: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| {
lval f: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ String(OK)
}
lval ss: R|kotlin/String| = R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/String|>|()
lval empty: R|() -> kotlin/Unit| = fun <anonymous>(): R|kotlin/Unit| {
lval empty: R|() -> kotlin/Unit| = fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
@@ -12,19 +12,19 @@ FILE: lambdaWithReceiver.kt
public final fun withA(block: R|A.() -> kotlin/Unit|): R|kotlin/Unit| {
}
public final fun test_1(): R|kotlin/Unit| {
R|/withA|(<L> = withA@fun R|A|.<anonymous>(): R|kotlin/Unit| {
R|/withA|(<L> = withA@fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|/A.foo|()
}
)
}
public final fun test_2(a: R|A|): R|kotlin/Unit| {
R|/myWith|<R|A|>(R|<local>/a|, <L> = myWith@fun R|A|.<anonymous>(): R|kotlin/Unit| {
R|/myWith|<R|A|>(R|<local>/a|, <L> = myWith@fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|/A.foo|()
}
)
}
public final fun test_3(a: R|A|): R|kotlin/Unit| {
R|<local>/a|.R|/myApply|<R|A|>(<L> = myApply@fun R|A|.<anonymous>(): R|kotlin/Unit| {
R|<local>/a|.R|/myApply|<R|A|>(<L> = myApply@fun R|A|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|/A.foo|()
}
)
@@ -32,7 +32,7 @@ FILE: lambdaWithReceiver.kt
public final fun complexLambda(block: R|kotlin/Int.(kotlin/String) -> kotlin/Unit|): R|kotlin/Unit| {
}
public final fun test_4(): R|kotlin/Unit| {
R|/complexLambda|(<L> = complexLambda@fun R|kotlin/Int|.<anonymous>(it: R|kotlin/String|): R|kotlin/Unit| {
R|/complexLambda|(<L> = complexLambda@fun R|kotlin/Int|.<anonymous>(it: R|kotlin/String|): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|kotlin/Int.inc|()
this@R|special/anonymous|.R|kotlin/Int.inc|()
R|<local>/it|.R|kotlin/String.length|