JVM_IR: KT-40330 Unify field names for captured 'this' with JVM

NB some cases such as captured extension receiver for an extension
lambda are not supported yet; to be discussed, to what extent should we
actually follow JVM code shape here.
This commit is contained in:
Dmitry Petrov
2020-08-18 15:26:36 +03:00
parent 24bfc155af
commit 8f0aecce58
16 changed files with 371 additions and 22 deletions
@@ -26,7 +26,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1 {
@kotlin.Metadata
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 {
// source: 'crossinline.kt'
synthetic final field $this$inlined: Sink
synthetic final field $this_anonymous$inlined: Sink
inner (anonymous) class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2
inner (anonymous) class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2$1
public method <init>(p0: Sink): void
@@ -37,7 +37,7 @@ public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$2 {
@kotlin.Metadata
public final class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1 {
// source: 'crossinline.kt'
synthetic final field $this$inlined: SourceCrossinline
synthetic final field $this_filter$inlined: SourceCrossinline
inner (anonymous) class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1
inner (anonymous) class CrossinlineKt$box$1$invokeSuspend$$inlined$filter$1$1
public method <init>(p0: SourceCrossinline): void
@@ -110,7 +110,7 @@ public final class CrossinlineKt$filter$$inlined$source$1$1 {
public final class CrossinlineKt$filter$$inlined$source$1 {
// source: 'crossinline.kt'
synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1
synthetic final field $this$inlined: SourceCrossinline
synthetic final field $this_filter$inlined: SourceCrossinline
inner (anonymous) class CrossinlineKt$filter$$inlined$source$1
inner (anonymous) class CrossinlineKt$filter$$inlined$source$1$1
public method <init>(p0: SourceCrossinline, p1: kotlin.jvm.functions.Function1): void
@@ -134,7 +134,7 @@ public final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1 {
public final class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1 {
// source: 'crossinline.kt'
synthetic final field $predicate$inlined: kotlin.jvm.functions.Function1
synthetic final field $this$inlined: Sink
synthetic final field $this_anonymous$inlined: Sink
inner (anonymous) class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1
inner (anonymous) class CrossinlineKt$filter$lambda-3$$inlined$consumeEach$1$1
public method <init>(p0: kotlin.jvm.functions.Function1, p1: Sink): void
@@ -41,7 +41,7 @@ public final class flow/InnerObjectRetransformationKt$check$$inlined$flow$1 {
@kotlin.Metadata
public final class flow/InnerObjectRetransformationKt$check$$inlined$flowWith$1 {
// source: 'innerObjectRetransformation.kt'
synthetic final field $this$inlined: flow.Flow
synthetic final field $this_flowWith$inlined: flow.Flow
inner (anonymous) class flow/InnerObjectRetransformationKt$check$$inlined$flowWith$1
public method <init>(p0: flow.Flow): void
public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: flow.FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
@@ -119,7 +119,7 @@ public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1
public final class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1 {
// source: 'innerObjectRetransformation.kt'
synthetic final field $builderBlock$inlined: kotlin.jvm.functions.Function2
synthetic final field $this$inlined: flow.Flow
synthetic final field $this_flowWith$inlined: flow.Flow
inner (anonymous) class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1
inner (anonymous) class flow/InnerObjectRetransformationKt$flowWith$$inlined$flow$1$1
public method <init>(p0: kotlin.jvm.functions.Function2, p1: flow.Flow): void
@@ -88,7 +88,7 @@ public final class TcoContinuationKt$foo$$inlined$map$1$2$1 {
@kotlin.Metadata
public final class TcoContinuationKt$foo$$inlined$map$1$2 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: FlowCollector
synthetic final field $this_anonymous$inlined: FlowCollector
inner (anonymous) class TcoContinuationKt$foo$$inlined$map$1$2
inner (anonymous) class TcoContinuationKt$foo$$inlined$map$1$2$1
public method <init>(p0: FlowCollector): void
@@ -98,7 +98,7 @@ public final class TcoContinuationKt$foo$$inlined$map$1$2 {
@kotlin.Metadata
public final class TcoContinuationKt$foo$$inlined$map$1 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: Flow
synthetic final field $this_transform$inlined: Flow
inner (anonymous) class TcoContinuationKt$foo$$inlined$map$1
public method <init>(p0: Flow): void
public @org.jetbrains.annotations.Nullable method collect(@org.jetbrains.annotations.NotNull p0: FlowCollector, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
@@ -131,7 +131,7 @@ public final class TcoContinuationKt$map$$inlined$transform$1$2$1 {
@kotlin.Metadata
public final class TcoContinuationKt$map$$inlined$transform$1$2 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: FlowCollector
synthetic final field $this_anonymous$inlined: FlowCollector
synthetic final field $transformer$inlined$1: kotlin.jvm.functions.Function2
inner (anonymous) class TcoContinuationKt$map$$inlined$transform$1$2
inner (anonymous) class TcoContinuationKt$map$$inlined$transform$1$2$1
@@ -143,7 +143,7 @@ public final class TcoContinuationKt$map$$inlined$transform$1$2 {
@kotlin.Metadata
public final class TcoContinuationKt$map$$inlined$transform$1 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: Flow
synthetic final field $this_transform$inlined: Flow
synthetic final field $transformer$inlined$1: kotlin.jvm.functions.Function2
inner (anonymous) class TcoContinuationKt$map$$inlined$transform$1
inner (anonymous) class TcoContinuationKt$map$$inlined$transform$1$1
@@ -166,7 +166,7 @@ public final class TcoContinuationKt$transform$$inlined$flow$1$1 {
@kotlin.Metadata
public final class TcoContinuationKt$transform$$inlined$flow$1 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: Flow
synthetic final field $this_transform$inlined: Flow
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
inner (anonymous) class TcoContinuationKt$transform$$inlined$flow$1
inner (anonymous) class TcoContinuationKt$transform$$inlined$flow$1$1
@@ -189,7 +189,7 @@ public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$1$1 {
@kotlin.Metadata
public final class TcoContinuationKt$transform$lambda-1$$inlined$collect$1 {
// source: 'tcoContinuation.kt'
synthetic final field $this$inlined: FlowCollector
synthetic final field $this_anonymous$inlined: FlowCollector
synthetic final field $transformer$inlined: kotlin.jvm.functions.Function3
inner (anonymous) class TcoContinuationKt$transform$lambda-1$$inlined$collect$1
inner (anonymous) class TcoContinuationKt$transform$lambda-1$$inlined$collect$1$1
@@ -0,0 +1,22 @@
class Receiver {
fun foo() {}
}
fun useExtensionLambda(lambda: Receiver.() -> Unit) {
}
fun test() {
useExtensionLambda {
class NamedLocal {
fun run() {
foo()
}
}
}
}
// JVM_TEMPLATES
// 1 final synthetic LReceiver; \$this_useExtensionLambda
// JVM_IR_TEMPLATES
// 1 private final synthetic LReceiver; \$this
@@ -0,0 +1,17 @@
class Receiver {
fun foo() {}
}
fun Receiver.bar() {
class NamedLocal {
fun run() {
foo()
}
}
}
// JVM_TEMPLATES
// 1 final synthetic LReceiver; \$this_bar
// JVM_IR_TEMPLATES
// 1 private final synthetic LReceiver; \$this_bar
@@ -0,0 +1,23 @@
class Outer {
inner class Inner {
private fun bar() {
class NamedLocal {
fun run() {
innerFoo()
outerFoo()
}
}
}
fun innerFoo() {}
}
fun outerFoo() {}
}
// JVM_TEMPLATES
// 1 final synthetic LOuter\$Inner; this\$0
// JVM_IR_TEMPLATES
// 1 private final synthetic LOuter\$Inner; this\$0
// 1 private final synthetic LOuter; this\$1
@@ -0,0 +1,22 @@
class Receiver {
fun foo() {}
}
fun useExtensionLambda(lambda: Receiver.() -> Unit) {
}
fun test() {
useExtensionLambda label@ {
class NamedLocal {
fun run() {
foo()
}
}
}
}
// JVM_TEMPLATES
// 1 final synthetic LReceiver; \$this_label
// JVM_IR_TEMPLATES
// 1 private final synthetic LReceiver; \$this
@@ -0,0 +1,26 @@
class Foo {
fun foo() {}
}
class Bar {
fun bar() {}
}
fun Foo.test(bar: Bar) {
fun Bar.test() {
class Local {
fun run() {
foo()
bar()
}
}
}
}
// JVM_TEMPLATES
// 1 final synthetic LMultipleExtensionReceiversKt\$test\$1; this\$0
// 1 final synthetic LBar; \$this_test
// JVM_IR_TEMPLATES
// 1 private final synthetic LFoo; \$this_test
// 1 private final synthetic LBar; \$this_test\$1
@@ -0,0 +1,19 @@
class Outer {
inner class Inner {
private fun bar() {
class NamedLocal {
fun run() {
foo()
}
}
}
}
fun foo() {}
}
// JVM_TEMPLATES
// 1 final synthetic LOuter\$Inner; this\$0
// JVM_IR_TEMPLATES
// 1 private final synthetic LOuter; this\$0
@@ -0,0 +1,19 @@
class Outer {
inner class Inner {
constructor() {
class NamedLocal {
fun foo() {
outer()
}
}
}
}
fun outer() {}
}
// JVM_TEMPLATES
// 1 final synthetic LOuter\$Inner; this\$0
// JVM_IR_TEMPLATES
// 1 private final synthetic LOuter; this\$0
@@ -0,0 +1,19 @@
class Outer {
inner class Inner {
init {
class NamedLocal {
fun foo() {
outer()
}
}
}
}
fun outer() {}
}
// JVM_TEMPLATES
// 1 final synthetic LOuter\$Inner; this\$0
// JVM_IR_TEMPLATES
// 1 private final synthetic LOuter; this\$0
@@ -0,0 +1,17 @@
class Host {
private fun bar() {
class NamedLocal {
fun run() {
foo()
}
}
}
fun foo() {}
}
// JVM_TEMPLATES
// 1 final synthetic LHost; this\$0
// JVM_IR_TEMPLATES
// 1 private final synthetic LHost; this\$0
@@ -17,9 +17,10 @@ fun box(): String {
return `(X)`().`(Y)`()
}
// JVM_TEMPLATES
// One instance of each is in kotlin.Metadata.d2
// 1 \(X\)
// 1 \(Y\)
// JVM_IR_TEMPLATES
// 4 \$this
// 4 this\$0