Introduce new naming convention for captured receiver backing fields

'receiver$0' -> '$this_<label>'
This commit is contained in:
Yan Zhulanow
2018-08-28 15:34:16 +05:00
parent 11d4a6bf5c
commit d16b55033e
53 changed files with 942 additions and 69 deletions
@@ -0,0 +1,17 @@
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block {
val y = false
block {
val z = true
block {
this@foo + this@block.toString() + x + y + z + count
}
}
}
}
inline fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,25 @@
public final class DeepInlineKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
1 $i$f$block: I
}
public final static void foo(java.lang.String $receiver, int $i$a$1$block) {
Local variables:
9 $receiver: J
11 $i$a$1$block: I
12 $i$f$block: I
8 z: Z
6 $receiver: J
13 $i$a$1$block: I
14 $i$f$block: I
5 y: Z
3 $receiver: J
15 $i$a$1$block: I
16 $i$f$block: I
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,17 @@
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block b1@ {
val y = false
block b2@ {
val z = true
block b3@ {
this@foo + this@b1 + this@b2 + this@b3 + x + y + z + count
}
}
}
}
inline fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,25 @@
public final class DeepInlineWithLabelsKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
1 $i$f$block: I
}
public final static void foo(java.lang.String $receiver, int $i$a$1$block) {
Local variables:
9 $receiver: J
11 $i$a$1$block: I
12 $i$f$block: I
8 z: Z
6 $receiver: J
13 $i$a$1$block: I
14 $i$f$block: I
5 y: Z
3 $receiver: J
15 $i$a$1$block: I
16 $i$f$block: I
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,18 @@
// LOCAL_VARIABLE_TABLE
// LANGUAGE_VERSION: 1.3
fun String.foo(count: Int) {
val x = false
block b1@ {
val y = false
block b2@ {
val z = true
block b3@ {
this@foo + this@b1 + this@b2 + this@b3 + x + y + z + count
}
}
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,69 @@
final class DeepNoinlineWithLabels_afterKt$foo$1$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final long $this_b2
final boolean $z
final DeepNoinlineWithLabels_afterKt$foo$1$1 this$0
void <init>(DeepNoinlineWithLabels_afterKt$foo$1$1 p0, long p1, boolean p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LDeepNoinlineWithLabels_afterKt$foo$1$1$1;
1 $receiver: J
}
}
final class DeepNoinlineWithLabels_afterKt$foo$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final long $this_b1
final boolean $y
final DeepNoinlineWithLabels_afterKt$foo$1 this$0
void <init>(DeepNoinlineWithLabels_afterKt$foo$1 p0, long p1, boolean p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 z: Z
0 this: LDeepNoinlineWithLabels_afterKt$foo$1$1;
1 $receiver: J
}
}
final class DeepNoinlineWithLabels_afterKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final java.lang.String $this_foo
final boolean $x
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 y: Z
0 this: LDeepNoinlineWithLabels_afterKt$foo$1;
1 $receiver: J
}
}
public final class DeepNoinlineWithLabels_afterKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,18 @@
// !LANGUAGE: -NewCapturedReceiverFieldNamingConvention
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block b1@ {
val y = false
block b2@ {
val z = true
block b3@ {
this@foo + this@b1 + this@b2 + this@b3 + x + y + z + count
}
}
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,69 @@
final class DeepNoinlineWithLabels_beforeKt$foo$1$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $z
final long receiver$0
final DeepNoinlineWithLabels_beforeKt$foo$1$1 this$0
void <init>(DeepNoinlineWithLabels_beforeKt$foo$1$1 p0, long p1, boolean p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LDeepNoinlineWithLabels_beforeKt$foo$1$1$1;
1 $receiver: J
}
}
final class DeepNoinlineWithLabels_beforeKt$foo$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $y
final long receiver$0
final DeepNoinlineWithLabels_beforeKt$foo$1 this$0
void <init>(DeepNoinlineWithLabels_beforeKt$foo$1 p0, long p1, boolean p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 z: Z
0 this: LDeepNoinlineWithLabels_beforeKt$foo$1$1;
1 $receiver: J
}
}
final class DeepNoinlineWithLabels_beforeKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final boolean $x
final java.lang.String receiver$0
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 y: Z
0 this: LDeepNoinlineWithLabels_beforeKt$foo$1;
1 $receiver: J
}
}
public final class DeepNoinlineWithLabels_beforeKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,18 @@
// LOCAL_VARIABLE_TABLE
// LANGUAGE_VERSION: 1.3
fun String.foo(count: Int) {
val x = false
block {
val y = false
block {
val z = true
block {
this@foo + this@block.toString() + x + y + z + count
}
}
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,65 @@
final class DeepNoinline_afterKt$foo$1$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $z
final DeepNoinline_afterKt$foo$1$1 this$0
void <init>(DeepNoinline_afterKt$foo$1$1 p0, boolean p1)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LDeepNoinline_afterKt$foo$1$1$1;
1 $receiver: J
}
}
final class DeepNoinline_afterKt$foo$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $y
final DeepNoinline_afterKt$foo$1 this$0
void <init>(DeepNoinline_afterKt$foo$1 p0, boolean p1)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 z: Z
0 this: LDeepNoinline_afterKt$foo$1$1;
1 $receiver: J
}
}
final class DeepNoinline_afterKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final java.lang.String $this_foo
final boolean $x
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 y: Z
0 this: LDeepNoinline_afterKt$foo$1;
1 $receiver: J
}
}
public final class DeepNoinline_afterKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,18 @@
// !LANGUAGE: -NewCapturedReceiverFieldNamingConvention
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block {
val y = false
block {
val z = true
block {
this@foo + this@block.toString() + x + y + z + count
}
}
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,65 @@
final class DeepNoinline_beforeKt$foo$1$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $z
final DeepNoinline_beforeKt$foo$1$1 this$0
void <init>(DeepNoinline_beforeKt$foo$1$1 p0, boolean p1)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LDeepNoinline_beforeKt$foo$1$1$1;
1 $receiver: J
}
}
final class DeepNoinline_beforeKt$foo$1$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final boolean $y
final DeepNoinline_beforeKt$foo$1 this$0
void <init>(DeepNoinline_beforeKt$foo$1 p0, boolean p1)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 z: Z
0 this: LDeepNoinline_beforeKt$foo$1$1;
1 $receiver: J
}
}
final class DeepNoinline_beforeKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final boolean $x
final java.lang.String receiver$0
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long this) {
Local variables:
3 y: Z
0 this: LDeepNoinline_beforeKt$foo$1;
1 $receiver: J
}
}
public final class DeepNoinline_beforeKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,25 @@
// LOCAL_VARIABLE_TABLE
class Foo {
fun foo() {
block {
this@Foo
}
}
inner class Bar {
fun bar() {
block {
this@Foo
this@Bar
block {
this@Foo
this@Bar
}
}
}
}
}
inline fun block(block: () -> Unit) = block()
@@ -0,0 +1,40 @@
public final class Foo$Bar : java/lang/Object {
final Foo this$0
public void <init>(Foo $outer) {
Local variables:
0 this: LFoo$Bar;
1 $outer: LFoo;
}
public final void bar() {
Local variables:
1 $i$a$1$block: I
2 $i$f$block: I
3 $i$a$1$block: I
4 $i$f$block: I
0 this: LFoo$Bar;
}
}
public final class Foo : java/lang/Object {
public void <init>() {
Local variables:
0 this: LFoo;
}
public final void foo() {
Local variables:
1 $i$a$1$block: I
2 $i$f$block: I
0 this: LFoo;
}
}
public final class InlineClassCaptureKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function0 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function0;
1 $i$f$block: I
}
}
@@ -0,0 +1,11 @@
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x: Boolean = false
block {
this@foo + this@block.toString() + x.toString() + count.toString()
}
}
inline fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,17 @@
public final class InlineReceiversKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
1 $i$f$block: I
}
public final static void foo(java.lang.String $receiver, int $i$a$1$block) {
Local variables:
3 $receiver: J
5 $i$a$1$block: I
6 $i$f$block: I
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,3 @@
class Foo {
inner class Bar
}
@@ -0,0 +1,9 @@
public final class Foo$Bar : java/lang/Object {
final Foo this$0
public void <init>(Foo $outer)
}
public final class Foo : java/lang/Object {
public void <init>()
}
@@ -0,0 +1,11 @@
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block {
this@foo + this@block.toString() + x.toString() + count.toString()
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,31 @@
final class NonInlineReceivers_afterKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final java.lang.String $this_foo
final boolean $x
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LNonInlineReceivers_afterKt$foo$1;
1 $receiver: J
}
}
public final class NonInlineReceivers_afterKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1,12 @@
// !LANGUAGE: -NewCapturedReceiverFieldNamingConvention
// LOCAL_VARIABLE_TABLE
fun String.foo(count: Int) {
val x = false
block {
this@foo + this@block.toString() + x.toString() + count.toString()
}
}
fun block(block: Long.() -> Unit) = 5L.block()
@@ -0,0 +1,31 @@
final class NonInlineReceivers_beforeKt$foo$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function1 {
final int $count
final boolean $x
final java.lang.String receiver$0
void <init>(java.lang.String p0, boolean p1, int p2)
public java.lang.Object invoke(java.lang.Object p0)
public final void invoke(long $receiver) {
Local variables:
0 this: LNonInlineReceivers_beforeKt$foo$1;
1 $receiver: J
}
}
public final class NonInlineReceivers_beforeKt : java/lang/Object {
public final static void block(kotlin.jvm.functions.Function1 block) {
Local variables:
0 block: Lkotlin/jvm/functions/Function1;
}
public final static void foo(java.lang.String x, int $receiver) {
Local variables:
2 x: Z
0 $receiver: Ljava/lang/String;
1 count: I
}
}
@@ -0,0 +1 @@
fun String.foo(a: Int) {}
@@ -0,0 +1,3 @@
public final class SimpleKt : java/lang/Object {
public final static void foo(java.lang.String $receiver, int a)
}