Enable lightweight lambdas (aka invokedynamic) since 2.0

#KT-45375 Fixed
 #KT-58173 Open
This commit is contained in:
Alexander Udalov
2023-04-20 11:07:41 +02:00
committed by Space Team
parent b1b33475fa
commit 3f034e8b67
80 changed files with 4686 additions and 253 deletions
@@ -1,6 +1,5 @@
public final class CodeFragment {
// source: 'fragment.kt'
inner (anonymous) class ContextKt$test$1
public method <init>(): void
public final static method run(p0: java.lang.String): void
}
@@ -1,6 +1,5 @@
public final class CodeFragment {
// source: 'fragment.kt'
inner (anonymous) class ContextKt$test$1
public method <init>(): void
public final static method run(p0: java.lang.String): void
}
@@ -0,0 +1,27 @@
@kotlin.coroutines.jvm.internal.DebugMetadata
@kotlin.Metadata
final class OnInlineArgumentKt$box$1 {
// source: 'onInlineArgument.kt'
enclosing method OnInlineArgumentKt.box()Ljava/lang/String;
synthetic final field $lambda: kotlin.jvm.functions.Function1
synthetic final field $test: kotlin.jvm.internal.Ref$ObjectRef
field label: int
inner (anonymous) class OnInlineArgumentKt$box$1
method <init>(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.functions.Function1, p2: kotlin.coroutines.Continuation): void
public final method create(p0: kotlin.coroutines.Continuation): kotlin.coroutines.Continuation
public synthetic bridge method invoke(p0: java.lang.Object): java.lang.Object
public final method invoke(p0: kotlin.coroutines.Continuation): java.lang.Object
public final method invokeSuspend(p0: java.lang.Object): java.lang.Object
public final inner class kotlin/jvm/internal/Ref$ObjectRef
}
@kotlin.Metadata
public final class OnInlineArgumentKt {
// source: 'onInlineArgument.kt'
inner (anonymous) class OnInlineArgumentKt$box$1
private final static method box$lambda$0(p0: java.lang.String): java.lang.String
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
private final static method runS$$forInline(p0: kotlin.jvm.functions.Function2, p1: kotlin.coroutines.Continuation): java.lang.Object
public final static @org.jetbrains.annotations.Nullable method runS(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function2, @org.jetbrains.annotations.NotNull p1: kotlin.coroutines.Continuation): java.lang.Object
public final inner class kotlin/jvm/internal/Ref$ObjectRef
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,27 @@
// FILE: 1.kt
// FILE: 2.kt
SMAP
2.kt
Kotlin
*S Kotlin
*F
+ 1 2.kt
_2Kt
+ 2 1.kt
test/B
+ 3 1.kt
test/A
*L
1#1,37:1
15#2,2:38
9#3,2:40
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
27#1:38,2
29#1:40,2
*E
@@ -1,5 +1,6 @@
// TARGET_BACKEND: JVM
// WITH_REFLECT
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
package test
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
package test
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
@@ -1,5 +1,6 @@
// WITH_REFLECT
// TARGET_BACKEND: JVM
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,4 +1,5 @@
// NO_CHECK_LAMBDA_INLINING
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package zzz
@@ -1,4 +1,5 @@
// NO_CHECK_LAMBDA_INLINING
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,5 +1,5 @@
// NO_CHECK_LAMBDA_INLINING
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package builders
@@ -1,8 +1,8 @@
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
// NO_SMAP_DUMP
package test
inline fun annotatedWith2(crossinline predicate: () -> Boolean)
{ val lambda = { any { predicate() } }; lambda() }
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// SEPARATE_SMAP_DUMPS
// SKIP_INLINE_CHECK_IN: lParams$default
@@ -7,7 +7,7 @@ Kotlin
+ 1 1.kt
test/_1Kt$lParams$1
*L
1#1,40:1
1#1,41:1
*E
SMAP
@@ -20,14 +20,14 @@ test/_1Kt$lParams$1$lambda$1
+ 2 1.kt
test/_1Kt
*L
1#1,40:1
31#2:41
1#1,41:1
32#2:42
*S KotlinDebug
*F
+ 1 1.kt
test/_1Kt$lParams$1$lambda$1
*L
34#1:41
35#1:42
*E
SMAP
@@ -40,8 +40,8 @@ test/_1Kt$kValue$lambda$1
+ 2 1.kt
test/_1Kt$lParams$1$lambda$1
*L
1#1,40:1
34#2:41
1#1,41:1
35#2:42
*E
SMAP
@@ -52,7 +52,7 @@ Kotlin
+ 1 1.kt
test/_1Kt$kValue$lambda$1
*L
1#1,40:1
1#1,41:1
*E
// FILE: 2.kt
@@ -68,15 +68,15 @@ test/_1Kt
+ 3 1.kt
test/_1Kt$lParams$1
*L
1#1,46:1
33#2,5:47
34#3:52
1#1,47:1
34#2,5:48
35#3:53
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
44#1:47,5
44#1:52
45#1:48,5
45#1:53
*E
@@ -7,7 +7,7 @@ Kotlin
+ 1 1.kt
test/_1Kt$lParams$1
*L
1#1,40:1
1#1,41:1
*E
SMAP
@@ -20,14 +20,14 @@ test/_1Kt$lParams$1$lambda$1
+ 2 1.kt
test/_1Kt
*L
1#1,40:1
31#2:41
1#1,41:1
32#2:42
*S KotlinDebug
*F
+ 1 1.kt
test/_1Kt$lParams$1$lambda$1
*L
34#1:41
35#1:42
*E
SMAP
@@ -40,8 +40,8 @@ test/_1Kt$kValue$lambda$1
+ 2 1.kt
test/_1Kt$lParams$1$lambda$1
*L
1#1,40:1
34#2:41
1#1,41:1
35#2:42
*E
SMAP
@@ -52,7 +52,7 @@ Kotlin
+ 1 1.kt
test/_1Kt$kValue$lambda$1
*L
1#1,40:1
1#1,41:1
*E
// FILE: 2.kt
@@ -68,16 +68,16 @@ test/_1Kt
+ 3 1.kt
test/_1Kt$lParams$1
*L
1#1,46:1
33#2,5:47
34#3:52
1#1,47:1
34#2,5:48
35#3:53
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
44#1:47,5
44#1:52
45#1:48,5
45#1:53
*E
SMAP
@@ -90,14 +90,14 @@ test/_1Kt$lParams$1$lambda$1
+ 2 1.kt
test/_1Kt
*L
1#1,40:1
31#2:41
1#1,41:1
32#2:42
*S KotlinDebug
*F
+ 1 1.kt
test/_1Kt$lParams$1$lambda$1
*L
34#1:41
35#1:42
*E
SMAP
@@ -110,7 +110,7 @@ test/_1Kt$kValue$lambda$1
+ 2 1.kt
test/_1Kt$lParams$1$lambda$1
*L
1#1,40:1
34#2:41
1#1,41:1
35#2:42
*E
@@ -1,7 +1,7 @@
// SEPARATE_SMAP_DUMPS
// SKIP_INLINE_CHECK_IN: lParams$default
// IGNORE_BACKEND: JS
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,7 +1,7 @@
// SEPARATE_SMAP_DUMPS
// SKIP_INLINE_CHECK_IN: lParams$default
// IGNORE_BACKEND: JS
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -1,5 +1,5 @@
// IGNORE_INLINER_K2: IR
// SKIP_INLINE_CHECK_IN: inlineFun$default
// FILE: 1.kt
@@ -1,3 +1,4 @@
// IGNORE_INLINER_K2: IR
// FILE: 1.kt
package test
@@ -9,14 +9,14 @@ test/_1Kt$test$lambda$1
+ 2 1.kt
test/_1Kt
*L
1#1,18:1
6#2,3:19
1#1,19:1
7#2,3:20
*S KotlinDebug
*F
+ 1 1.kt
test/_1Kt$test$lambda$1
*L
13#1:19,3
14#1:20,3
*E
// FILE: 2.kt
@@ -30,14 +30,14 @@ _2Kt
+ 2 1.kt
test/_1Kt
*L
1#1,31:1
11#2,6:32
1#1,32:1
12#2,6:33
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
25#1:32,6
26#1:33,6
*E
SMAP
@@ -52,16 +52,16 @@ test/_1Kt
+ 3 2.kt
_2Kt
*L
1#1,18:1
6#2,2:19
8#2:23
26#3,2:21
1#1,19:1
7#2,2:20
9#2:24
27#3,2:22
*S KotlinDebug
*F
+ 1 1.kt
test/_1Kt$test$lambda$1
*L
13#1:19,2
13#1:23
14#1:20,2
14#1:24
*E
@@ -0,0 +1,25 @@
// FILE: 1.kt
// FILE: 2.kt
SMAP
2.kt
Kotlin
*S Kotlin
*F
+ 1 2.kt
_2Kt
+ 2 1.kt
test/_1Kt
*L
1#1,36:1
6#2,4:37
12#2,3:41
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
26#1:37,4
28#1:41,3
*E
@@ -0,0 +1,25 @@
// FILE: 1.kt
// FILE: 2.kt
SMAP
2.kt
Kotlin
*S Kotlin
*F
+ 1 2.kt
_2Kt
+ 2 1.kt
test/_1Kt
*L
1#1,36:1
16#1,3:41
6#2,4:37
*S KotlinDebug
*F
+ 1 2.kt
_2Kt
*L
28#1:41,3
26#1:37,4
*E
@@ -0,0 +1,19 @@
@kotlin.Metadata
public final class B {
// source: 'accessorForProtectedPropertyWithPrivateSetter.kt'
public method <init>(): void
private final static method test$lambda$0(p0: B): java.lang.String
public final @org.jetbrains.annotations.NotNull method test(): kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public class a/A {
// source: 'a.kt'
private @org.jetbrains.annotations.NotNull field vk: java.lang.String
private @org.jetbrains.annotations.NotNull field vo: java.lang.String
public method <init>(): void
private final static method fk$lambda$0(p0: a.A): java.lang.String
public final @org.jetbrains.annotations.NotNull method fk(): kotlin.jvm.functions.Function0
protected final @org.jetbrains.annotations.NotNull method getVk(): java.lang.String
protected final @org.jetbrains.annotations.NotNull method getVo(): java.lang.String
}
@@ -0,0 +1,30 @@
@kotlin.Metadata
public final class B$test$1 {
// source: 'accessorForProtectedPropertyWithPrivateSetterInObjectLiteral.kt'
enclosing method B.test()Ljava/lang/Object;
synthetic final field this$0: B
inner (anonymous) class B$test$1
method <init>(p0: B): void
public method toString(): java.lang.String
}
@kotlin.Metadata
public final class B {
// source: 'accessorForProtectedPropertyWithPrivateSetterInObjectLiteral.kt'
inner (anonymous) class B$test$1
public method <init>(): void
public synthetic final static method access$getVo(p0: B): java.lang.String
public final @org.jetbrains.annotations.NotNull method test(): java.lang.Object
}
@kotlin.Metadata
public class a/A {
// source: 'a.kt'
private @org.jetbrains.annotations.NotNull field vk: java.lang.String
private @org.jetbrains.annotations.NotNull field vo: java.lang.String
public method <init>(): void
private final static method fk$lambda$0(p0: a.A): java.lang.String
public final @org.jetbrains.annotations.NotNull method fk(): kotlin.jvm.functions.Function0
protected final @org.jetbrains.annotations.NotNull method getVk(): java.lang.String
protected final @org.jetbrains.annotations.NotNull method getVo(): java.lang.String
}
@@ -0,0 +1,16 @@
@kotlin.Metadata
public final class test/C {
// source: 'C.kt'
public method <init>(): void
private final static method f$lambda$0(): java.lang.String
public final @org.jetbrains.annotations.NotNull method f(): java.lang.String
private final static method g$lambda$1(): java.lang.String
public final @org.jetbrains.annotations.NotNull method g(): kotlin.jvm.functions.Function0
public inner class A$B
}
@kotlin.Metadata
public final class test/CKt {
// source: 'C.kt'
public final static method eval(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
}
@@ -0,0 +1,50 @@
@kotlin.Metadata
public final class DP {
// source: 'delegatedPropertiesInCompanionObject.kt'
public method <init>(): void
private final static method provideDelegate$lambda$0(): java.lang.String
public final @org.jetbrains.annotations.NotNull method provideDelegate(@org.jetbrains.annotations.Nullable p0: java.lang.Object, @org.jetbrains.annotations.NotNull p1: kotlin.reflect.KProperty): kotlin.Lazy
}
@kotlin.Metadata
public final class H1$Companion {
// source: 'delegatedPropertiesInCompanionObject.kt'
synthetic final static field $$delegatedProperties: kotlin.reflect.KProperty[]
static method <clinit>(): void
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
public final @org.jetbrains.annotations.NotNull method getProperty(): java.lang.String
public final inner class H1$Companion
}
@kotlin.Metadata
public final class H1 {
// source: 'delegatedPropertiesInCompanionObject.kt'
public final static @org.jetbrains.annotations.NotNull field Companion: H1$Companion
private final static @org.jetbrains.annotations.NotNull field property$delegate: kotlin.Lazy
static method <clinit>(): void
public method <init>(): void
public synthetic final static method access$getProperty$delegate$cp(): kotlin.Lazy
public final inner class H1$Companion
}
@kotlin.Metadata
public final class H2$Companion {
// source: 'delegatedPropertiesInCompanionObject.kt'
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
public final @org.jetbrains.annotations.NotNull method getProperty(): java.lang.String
public final inner class H2$Companion
}
@kotlin.Metadata
public final class H2 {
// source: 'delegatedPropertiesInCompanionObject.kt'
public final static @org.jetbrains.annotations.NotNull field Companion: H2$Companion
private final static @org.jetbrains.annotations.NotNull field property$delegate: kotlin.Lazy
static method <clinit>(): void
public method <init>(): void
public synthetic final static method access$getProperty$delegate$cp(): kotlin.Lazy
private final static method property_delegate$lambda$0(): java.lang.String
public final inner class H2$Companion
}
@@ -0,0 +1,11 @@
@kotlin.Metadata
final class FileClassWithPrivateDeclarationsOnly_afterKt {
// source: 'fileClassWithPrivateDeclarationsOnly_after.kt'
private final static @org.jetbrains.annotations.NotNull field a: kotlin.Unit
private final static @org.jetbrains.annotations.NotNull field b$delegate: kotlin.Lazy
static method <clinit>(): void
private final static method b_delegate$lambda$0(): kotlin.Unit
private final static method f(): void
public final static @kotlin.internal.InlineOnly method g(): void
private final static method getB(): kotlin.Unit
}
@@ -0,0 +1,11 @@
@kotlin.Metadata
public final class FileClassWithPrivateDeclarationsOnly_beforeKt {
// source: 'fileClassWithPrivateDeclarationsOnly_before.kt'
private final static @org.jetbrains.annotations.NotNull field a: kotlin.Unit
private final static @org.jetbrains.annotations.NotNull field b$delegate: kotlin.Lazy
static method <clinit>(): void
private final static method b_delegate$lambda$0(): kotlin.Unit
private final static method f(): void
public final static @kotlin.internal.InlineOnly method g(): void
private final static method getB(): kotlin.Unit
}
@@ -0,0 +1,33 @@
@kotlin.Metadata
public final class _2Kt$box$1$1$1$q$1 {
// source: '2.kt'
enclosing method _2Kt.box()V
inner (anonymous) class _2Kt$box$1$1$1$q$1
method <init>(): void
}
@kotlin.Metadata
public final class _2Kt$box$1$1$p$1 {
// source: '2.kt'
enclosing method _2Kt.box()V
inner (anonymous) class _2Kt$box$1$1$p$1
method <init>(): void
}
@kotlin.Metadata
public final class _2Kt {
// source: '2.kt'
inner (anonymous) class _2Kt$box$1$1$1$q$1
inner (anonymous) class _2Kt$box$1$1$p$1
private final static method box$lambda$2$lambda$1$lambda$0(p0: kotlin.jvm.internal.Ref$ObjectRef): kotlin.Unit
private final static method box$lambda$2$lambda$1(p0: kotlin.jvm.internal.Ref$ObjectRef, p1: kotlin.jvm.internal.Ref$ObjectRef): kotlin.Unit
public final static method box(): void
public final static method eval(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
public final inner class kotlin/jvm/internal/Ref$ObjectRef
}
@kotlin.Metadata
public final class test/_1Kt {
// source: '1.kt'
public final static method test(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
}
@@ -0,0 +1,19 @@
@kotlin.Metadata
public interface A {
// source: 'lambdaInInitBlockNoPrimaryConstructor.kt'
}
@kotlin.Metadata
public interface B {
// source: 'lambdaInInitBlockNoPrimaryConstructor.kt'
}
@kotlin.Metadata
public final class E {
// source: 'lambdaInInitBlockNoPrimaryConstructor.kt'
private final field irrelevantField: int
public method <init>(@org.jetbrains.annotations.NotNull p0: A): void
public method <init>(@org.jetbrains.annotations.NotNull p0: B): void
private final static method _init_$lambda$0(): kotlin.Unit
public final method getIrrelevantField(): int
}
@@ -0,0 +1,17 @@
@kotlin.Metadata
public final class Outer$Inner {
// source: 'lambdaInInnerClassConstructor.kt'
private final @org.jetbrains.annotations.NotNull field lambda: kotlin.jvm.functions.Function0
synthetic final field this$0: Outer
public method <init>(p0: Outer): void
public final @org.jetbrains.annotations.NotNull method getLambda(): kotlin.jvm.functions.Function0
private final static method lambda$lambda$0(): kotlin.Unit
public final inner class Outer$Inner
}
@kotlin.Metadata
public final class Outer {
// source: 'lambdaInInnerClassConstructor.kt'
public method <init>(): void
public final inner class Outer$Inner
}
@@ -0,0 +1,17 @@
@kotlin.Metadata
synthetic final class<null> test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0 {
// source: 'privateInlineSamAdapter.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
enclosing class test/PrivateInlineSamAdapterKt
private synthetic final field <null> function: kotlin.jvm.functions.Function0
inner (anonymous) class test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0
}
@kotlin.Metadata
public final class<null> test/PrivateInlineSamAdapterKt {
// source: 'privateInlineSamAdapter.kt'
private final static <null> method test$lambda$0(): kotlin.Unit
public final static <null> method test(): void
inner (anonymous) class test/PrivateInlineSamAdapterKt$sam$java_lang_Runnable$0
}
@@ -0,0 +1,27 @@
@kotlin.Metadata
synthetic final class A$sam$java_lang_Runnable$0 {
// source: 'reusedSamWrapperClasses.kt'
enclosing class A
private synthetic final field function: kotlin.jvm.functions.Function0
inner (anonymous) class A$sam$java_lang_Runnable$0
method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final method run(): void
}
@kotlin.Metadata
public final class A {
// source: 'reusedSamWrapperClasses.kt'
inner (anonymous) class A$sam$java_lang_Runnable$0
public method <init>(): void
private final static method test1$lambda$0(): kotlin.Unit
public final method test1(): void
}
@kotlin.Metadata
public final class B {
// source: 'reusedSamWrapperClasses.kt'
inner (anonymous) class A$sam$java_lang_Runnable$0
public method <init>(): void
private final static method test2$lambda$0(): kotlin.Unit
public final method test2(): void
}
@@ -0,0 +1,17 @@
@kotlin.Metadata
synthetic final class<null> test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0 {
// source: 'samAdapterInInlineLambda.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
enclosing class test/SamAdapterInInlineLambdaKt
private synthetic final field <null> function: kotlin.jvm.functions.Function0
inner (anonymous) class test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0
}
@kotlin.Metadata
public final class<null> test/SamAdapterInInlineLambdaKt {
// source: 'samAdapterInInlineLambda.kt'
private final static <null> method test$lambda$0(): kotlin.Unit
public final static <null> method test(): void
inner (anonymous) class test/SamAdapterInInlineLambdaKt$sam$java_lang_Runnable$0
}
@@ -0,0 +1,57 @@
@kotlin.Metadata
public final class A {
// source: 'wrapperInlinedFromAnotherClass.kt'
public method <init>(): void
public final @org.jetbrains.annotations.NotNull method test1a(): java.lang.Runnable
public final @org.jetbrains.annotations.NotNull method test1b(): java.lang.Runnable
public final @org.jetbrains.annotations.NotNull method test2a(): java.lang.Runnable
public final @org.jetbrains.annotations.NotNull method test2b(): java.lang.Runnable
private final static method testRunnableSamCtor1$lambda$0(): kotlin.Unit
public final @org.jetbrains.annotations.NotNull method testRunnableSamCtor1(): java.lang.Runnable
private final static method testRunnableSamCtor2$lambda$1(): kotlin.Unit
public final @org.jetbrains.annotations.NotNull method testRunnableSamCtor2(): java.lang.Runnable
}
@kotlin.Metadata
public final class B$runnable1$1 {
// source: 'wrapperInlinedFromAnotherClass.kt'
enclosing method B.runnable1()Ljava/lang/Runnable;
public final static field INSTANCE: B$runnable1$1
inner (anonymous) class B$runnable1$1
static method <clinit>(): void
public method <init>(): void
public final method run(): void
}
@kotlin.Metadata
public final class B$runnable2$1 {
// source: 'wrapperInlinedFromAnotherClass.kt'
enclosing method B.runnable2()Ljava/lang/Runnable;
public final static field INSTANCE: B$runnable2$1
inner (anonymous) class B$runnable2$1
static method <clinit>(): void
public method <init>(): void
public final method run(): void
}
@kotlin.Metadata
public synthetic final class B$sam$i$java_lang_Runnable$0 {
// source: 'wrapperInlinedFromAnotherClass.kt'
enclosing class B
private synthetic final field function: kotlin.jvm.functions.Function0
inner (anonymous) class B$sam$i$java_lang_Runnable$0
public method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final method run(): void
}
@kotlin.Metadata
public final class B {
// source: 'wrapperInlinedFromAnotherClass.kt'
inner (anonymous) class B$runnable1$1
inner (anonymous) class B$runnable2$1
inner (anonymous) class B$sam$i$java_lang_Runnable$0
public method <init>(): void
public final @org.jetbrains.annotations.NotNull method runnable1(): java.lang.Runnable
public final @org.jetbrains.annotations.NotNull method runnable2(): java.lang.Runnable
public final @org.jetbrains.annotations.NotNull method runnableSamCtor(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
}
@@ -0,0 +1,49 @@
@kotlin.Metadata
public final class C$Companion {
// source: 'strictfpFlag.kt'
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
public final strict @kotlin.jvm.JvmStatic method testJvmStatic(): void
public final inner class C$Companion
}
@kotlin.Metadata
public final class C {
// source: 'strictfpFlag.kt'
public final static @org.jetbrains.annotations.NotNull field Companion: C$Companion
static method <clinit>(): void
public method <init>(): void
private final static method lambda$lambda$0(p0: C): kotlin.Unit
public final @org.jetbrains.annotations.NotNull method lambda(): kotlin.jvm.functions.Function0
private final strict method testAccessor(): void
public final strict static @kotlin.jvm.JvmStatic method testJvmStatic(): void
public final inner class C$Companion
}
@kotlin.jvm.JvmInline
@kotlin.Metadata
public final class IC {
// source: 'strictfpFlag.kt'
private final field x: int
private synthetic method <init>(p0: int): void
public synthetic final static method box-impl(p0: int): IC
public static method constructor-impl(p0: int): int
public method equals(p0: java.lang.Object): boolean
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
public final static method equals-impl0(p0: int, p1: int): boolean
public final method getX(): int
public method hashCode(): int
public static method hashCode-impl(p0: int): int
public final strict static method testInlineClassFun-impl(p0: int): void
public method toString(): java.lang.String
public static method toString-impl(p0: int): java.lang.String
public synthetic final method unbox-impl(): int
}
@kotlin.Metadata
public final class StrictfpFlagKt {
// source: 'strictfpFlag.kt'
public synthetic static method testJvmOverloads$default(p0: int, p1: int, p2: java.lang.Object): void
public final static @kotlin.jvm.JvmOverloads method testJvmOverloads(): void
public final strict static @kotlin.jvm.JvmOverloads method testJvmOverloads(p0: int): void
}
@@ -0,0 +1,49 @@
@kotlin.Metadata
public final class C$Companion {
// source: 'synchronizedFlag.kt'
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
public synchronized final @kotlin.jvm.JvmStatic method testJvmStatic(): void
public final inner class C$Companion
}
@kotlin.Metadata
public final class C {
// source: 'synchronizedFlag.kt'
public final static @org.jetbrains.annotations.NotNull field Companion: C$Companion
static method <clinit>(): void
public method <init>(): void
private final static method lambda$lambda$0(p0: C): kotlin.Unit
public final @org.jetbrains.annotations.NotNull method lambda(): kotlin.jvm.functions.Function0
private synchronized final method testAccessor(): void
public synchronized final static @kotlin.jvm.JvmStatic method testJvmStatic(): void
public final inner class C$Companion
}
@kotlin.jvm.JvmInline
@kotlin.Metadata
public final class IC {
// source: 'synchronizedFlag.kt'
private final field x: int
private synthetic method <init>(p0: int): void
public synthetic final static method box-impl(p0: int): IC
public static method constructor-impl(p0: int): int
public method equals(p0: java.lang.Object): boolean
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
public final static method equals-impl0(p0: int, p1: int): boolean
public final method getX(): int
public method hashCode(): int
public static method hashCode-impl(p0: int): int
public synchronized final static method testInlineClassFun-impl(p0: int): void
public method toString(): java.lang.String
public static method toString-impl(p0: int): java.lang.String
public synthetic final method unbox-impl(): int
}
@kotlin.Metadata
public final class SynchronizedFlagKt {
// source: 'synchronizedFlag.kt'
public synthetic static method testJvmOverloads$default(p0: int, p1: int, p2: java.lang.Object): void
public final static @kotlin.jvm.JvmOverloads method testJvmOverloads(): void
public synchronized final static @kotlin.jvm.JvmOverloads method testJvmOverloads(p0: int): void
}
@@ -1,4 +1,5 @@
// !SANITIZE_PARENTHESES
// IGNORE_BACKEND_K1: JVM_IR
class `(X)` {
fun `(Y)`(): String {
@@ -23,4 +24,4 @@ fun box(): String {
// 1 \(Y\)
// JVM_IR_TEMPLATES
// 4 this\$0
// 3 this\$0
@@ -8,7 +8,7 @@ fun box() {
foo(A("O", 123)) { (x, y) -> x + y }
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:3 <init>: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:8 box:
@@ -18,6 +18,16 @@ fun box() {
// test.kt:8 box:
// test.kt:9 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:3 <init>: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:8 box:
// test.kt:5 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:8 box$lambda$0:
// test.kt:5 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:8 box:
// test.kt:9 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:3 <init>: x="O":kotlin.String, y=123:number
@@ -16,7 +16,7 @@ fun box() {
foo(MyPair("X", "Y")) { (x, y) -> x + y }
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:16 box:
// test.kt:3 <init>: x:java.lang.String="X":java.lang.String, y:java.lang.String="Y":java.lang.String
// test.kt:16 box:
@@ -30,6 +30,20 @@ fun box() {
// test.kt:16 box:
// test.kt:17 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:16 box:
// test.kt:3 <init>: x:java.lang.String="X":java.lang.String, y:java.lang.String="Y":java.lang.String
// test.kt:16 box:
// test.kt:13 foo: a:MyPair=MyPair, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:16 box$lambda$0:
// test.kt:5 component1:
// test.kt:16 box$lambda$0:
// test.kt:9 component2:
// test.kt:16 box$lambda$0: x:java.lang.String="O":java.lang.String
// test.kt:13 foo: a:MyPair=MyPair, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:16 box:
// test.kt:17 box:
// EXPECTATIONS JS_IR
// test.kt:16 box:
// test.kt:3 <init>: x="X":kotlin.String, y="Y":kotlin.String
@@ -26,23 +26,15 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:17 box:
// test.kt:4 <init>: x:java.lang.String="X":java.lang.String, y:java.lang.String="Y":java.lang.String
// test.kt:17 box:
// test.kt:14 foo: a:MyPair=MyPair, block:kotlin.jvm.functions.Function1=TestKt$box$1
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:19 invoke:
// EXPECTATIONS FIR JVM_IR
// test.kt:20 invoke:
// EXPECTATIONS JVM_IR
// test.kt:6 component1:
// test.kt:20 invoke:
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:19 invoke: x:java.lang.String="O":java.lang.String
// EXPECTATIONS FIR JVM_IR
// test.kt:22 invoke: x:java.lang.String="O":java.lang.String
// EXPECTATIONS JVM_IR
// test.kt:10 component2:
// test.kt:22 invoke: x:java.lang.String="O":java.lang.String
// test.kt:25 invoke: x:java.lang.String="O":java.lang.String, y:java.lang.String="K":java.lang.String
@@ -50,6 +42,22 @@ fun box() {
// test.kt:17 box:
// test.kt:27 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:17 box:
// test.kt:4 <init>: x:java.lang.String="X":java.lang.String, y:java.lang.String="Y":java.lang.String
// test.kt:17 box:
// test.kt:14 foo: a:MyPair=MyPair, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:20 box$lambda$0:
// test.kt:6 component1:
// test.kt:20 box$lambda$0:
// test.kt:22 box$lambda$0: x:java.lang.String="O":java.lang.String
// test.kt:10 component2:
// test.kt:22 box$lambda$0: x:java.lang.String="O":java.lang.String
// test.kt:25 box$lambda$0: x:java.lang.String="O":java.lang.String, y:java.lang.String="K":java.lang.String
// test.kt:14 foo: a:MyPair=MyPair, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:17 box:
// test.kt:27 box:
// EXPECTATIONS JS_IR
// test.kt:17 box:
// test.kt:4 <init>: x="X":kotlin.String, y="Y":kotlin.String
@@ -20,24 +20,32 @@ fun box() {
return
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:9 box:
// test.kt:4 <init>: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:9 box:
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$box$1
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:11 invoke:
// EXPECTATIONS JVM_IR
// test.kt:12 invoke:
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:11 invoke: x:java.lang.String="O":java.lang.String
// EXPECTATIONS JVM_IR
// test.kt:14 invoke: x:java.lang.String="O":java.lang.String
// test.kt:17 invoke: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 box:
// test.kt:20 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:9 box:
// test.kt:4 <init>: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:9 box:
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:12 box$lambda$0:
// test.kt:14 box$lambda$0: x:java.lang.String="O":java.lang.String
// test.kt:17 box$lambda$0: x:java.lang.String="O":java.lang.String, y:int=123:int
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box:
// test.kt:20 box:
// EXPECTATIONS JS_IR
// test.kt:9 box:
// test.kt:4 <init>: x="O":kotlin.String, y=123:number
@@ -10,7 +10,7 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 invoke: $this$blockFun:java.lang.String="OK":java.lang.String
@@ -18,6 +18,14 @@ fun box() {
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:11 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:10 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:11 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg=Function1
@@ -10,7 +10,7 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:4 foo: block:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 invoke: $this$foo:long=1:long
@@ -18,6 +18,14 @@ fun box() {
// test.kt:8 box:
// test.kt:11 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:4 foo: block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box$lambda$0: $this$foo:long=1:long
// test.kt:4 foo: block:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:8 box:
// test.kt:11 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:4 foo: block=Function1
@@ -10,7 +10,7 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 invoke: $this$blockFun:java.lang.String="OK":java.lang.String
@@ -18,6 +18,14 @@ fun box() {
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:11 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:10 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:11 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg=Function1
@@ -10,7 +10,7 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 invoke: $this$label:java.lang.String="OK":java.lang.String
@@ -18,6 +18,14 @@ fun box() {
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:11 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box$lambda$0: $this$label:java.lang.String="OK":java.lang.String
// test.kt:10 box$lambda$0: $this$label:java.lang.String="OK":java.lang.String
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:11 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg=Function1
@@ -10,7 +10,7 @@ fun box() {
})
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:9 invoke: $this$blockFun:java.lang.String="OK":java.lang.String
@@ -18,6 +18,14 @@ fun box() {
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$box$1
// test.kt:11 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:9 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:10 box$lambda$0: $this$blockFun:java.lang.String="OK":java.lang.String
// test.kt:5 blockFun: blockArg:kotlin.jvm.functions.Function1=TestKt$<lambda>
// test.kt:11 box:
// EXPECTATIONS JS_IR
// test.kt:8 box:
// test.kt:5 blockFun: blockArg=Function1
+19 -1
View File
@@ -23,7 +23,7 @@ fun box() {
}
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:12 box:
// test.kt:4 <init>: x:double=1.0:double, y:java.lang.String="":java.lang.String, z:char=0:char
// test.kt:12 box:
@@ -43,6 +43,24 @@ fun box() {
// test.kt:12 box:
// test.kt:24 box:
// EXPECTATIONS FIR JVM_IR
// test.kt:12 box:
// test.kt:4 <init>: x:double=1.0:double, y:java.lang.String="":java.lang.String, z:char=0:char
// test.kt:12 box:
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function3=TestKt$<lambda>
// test.kt:13 box$lambda$0: w:int=1:int
// test.kt:15 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char
// test.kt:4 <init>: x:double=1.0:double, y:java.lang.String="":java.lang.String, z:char=0:char
// test.kt:15 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char
// test.kt:16 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char, a:double=1.0:double, c:char=0:char
// test.kt:4 <init>: x:double=1.0:double, y:java.lang.String="":java.lang.String, z:char=0:char
// test.kt:16 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char, a:double=1.0:double, c:char=0:char
// test.kt:18 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char, a:double=1.0:double, c:char=0:char, _:java.lang.String="":java.lang.String, d:char=0:char
// test.kt:22 box$lambda$0: w:int=1:int, x:double=1.0:double, y:char=0:char, a:double=1.0:double, c:char=0:char, _:java.lang.String="":java.lang.String, d:char=0:char
// test.kt:6 foo: a:A=A, block:kotlin.jvm.functions.Function3=TestKt$<lambda>
// test.kt:12 box:
// test.kt:24 box:
// EXPECTATIONS JS_IR
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
+4
View File
@@ -12,7 +12,11 @@ fun box() {
// EXPECTATIONS JVM_IR
// test.kt:7 box
// test.kt:4 eval
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:8 invoke
// EXPECTATIONS FIR JVM_IR
// test.kt:8 box$lambda$0
// EXPECTATIONS JVM_IR
// test.kt:4 eval
// test.kt:7 box
// test.kt:10 box
+5
View File
@@ -15,8 +15,13 @@ fun f(block: () -> Unit) {
// test.kt:4 box
// test.kt:5 box
// test.kt:11 f
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:6 invoke
// test.kt:7 invoke
// EXPECTATIONS FIR JVM_IR
// test.kt:6 box$lambda$0
// test.kt:7 box$lambda$0
// EXPECTATIONS JVM_IR
// test.kt:11 f
// test.kt:12 f
// test.kt:8 box
@@ -15,7 +15,7 @@ fun foo(f: () -> Unit) {
f()
}
// EXPECTATIONS JVM_IR
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:5 box
// test.kt:15 foo
// test.kt:6 invoke
@@ -30,6 +30,22 @@ fun foo(f: () -> Unit) {
// test.kt:16 foo
// test.kt:12 box
// EXPECTATIONS FIR JVM_IR
// test.kt:5 box
// test.kt:15 foo
// test.kt:6 box$lambda$0
// test.kt:7 box$lambda$0
// test.kt:15 foo
// test.kt:16 foo
// test.kt:5 box
// test.kt:9 box
// test.kt:15 foo
// test.kt:10 box$lambda$1
// test.kt:11 box$lambda$1
// test.kt:15 foo
// test.kt:16 foo
// test.kt:12 box
// EXPECTATIONS JS_IR
// test.kt:5 box
// test.kt:15 foo
@@ -14,7 +14,11 @@ suspend fun box() {
// EXPECTATIONS JVM_IR
// test.kt:9 box
// test.kt:5 foo
// EXPECTATIONS ClassicFrontend JVM_IR
// test.kt:10 invoke
// EXPECTATIONS FIR JVM_IR
// test.kt:10 box$lambda$0
// EXPECTATIONS JVM_IR
// test.kt:5 foo
// test.kt:9 box
// test.kt:12 box
@@ -191,13 +191,16 @@ class SteppingDebugRunner(testServices: TestServices) : DebugRunner(testServices
override fun storeStep(loggedItems: ArrayList<SteppingTestLoggedData>, event: Event) {
assert(event is LocatableEvent)
val location = (event as LocatableEvent).location()
loggedItems.add(
SteppingTestLoggedData(
val data =
if (isIndyLambda(location)) {
// Invokedynamic lambdas are not synthetic in JDI, and they don't have source information.
SteppingTestLoggedData(-1, true, "<lambda>")
} else SteppingTestLoggedData(
location.lineNumber(),
location.method().isSynthetic,
location.formatAsExpectation()
)
)
loggedItems.add(data)
}
}
@@ -234,12 +237,18 @@ class LocalVariableDebugRunner(testServices: TestServices) : DebugRunner(testSer
// Local variable table completely absent - not distinguished from an empty table.
listOf()
}
loggedItems.add(
SteppingTestLoggedData(
val data =
if (isIndyLambda(location)) {
// Invokedynamic lambdas are not synthetic in JDI, and they don't have source information.
SteppingTestLoggedData(-1, true, "<lambda>")
} else SteppingTestLoggedData(
location.lineNumber(),
false,
location.formatAsExpectation(visibleVars)
)
)
loggedItems.add(data)
}
}
private fun isIndyLambda(location: Location): Boolean =
"$\$Lambda$" in location.declaringType().name()
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.NO_SMAP_DUMP
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.SEPARATE_SMAP_DUMPS
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.model.BinaryArtifacts
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.moduleStructure
@@ -77,7 +78,11 @@ class SMAPDumpHandler(testServices: TestServices) : JvmBinaryArtifactHandler(tes
}
val testDataFile = testServices.moduleStructure.originalTestDataFiles.first()
val expectedFile = testDataFile.withExtension(extension)
val firExpectedFile = testDataFile.withExtension("fir.$extension")
val expectedFile =
if (testServices.moduleStructure.modules.first().frontendKind == FrontendKinds.FIR && firExpectedFile.exists())
firExpectedFile
else testDataFile.withExtension(extension)
assertions.assertEqualsToFile(expectedFile, dumper.generateResultingDump())
if (separateDumpEnabled && isSeparateCompilation) {
@@ -46,10 +46,14 @@ class LocalVariableRecord(
append(variableType)
}
append("=")
append(value)
append(value.toString().normalizeIndyLambdas())
}
}
private fun String.normalizeIndyLambdas(): String =
// Invokedynamic lambdas have an unstable hash in the name.
replace("\\\$Lambda\\\$.*".toRegex(), "<lambda>")
private const val EXPECTATIONS_MARKER = "// EXPECTATIONS"
private const val FORCE_STEP_INTO_MARKER = "// FORCE_STEP_INTO"
@@ -309,6 +309,7 @@ enum class LanguageFeature(
ProhibitDefaultArgumentsInExpectActualizedByFakeOverride(KOTLIN_2_0, kind = BUG_FIX), // KT-62036
DisableCompatibilityModeForNewInference(KOTLIN_2_0, kind = OTHER), // KT-63558 (umbrella), KT-64306, KT-64307, KT-64308
DfaBooleanVariables(KOTLIN_2_0), // KT-25747
LightweightLambdas(KOTLIN_2_0, kind = OTHER), // KT-45375
// 2.1
@@ -355,7 +356,6 @@ enum class LanguageFeature(
// Experimental features
BreakContinueInInlineLambdas(null), // KT-1436
LightweightLambdas(null),
JsEnableExtensionFunctionInExternals(null, kind = OTHER),
PackagePrivateFileClassesWithAllPrivateMembers(null), // Disabled until the breaking change is approved by the committee, see KT-10884.
BooleanElvisBoundSmartCasts(null), // see KT-26357 for details
@@ -0,0 +1,49 @@
================ Step #1 =================
Cleaning output files:
out/production/module/B.class
out/production/module/META-INF/module.kotlin_module
End of files
Compiling files:
src/B.kt
End of files
After build round. Marked as dirty by Kotlin:
src/consumeBExtLambda.kt
src/consumeBLambda.kt
src/useConsumeBExtLambda.kt
src/useConsumeBLambda.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/ConsumeBExtLambdaKt.class
out/production/module/ConsumeBLambdaKt.class
out/production/module/META-INF/module.kotlin_module
out/production/module/UseConsumeBExtLambdaKt.class
out/production/module/UseConsumeBLambdaKt.class
End of files
Compiling files:
src/consumeBExtLambda.kt
src/consumeBLambda.kt
src/useConsumeBExtLambda.kt
src/useConsumeBLambda.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Type mismatch: inferred type is B but A was expected
Type mismatch: inferred type is B but A was expected
================ Step #2 =================
Cleaning output files:
out/production/module/B.class
End of files
Compiling files:
src/B.kt
src/consumeBExtLambda.kt
src/consumeBLambda.kt
src/useConsumeBExtLambda.kt
src/useConsumeBLambda.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,22 @@
================ Step #1 =================
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/inline/InlineKt.class
End of files
Compiling files:
src/inline.kt
End of files
After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/usage/UsageKt.class
End of files
Compiling files:
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,22 @@
================ Step #1 =================
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/Y.class
End of files
Compiling files:
src/fun.kt
End of files
After build round. Marked as dirty by Kotlin:
src/usage.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/X.class
End of files
Compiling files:
src/usage.kt
End of files
Exit code: OK
------------------------------------------
@@ -0,0 +1,11 @@
================ Step #1 =================
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/outer/nested/NestedKt.class
End of files
Compiling files:
src/nested.kt
End of files
Exit code: OK
------------------------------------------
@@ -22,4 +22,4 @@ Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
@@ -0,0 +1,24 @@
================ Step #1 =================
Cleaning output files:
out/production/module/SamInterface.class
End of files
Exit code: NOTHING_DONE
------------------------------------------
Compiling files:
src/SamInterface.java
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/UsageWithFunctionExpressionKt.class
out/production/module/UsageWithFunctionLiteralKt.class
End of files
Compiling files:
src/usageWithFunctionExpression.kt
src/usageWithFunctionLiteral.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
@@ -22,4 +22,4 @@ Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
@@ -0,0 +1,24 @@
================ Step #1 =================
Cleaning output files:
out/production/module/SamInterface.class
End of files
Exit code: NOTHING_DONE
------------------------------------------
Compiling files:
src/SamInterface.java
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/UsageWithFunctionExpressionKt.class
out/production/module/UsageWithFunctionLiteralKt.class
End of files
Compiling files:
src/usageWithFunctionExpression.kt
src/usageWithFunctionLiteral.kt
End of files
Exit code: ABORT
------------------------------------------
COMPILATION FAILED
Interface SamInterface does not have constructors
Interface SamInterface does not have constructors
@@ -0,0 +1,21 @@
================ Step #1 =================
Cleaning output files:
out/production/module/SamInterface.class
End of files
Exit code: NOTHING_DONE
------------------------------------------
Compiling files:
src/SamInterface.java
End of files
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/UsageWithFunctionExpressionKt.class
out/production/module/UsageWithFunctionLiteralKt.class
End of files
Compiling files:
src/usageWithFunctionExpression.kt
src/usageWithFunctionLiteral.kt
End of files
Exit code: OK
------------------------------------------
@@ -212,7 +212,7 @@ class MetadataSmokeTest {
fun testDisplayNameSample() {
class A {}
val b: (Int) -> Int = fun(x: Int) = x
val b: (Int) -> Int = @JvmSerializableLambda fun(x: Int) = x
assertEquals("Class .kotlinx/metadata/test/MetadataSmokeTest\$testDisplayNameSample\$A", displayName(A::class.java.getMetadata()))
assertEquals("Lambda <no name provided>", displayName(b::class.java.getMetadata()))
@@ -15,7 +15,7 @@ import kotlin.test.assertFailsWith
class WritersContractTest {
val classMd = WritersContractTest::class.java.getMetadata()
val l: () -> Unit = {}
val l: () -> Unit = @JvmSerializableLambda {}
val lambdaMd = l::class.java.getMetadata()
val fileFacadeMd = Class.forName("kotlinx.metadata.test.testdata.FileFacade").getMetadata()
val multiFileFacadeMd = Class.forName("kotlinx.metadata.test.testdata.MultiFileClassFacade").getMetadata()
@@ -53,25 +53,10 @@ package {
}
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$1.class
// ------------------------------------------
lambda {
// signature: invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
local final fun kotlin/Nothing.<anonymous>(it: kotlin/Nothing): kotlin/Any
}
synthetic class
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$2.class
// ------------------------------------------
lambda {
// signature: invoke(LInv;LInv;)LInv;
local final fun kotlin/Nothing.<anonymous>(it: kotlin/Nothing): Inv<out kotlin/Any>
}
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$d$2.class
// ------------------------------------------
lambda {
// signature: invoke()Ljava/lang/Object;
local final fun <anonymous>(): kotlin/Any
}
synthetic class
// Inv.class
// ------------------------------------------
public final class Inv<T#0 /* T */> : kotlin/Any {
-14
View File
@@ -7,20 +7,6 @@ package {
// module name: test-module
}
// LambdaKt$test$f$1.class
// ------------------------------------------
lambda {
// signature: invoke()V
local final fun <anonymous>(): kotlin/Unit
}
// LambdaKt$test$g$1.class
// ------------------------------------------
lambda {
// signature: invoke(Lkotlin/Unit;[ILjava/util/Set;)Ljava/lang/String;
local final fun kotlin/Unit.<no name provided>(s: kotlin/IntArray?, t: kotlin/collections/Set<kotlin/Double>): kotlin/String
}
// META-INF/test-module.kotlin_module
// ------------------------------------------
module {
@@ -188,18 +188,6 @@ public final class IntrinsicsKt : java/lang/Object {
}
}
final class SerializableObject$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static SerializableObject$1 INSTANCE
static void <clinit>()
void <init>()
public final kotlinx.serialization.KSerializer invoke()
public java.lang.Object invoke()
}
public final class SerializableObject : java/lang/Object {
private final static kotlin.Lazy $cachedSerializer$delegate
@@ -209,6 +197,8 @@ public final class SerializableObject : java/lang/Object {
private void <init>()
private final static kotlinx.serialization.KSerializer _init_$_anonymous_()
private final kotlinx.serialization.KSerializer get$cachedSerializer()
public final kotlinx.serialization.KSerializer serializer()
@@ -276,82 +276,6 @@ public final class Container : java/lang/Object {
}
}
final class Result$Companion$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Companion$1 INSTANCE
static void <clinit>() {
NEW (Result$Companion$1)
DUP
INVOKESPECIAL (Result$Companion$1, <init>, ()V)
PUTSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;)
RETURN
}
void <init>() {
LABEL (L0)
ALOAD (0)
ICONST_0
INVOKESPECIAL (kotlin/jvm/internal/Lambda, <init>, (I)V)
RETURN
LABEL (L1)
}
public final kotlinx.serialization.KSerializer invoke() {
LABEL (L0)
NEW (kotlinx/serialization/SealedClassSerializer)
DUP
LDC (Result)
LDC (LResult;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
ICONST_2
ANEWARRAY (kotlin/reflect/KClass)
ASTORE (1)
ALOAD (1)
ICONST_0
LDC (LResult$Err;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE
ALOAD (1)
ICONST_1
LDC (LResult$OK;)
INVOKESTATIC (kotlin/jvm/internal/Reflection, getOrCreateKotlinClass, (Ljava/lang/Class;)Lkotlin/reflect/KClass;)
AASTORE
ALOAD (1)
ICONST_2
ANEWARRAY (kotlinx/serialization/KSerializer)
ASTORE (1)
ALOAD (1)
ICONST_0
NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP
LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
ICONST_0
ANEWARRAY (java/lang/annotation/Annotation)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V)
AASTORE
ALOAD (1)
ICONST_1
GETSTATIC (Result$OK$$serializer, INSTANCE, LResult$OK$$serializer;)
AASTORE
ALOAD (1)
ICONST_0
ANEWARRAY (java/lang/annotation/Annotation)
INVOKESPECIAL (kotlinx/serialization/SealedClassSerializer, <init>, (Ljava/lang/String;Lkotlin/reflect/KClass;[Lkotlin/reflect/KClass;[Lkotlinx/serialization/KSerializer;[Ljava/lang/annotation/Annotation;)V)
CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN
LABEL (L1)
}
public java.lang.Object invoke() {
LABEL (L0)
ALOAD (0)
INVOKEVIRTUAL (Result$Companion$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
}
public final class Result$Companion : java/lang/Object {
private void <init>() {
LABEL (L0)
@@ -380,51 +304,6 @@ public final class Result$Companion : java/lang/Object {
}
}
final class Result$Err$1 : kotlin/jvm/internal/Lambda, kotlin/jvm/functions/Function0 {
public final static Result$Err$1 INSTANCE
static void <clinit>() {
NEW (Result$Err$1)
DUP
INVOKESPECIAL (Result$Err$1, <init>, ()V)
PUTSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;)
RETURN
}
void <init>() {
LABEL (L0)
ALOAD (0)
ICONST_0
INVOKESPECIAL (kotlin/jvm/internal/Lambda, <init>, (I)V)
RETURN
LABEL (L1)
}
public final kotlinx.serialization.KSerializer invoke() {
LABEL (L0)
LINENUMBER (15)
NEW (kotlinx/serialization/internal/ObjectSerializer)
DUP
LDC (Result.Err)
GETSTATIC (Result$Err, INSTANCE, LResult$Err;)
ICONST_0
ANEWARRAY (java/lang/annotation/Annotation)
INVOKESPECIAL (kotlinx/serialization/internal/ObjectSerializer, <init>, (Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/annotation/Annotation;)V)
CHECKCAST (kotlinx/serialization/KSerializer)
ARETURN
LABEL (L1)
}
public java.lang.Object invoke() {
LABEL (L0)
LINENUMBER (15)
ALOAD (0)
INVOKEVIRTUAL (Result$Err$1, invoke, ()Lkotlinx/serialization/KSerializer;)
ARETURN
LABEL (L1)
}
}
public final class Result$Err : Result {
private final static kotlin.Lazy $cachedSerializer$delegate
@@ -438,8 +317,7 @@ public final class Result$Err : Result {
LABEL (L0)
LINENUMBER (15)
GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
GETSTATIC (Result$Err$1, INSTANCE, LResult$Err$1;)
CHECKCAST (kotlin/jvm/functions/Function0)
INVOKEDYNAMIC (invoke, ()Lkotlin/jvm/functions/Function0;, java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; (6), ()Ljava/lang/Object;, Result$Err._init_$_anonymous_()Lkotlinx/serialization/KSerializer; (6), ()Lkotlinx/serialization/KSerializer;)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result$Err, $cachedSerializer$delegate, Lkotlin/Lazy;)
RETURN
@@ -455,6 +333,8 @@ public final class Result$Err : Result {
LABEL (L1)
}
private final static kotlinx.serialization.KSerializer _init_$_anonymous_()
private final kotlinx.serialization.KSerializer get$cachedSerializer()
public final kotlinx.serialization.KSerializer serializer() {
@@ -727,8 +607,7 @@ public abstract class Result : java/lang/Object, X {
INVOKESPECIAL (Result$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Result, Companion, LResult$Companion;)
GETSTATIC (kotlin/LazyThreadSafetyMode, PUBLICATION, Lkotlin/LazyThreadSafetyMode;)
GETSTATIC (Result$Companion$1, INSTANCE, LResult$Companion$1;)
CHECKCAST (kotlin/jvm/functions/Function0)
INVOKEDYNAMIC (invoke, ()Lkotlin/jvm/functions/Function0;, java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; (6), ()Ljava/lang/Object;, Result._init_$_anonymous_()Lkotlinx/serialization/KSerializer; (6), ()Lkotlinx/serialization/KSerializer;)
INVOKESTATIC (kotlin/LazyKt, lazy, (Lkotlin/LazyThreadSafetyMode;Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;)
PUTSTATIC (Result, $cachedSerializer$delegate, Lkotlin/Lazy;)
RETURN
@@ -760,6 +639,8 @@ public abstract class Result : java/lang/Object, X {
LABEL (L1)
}
private final static kotlinx.serialization.KSerializer _init_$_anonymous_()
public final static kotlin.Lazy access$get$cachedSerializer$delegate$cp()
public void def()