[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
@@ -37,17 +37,17 @@ FILE: DeepCopyIrTree.kt
}
public final fun R|IrTypeParametersContainer|.copyTypeParametersFrom(other: R|IrTypeParametersContainer|): R|kotlin/Unit| {
this@R|/DeepCopyIrTreeWithSymbols.copyTypeParametersFrom|.R|/IrTypeParametersContainer.typeParameters| = R|<local>/other|.R|/IrTypeParametersContainer.typeParameters|.R|kotlin/collections/map|<R|IrTypeParameter|, R|IrTypeParameter|>(<L> = map@fun <anonymous>(it: R|IrTypeParameter|): R|IrTypeParameter| <kind=UNKNOWN> {
this@R|/DeepCopyIrTreeWithSymbols.copyTypeParametersFrom|.R|/IrTypeParametersContainer.typeParameters| = R|<local>/other|.R|/IrTypeParametersContainer.typeParameters|.R|kotlin/collections/map|<R|IrTypeParameter|, R|IrTypeParameter|>(<L> = map@fun <anonymous>(it: R|IrTypeParameter|): R|IrTypeParameter| <inline=Inline, kind=UNKNOWN> {
^ this@R|/DeepCopyIrTreeWithSymbols|.R|/DeepCopyIrTreeWithSymbols.copyTypeParameter|(R|<local>/it|)
}
)
this@R|/DeepCopyIrTreeWithSymbols|.R|/DeepCopyIrTreeWithSymbols.typeRemapper|.R|/withinScope|<R|kotlin/Unit|>(this@R|/DeepCopyIrTreeWithSymbols.copyTypeParametersFrom|, <L> = withinScope@fun <anonymous>(): R|kotlin/Unit| <kind=UNKNOWN> {
this@R|/DeepCopyIrTreeWithSymbols|.R|/DeepCopyIrTreeWithSymbols.typeRemapper|.R|/withinScope|<R|kotlin/Unit|>(this@R|/DeepCopyIrTreeWithSymbols.copyTypeParametersFrom|, <L> = withinScope@fun <anonymous>(): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
lval <iterator>: R|kotlin/collections/Iterator<kotlin/Pair<IrTypeParameter, IrTypeParameter>>| = this@R|/DeepCopyIrTreeWithSymbols.copyTypeParametersFrom|.R|/IrTypeParametersContainer.typeParameters|.R|kotlin/collections/zip|<R|IrTypeParameter|, R|IrTypeParameter|>(R|<local>/other|.R|/IrTypeParametersContainer.typeParameters|).R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Pair<IrTypeParameter, IrTypeParameter>>|>|()
while(R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()) {
lval <destruct>: R|kotlin/Pair<IrTypeParameter, IrTypeParameter>| = R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Pair<IrTypeParameter, IrTypeParameter>|>|()
lval thisTypeParameter: R|IrTypeParameter| = R|<local>/<destruct>|.R|SubstitutionOverride<kotlin/Pair.component1: R|IrTypeParameter|>|()
lval otherTypeParameter: R|IrTypeParameter| = R|<local>/<destruct>|.R|SubstitutionOverride<kotlin/Pair.component2: R|IrTypeParameter|>|()
R|<local>/otherTypeParameter|.R|/IrTypeParameter.superTypes|.R|kotlin/collections/mapTo|<R|IrType|, R|IrType|, R|kotlin/collections/MutableList<IrType>|>(R|<local>/thisTypeParameter|.R|/IrTypeParameter.superTypes|, <L> = mapTo@fun <anonymous>(it: R|IrType|): R|IrType| <kind=UNKNOWN> {
R|<local>/otherTypeParameter|.R|/IrTypeParameter.superTypes|.R|kotlin/collections/mapTo|<R|IrType|, R|IrType|, R|kotlin/collections/MutableList<IrType>|>(R|<local>/thisTypeParameter|.R|/IrTypeParameter.superTypes|, <L> = mapTo@fun <anonymous>(it: R|IrType|): R|IrType| <inline=Inline, kind=UNKNOWN> {
^ this@R|/DeepCopyIrTreeWithSymbols|.R|/DeepCopyIrTreeWithSymbols.typeRemapper|.R|/TypeRemapper.remapType|(R|<local>/it|)
}
)
@@ -1,14 +1,14 @@
FILE: SpecialCallsWithLambdas.kt
public final fun foo(): R|kotlin/Unit| {
lval inv: R|() -> kotlin/Function0<kotlin/Unit>| = fun <anonymous>(): R|() -> kotlin/Unit| {
^ fun <anonymous>(): R|kotlin/Unit| {
lval inv: R|() -> kotlin/Function0<kotlin/Unit>| = fun <anonymous>(): R|() -> kotlin/Unit| <inline=Unknown> {
^ fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
}
!!
lval bar: R|() -> kotlin/Function0<kotlin/Unit>| = fun <anonymous>(): R|() -> kotlin/Unit| {
^ fun <anonymous>(): R|kotlin/Unit| {
lval bar: R|() -> kotlin/Function0<kotlin/Unit>| = fun <anonymous>(): R|() -> kotlin/Unit| <inline=Unknown> {
^ fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
@@ -5,7 +5,7 @@ FILE: invokePriority.kt
}
public final fun bar(): R|kotlin/Unit| {
lval foo: R|kotlin/String.() -> kotlin/Unit| = fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| {
lval foo: R|kotlin/String.() -> kotlin/Unit| = fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
@@ -13,7 +13,7 @@ FILE: invokePriority.kt
}
String(1).R|<local>/foo|()
R|kotlin/with|<R|kotlin/String|, R|kotlin/Unit|>(String(2), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|kotlin/String|, R|kotlin/Unit|>(String(2), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
this@R|special/anonymous|.R|<local>/foo|()
}
)
@@ -25,7 +25,7 @@ FILE: invokePriority.kt
super<R|kotlin/Any|>()
}
public final val foo: R|kotlin/String.() -> kotlin/Unit| = fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| {
public final val foo: R|kotlin/String.() -> kotlin/Unit| = fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
@@ -36,7 +36,7 @@ FILE: invokePriority.kt
public final fun bar(): R|kotlin/Unit| {
(this@R|/B|, String(1)).R|/B.foo|()
R|kotlin/with|<R|kotlin/String|, R|kotlin/Unit|>(String(2), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|kotlin/String|, R|kotlin/Unit|>(String(2), <L> = with@fun R|kotlin/String|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
(this@R|/B|, this@R|special/anonymous|).R|/B.foo|()
}
)
@@ -64,7 +64,7 @@ FILE: invokePriority.kt
super<R|kotlin/Any|>()
}
public final val f: R|() -> kotlin/Unit| = fun <anonymous>(): R|kotlin/Unit| {
public final val f: R|() -> kotlin/Unit| = fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
^ Unit
}
@@ -60,7 +60,7 @@ FILE: invokePriorityComplex.kt
public final fun main(): R|kotlin/Unit| {
Q|E.foo|.R|/E.foo.a|
Q|E.foo|
R|kotlin/with|<R|E.foo|, R|kotlin/Int|>(Q|E.foo|, <L> = with@fun R|E.foo|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|E.foo|, R|kotlin/Int|>(Q|E.foo|, <L> = with@fun R|E.foo|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ this@R|special/anonymous|.R|/E.foo.a|
}
)
@@ -60,7 +60,7 @@ FILE: qualifierPriority.kt
public final fun main(): R|kotlin/Unit| {
Q|F.foo|.R|/F.foo.a|
Q|F.foo|
R|kotlin/with|<R|F.foo|, R|kotlin/Int|>(Q|F.foo|, <L> = with@fun R|F.foo|.<anonymous>(): R|kotlin/Int| <kind=EXACTLY_ONCE> {
R|kotlin/with|<R|F.foo|, R|kotlin/Int|>(Q|F.foo|, <L> = with@fun R|F.foo|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ this@R|special/anonymous|.R|/F.foo.a|
}
)
@@ -5,7 +5,7 @@ FILE: receiverResolutionInLambda.kt
}
public final fun foo(): R|kotlin/Unit| {
lval x: R|kotlin/sequences/Sequence<kotlin/String>| = R|kotlin/sequences/sequence|<R|kotlin/String|>(<L> = sequence@fun R|kotlin/sequences/SequenceScope<kotlin/String>|.<anonymous>(): R|kotlin/Unit| {
lval x: R|kotlin/sequences/Sequence<kotlin/String>| = R|kotlin/sequences/sequence|<R|kotlin/String|>(<L> = sequence@fun R|kotlin/sequences/SequenceScope<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
lval y: R|kotlin/sequences/SequenceScope<kotlin/String>| = this@R|special/anonymous|
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/sequences/SequenceScope.yield: R|kotlin/Unit|>|(String())
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/sequences/SequenceScope.yield: R|kotlin/Unit|>|(String())
@@ -18,7 +18,7 @@ FILE: receiverResolutionInLambda.kt
}
public final fun case2(): R|kotlin/Unit| {
lval x: R|kotlin/sequences/Sequence<kotlin/String>| = R|kotlin/sequences/sequence|<R|kotlin/String|>(<L> = sequence@fun R|kotlin/sequences/SequenceScope<kotlin/String>|.<anonymous>(): R|kotlin/Unit| {
lval x: R|kotlin/sequences/Sequence<kotlin/String>| = R|kotlin/sequences/sequence|<R|kotlin/String|>(<L> = sequence@fun R|kotlin/sequences/SequenceScope<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
lval y: R|kotlin/sequences/SequenceScope<kotlin/String>| = this@R|special/anonymous|
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/sequences/SequenceScope.yield: R|kotlin/Unit|>|(String())
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/sequences/SequenceScope.yield: R|kotlin/Unit|>|(String())
@@ -15,8 +15,8 @@ FILE: selfReferenceToCompanionObject.kt
public final companion object Companion : R|Base| {
private constructor(): R|Host.Companion| {
super<R|Base|>(R|kotlin/run|<R|() -> kotlin/String|>(<L> = run@fun <anonymous>(): R|() -> kotlin/String| <kind=EXACTLY_ONCE> {
^ run@fun <anonymous>(): R|kotlin/String| {
super<R|Base|>(R|kotlin/run|<R|() -> kotlin/String|>(<L> = run@fun <anonymous>(): R|() -> kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
^ run@fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ Q|Host|.R|/Host.Companion.ok|()
}
@@ -44,8 +44,8 @@ FILE: selfReferenceToCompanionObject.kt
public final static enum entry FOO: R|Test| = object : R|Test| {
private constructor(): R|<anonymous>| {
super<R|Test|>(String(O), this@R|kotlin/Enum.Companion|.R|kotlin/run|<R|kotlin/Enum.Companion|, R|() -> kotlin/String|>(<L> = run@fun R|kotlin/Enum.Companion|.<anonymous>(): R|() -> kotlin/String| <kind=EXACTLY_ONCE> {
^ run@fun <anonymous>(): R|kotlin/String| {
super<R|Test|>(String(O), this@R|kotlin/Enum.Companion|.R|kotlin/run|<R|kotlin/Enum.Companion|, R|() -> kotlin/String|>(<L> = run@fun R|kotlin/Enum.Companion|.<anonymous>(): R|() -> kotlin/String| <inline=Inline, kind=EXACTLY_ONCE> {
^ run@fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ R|/Test.FOO|.R|/Test.x|
}
@@ -56,7 +56,7 @@ FILE: selfReferenceToCompanionObject.kt
public final override val y: R|kotlin/String| = String(K)
public get(): R|kotlin/String|
public final val closure2: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| {
public final val closure2: R|() -> kotlin/String| = fun <anonymous>(): R|kotlin/String| <inline=Unknown> {
^ this@R|/<anonymous>|.R|/<anonymous>.y|
}
@@ -13,11 +13,11 @@ FILE: valueOfOrNull.kt
}
public final fun foo(s: R|kotlin/String?|): R|kotlin/Unit| {
lval result: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <kind=EXACTLY_ONCE> {
lval result: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
) } ?: Q|SomeEnum|.R|/SomeEnum.ENTRY|
lval result2: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <kind=EXACTLY_ONCE> {
lval result2: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
) } ?: Q|SomeEnum|.R|/SomeEnum.ENTRY|
@@ -35,7 +35,7 @@ FILE: valueOfOrNull.kt
Q|SomeEnum|.R|/SomeEnum.ENTRY|
}
else -> {
R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <kind=EXACTLY_ONCE> {
R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
)