JVM_IR KT-43877 fix generic signatures for SAM-converted lambdas

This commit is contained in:
Dmitry Petrov
2020-12-11 15:41:02 +03:00
parent dc11c2de77
commit b7330a9e14
56 changed files with 1014 additions and 59 deletions
@@ -0,0 +1,12 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun <T> foo(): T = null!!
fun <T> genericSam(): T = expectsSam(::foo)
@@ -0,0 +1,36 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
synthetic final class<Lkotlin/jvm/internal/FunctionReferenceImpl;Lkotlin/jvm/functions/Function0<TT;>;> TKt$genericSam$1 {
// source: 't.kt'
public final <()TT;> method invoke(): java.lang.Object
static <null> method <clinit>(): void
<null> method <init>(): void
enclosing method TKt.genericSam()Ljava/lang/Object;
public final static field <null> INSTANCE: TKt$genericSam$1
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public <null> method equals(p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public <null> method getFunctionDelegate(): kotlin.Function
public <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>()TT;> method foo(): java.lang.Object
public final static <<T:Ljava/lang/Object;>()TT;> method genericSam(): java.lang.Object
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
inner (anonymous) class TKt$genericSam$1
}
@@ -0,0 +1,28 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
synthetic final class<Ljava/lang/Object;LSam<TT;>;Lkotlin/jvm/internal/FunctionAdapter;> TKt$genericSam$1 {
// source: 't.kt'
public final @org.jetbrains.annotations.NotNull <()Lkotlin/Function<*>;> method getFunctionDelegate(): kotlin.Function
public final <()TT;> method get(): java.lang.Object
static <null> method <clinit>(): void
<null> method <init>(): void
public final <null> method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean
public final <null> method hashCode(): int
enclosing method TKt.genericSam()Ljava/lang/Object;
public final static field <null> INSTANCE: TKt$genericSam$1
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>()TT;> method foo(): java.lang.Object
public final static <<T:Ljava/lang/Object;>()TT;> method genericSam(): java.lang.Object
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
inner (anonymous) class TKt$genericSam$1
}
@@ -0,0 +1,18 @@
// WITH_SIGNATURES
// FILE: t.kt
fun <T> foo(): T = null!!
fun <T> genericSam(): T = J.g(::foo)
// FILE: J.java
public class J {
static <T> T g(Sam<T> s) {
return s.get();
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,26 @@
@kotlin.Metadata
synthetic final class<Lkotlin/jvm/internal/FunctionReferenceImpl;Lkotlin/jvm/functions/Function0<TT;>;> TKt$genericSam$1 {
// source: 't.kt'
public final <()TT;> method invoke(): java.lang.Object
static <null> method <clinit>(): void
<null> method <init>(): void
enclosing method TKt.genericSam()Ljava/lang/Object;
public final static field <null> INSTANCE: TKt$genericSam$1
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>()TT;> method foo(): java.lang.Object
public final static <<T:Ljava/lang/Object;>()TT;> method genericSam(): java.lang.Object
inner (anonymous) class TKt$genericSam$1
}
@@ -0,0 +1,18 @@
@kotlin.Metadata
synthetic final class<Ljava/lang/Object;LSam<TT;>;> TKt$genericSam$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
static <null> method <clinit>(): void
<null> method <init>(): void
enclosing method TKt.genericSam()Ljava/lang/Object;
public final static field <null> INSTANCE: TKt$genericSam$1
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>()TT;> method foo(): java.lang.Object
public final static <<T:Ljava/lang/Object;>()TT;> method genericSam(): java.lang.Object
inner (anonymous) class TKt$genericSam$1
}
@@ -0,0 +1,12 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun foo(): String = ""
fun specializedSam(): String = expectsSam(::foo)
@@ -0,0 +1,37 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public <null> method equals(p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public <null> method getFunctionDelegate(): kotlin.Function
public <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
synthetic final class<Lkotlin/jvm/internal/FunctionReferenceImpl;Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
static <null> method <clinit>(): void
<null> method <init>(): void
public synthetic bridge <null> method invoke(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method invoke(): java.lang.String
enclosing method TKt.specializedSam()Ljava/lang/String;
public final static field <null> INSTANCE: TKt$specializedSam$1
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static @org.jetbrains.annotations.NotNull <null> method foo(): java.lang.String
public final static @org.jetbrains.annotations.NotNull <null> method specializedSam(): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,29 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
synthetic final class<Ljava/lang/Object;LSam<Ljava/lang/String;>;Lkotlin/jvm/internal/FunctionAdapter;> TKt$specializedSam$1 {
// source: 't.kt'
public final @org.jetbrains.annotations.NotNull <()Lkotlin/Function<*>;> method getFunctionDelegate(): kotlin.Function
static <null> method <clinit>(): void
<null> method <init>(): void
public final <null> method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean
public synthetic bridge <null> method get(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method get(): java.lang.String
public final <null> method hashCode(): int
enclosing method TKt.specializedSam()Ljava/lang/String;
public final static field <null> INSTANCE: TKt$specializedSam$1
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static @org.jetbrains.annotations.NotNull <null> method foo(): java.lang.String
public final static @org.jetbrains.annotations.NotNull <null> method specializedSam(): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,18 @@
// WITH_SIGNATURES
// FILE: t.kt
fun foo(): String = ""
fun specializedSam(): String = J.g(::foo)
// FILE: J.java
public class J {
static <T> T g(Sam<T> s) {
return s.get();
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,27 @@
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
synthetic final class<Lkotlin/jvm/internal/FunctionReferenceImpl;Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
static <null> method <clinit>(): void
<null> method <init>(): void
public synthetic bridge <null> method invoke(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method invoke(): java.lang.String
enclosing method TKt.specializedSam()Ljava/lang/String;
public final static field <null> INSTANCE: TKt$specializedSam$1
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <null> method foo(): java.lang.String
public final static @org.jetbrains.annotations.NotNull <null> method specializedSam(): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,19 @@
@kotlin.Metadata
synthetic final class<Ljava/lang/Object;LSam<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
static <null> method <clinit>(): void
<null> method <init>(): void
public synthetic bridge <null> method get(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method get(): java.lang.String
enclosing method TKt.specializedSam()Ljava/lang/String;
public final static field <null> INSTANCE: TKt$specializedSam$1
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <null> method foo(): java.lang.String
public final static @org.jetbrains.annotations.NotNull <null> method specializedSam(): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,10 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun <T> genericSam(f: () -> T): T = expectsSam(f)
@@ -0,0 +1,23 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public <null> method equals(p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public <null> method getFunctionDelegate(): kotlin.Function
public <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
}
@@ -0,0 +1,25 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
public final @org.jetbrains.annotations.NotNull <()Lkotlin/Function<*>;> method getFunctionDelegate(): kotlin.Function
<null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public final <null> method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public final <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
final inner class TKt$sam$Sam$0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
final inner class TKt$sam$Sam$0
}
@@ -0,0 +1,16 @@
// WITH_SIGNATURES
// FILE: t.kt
fun <T> genericSam(f: () -> T): T = J.g(f)
// FILE: J.java
public class J {
static <T> T g(Sam<T> s) {
return s.get();
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,13 @@
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
}
@@ -0,0 +1,15 @@
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
final inner class TKt$sam$Sam$0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
final inner class TKt$sam$Sam$0
}
@@ -0,0 +1,10 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun <T> genericSamGet(f: () -> T): T = expectsSam({ f() })
@@ -0,0 +1,23 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSamGet$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSamGet(Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
synthetic final field <null> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSamGet$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSamGet(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
inner (anonymous) class TKt$genericSamGet$1
}
@@ -0,0 +1,23 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSamGet$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<(Lkotlin/jvm/functions/Function0<+TT;>;)V> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSamGet(Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
synthetic final field <Lkotlin/jvm/functions/Function0<TT;>;> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSamGet$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSamGet(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
inner (anonymous) class TKt$genericSamGet$1
}
@@ -0,0 +1,22 @@
// WITH_SIGNATURES
// FILE: t.kt
fun <T> genericSam(f: () -> T): Sam<T> = J.sam({ f() })
fun <T> genericSamGet(f: () -> T): T = J.get({ f() })
// FILE: J.java
public class J {
static <T> T get(Sam<T> s) {
return s.get();
}
static <T> Sam<T> sam(Sam<T> s) {
return s;
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,28 @@
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSam$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSam(Lkotlin/jvm/functions/Function0;)LSam;
synthetic final field <null> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSamGet$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSamGet(Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
synthetic final field <null> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSamGet$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)LSam<TT;>;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): Sam
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSamGet(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
inner (anonymous) class TKt$genericSam$1
inner (anonymous) class TKt$genericSamGet$1
}
@@ -0,0 +1,28 @@
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSam$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<(Lkotlin/jvm/functions/Function0<+TT;>;)V> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSam(Lkotlin/jvm/functions/Function0;)LSam;
synthetic final field <Lkotlin/jvm/functions/Function0<TT;>;> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSam$1
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<TT;>;> TKt$genericSamGet$1 {
// source: 't.kt'
public final <()TT;> method get(): java.lang.Object
<(Lkotlin/jvm/functions/Function0<+TT;>;)V> method <init>(p0: kotlin.jvm.functions.Function0): void
enclosing method TKt.genericSamGet(Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
synthetic final field <Lkotlin/jvm/functions/Function0<TT;>;> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$genericSamGet$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)LSam<TT;>;> method genericSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): Sam
public final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<+TT;>;)TT;> method genericSamGet(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Object
inner (anonymous) class TKt$genericSam$1
inner (anonymous) class TKt$genericSamGet$1
}
@@ -0,0 +1,10 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun specializedSam(f: () -> String) = expectsSam({ f() })
@@ -0,0 +1,24 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic bridge <null> method get(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method get(): java.lang.String
enclosing method TKt.specializedSam(Lkotlin/jvm/functions/Function0;)Ljava/lang/String;
synthetic final field <null> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,24 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
<(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)V> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic bridge <null> method get(): java.lang.Object
public final @org.jetbrains.annotations.NotNull <null> method get(): java.lang.String
enclosing method TKt.specializedSam(Lkotlin/jvm/functions/Function0;)Ljava/lang/String;
synthetic final field <Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,16 @@
// WITH_SIGNATURES
// FILE: t.kt
fun specializedSam(f: () -> String) = J.g({ f() })
// FILE: J.java
public class J {
static <T> T g(Sam<T> s) {
return s.get();
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,17 @@
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic bridge <null> method get(): java.lang.Object
public final <null> method get(): java.lang.String
enclosing method TKt.specializedSam(Lkotlin/jvm/functions/Function0;)Ljava/lang/String;
synthetic final field <null> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,17 @@
@kotlin.Metadata
final class<<T:Ljava/lang/Object;>Ljava/lang/Object;LSam<Ljava/lang/String;>;> TKt$specializedSam$1 {
// source: 't.kt'
<(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)V> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic bridge <null> method get(): java.lang.Object
public final <null> method get(): java.lang.String
enclosing method TKt.specializedSam(Lkotlin/jvm/functions/Function0;)Ljava/lang/String;
synthetic final field <Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;> $f: kotlin.jvm.functions.Function0
inner (anonymous) class TKt$specializedSam$1
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
inner (anonymous) class TKt$specializedSam$1
}
@@ -0,0 +1,20 @@
// WITH_SIGNATURES
package test
inline fun <reified T> makeRunnable(noinline lambda: ()->Unit) : Runnable {
return Runnable(lambda)
}
inline fun makeRunnable2(noinline lambda: ()->Unit) : Runnable {
return Runnable(lambda)
}
fun noInline(lambda: ()->Unit) : Runnable {
return Runnable(lambda)
}
fun noInline2(lambda: ()->Unit) : Runnable {
return Runnable(lambda)
}
@@ -0,0 +1,24 @@
@kotlin.Metadata
public final class<null> test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0 {
// source: 'samAdapterAndInlinedOne.kt'
public <null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
final class<null> test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0 {
// source: 'samAdapterAndInlinedOne.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> test/SamAdapterAndInlinedOneKt {
// source: 'samAdapterAndInlinedOne.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method makeRunnable2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public synthetic final static <<T:Ljava/lang/Object;>(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method makeRunnable(p0: kotlin.jvm.functions.Function0): java.lang.Runnable
}
@@ -0,0 +1,28 @@
@kotlin.Metadata
public final class<null> test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0 {
// source: 'samAdapterAndInlinedOne.kt'
public <null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
private synthetic final field <null> function: kotlin.jvm.functions.Function0
public final inner class test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0
}
@kotlin.Metadata
final class<null> test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0 {
// source: 'samAdapterAndInlinedOne.kt'
<null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method run(): void
private synthetic final field <null> function: kotlin.jvm.functions.Function0
final inner class test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0
}
@kotlin.Metadata
public final class<null> test/SamAdapterAndInlinedOneKt {
// source: 'samAdapterAndInlinedOne.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method makeRunnable2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Lkotlin/Unit;>;)Ljava/lang/Runnable;> method noInline2(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.Runnable
public synthetic final static <null> method makeRunnable(p0: kotlin.jvm.functions.Function0): java.lang.Runnable
final inner class test/SamAdapterAndInlinedOneKt$sam$java_lang_Runnable$0
public final inner class test/SamAdapterAndInlinedOneKt$sam$i$java_lang_Runnable$0
}
@@ -0,0 +1,10 @@
// WITH_SIGNATURES
// FILE: t.kt
fun interface Sam<T> {
fun get(): T
}
fun <T> expectsSam(sam: Sam<T>) = sam.get()
fun specializedSam(f: () -> String) = expectsSam(f)
@@ -0,0 +1,23 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public <null> method equals(p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public <null> method getFunctionDelegate(): kotlin.Function
public <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
}
@@ -0,0 +1,25 @@
@kotlin.Metadata
public interface<<T:Ljava/lang/Object;>Ljava/lang/Object;> Sam {
// source: 't.kt'
public abstract <()TT;> method get(): java.lang.Object
}
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
public final @org.jetbrains.annotations.NotNull <()Lkotlin/Function<*>;> method getFunctionDelegate(): kotlin.Function
<null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public final <null> method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean
public synthetic final <null> method get(): java.lang.Object
public final <null> method hashCode(): int
private synthetic final field <null> function: kotlin.jvm.functions.Function0
final inner class TKt$sam$Sam$0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static @org.jetbrains.annotations.NotNull <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
public final static <<T:Ljava/lang/Object;>(LSam<TT;>;)TT;> method expectsSam(@org.jetbrains.annotations.NotNull p0: Sam): java.lang.Object
final inner class TKt$sam$Sam$0
}
@@ -0,0 +1,16 @@
// WITH_SIGNATURES
// FILE: t.kt
fun specializedSam(f: () -> String) = J.g(f)
// FILE: J.java
public class J {
static <T> T g(Sam<T> s) {
return s.get();
}
}
// FILE: Sam.java
public interface Sam<T> {
T get();
}
@@ -0,0 +1,13 @@
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
}
@@ -0,0 +1,15 @@
@kotlin.Metadata
final class<null> TKt$sam$Sam$0 {
// source: 't.kt'
<null> method <init>(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): void
public synthetic final <null> method get(): java.lang.Object
private synthetic final field <null> function: kotlin.jvm.functions.Function0
final inner class TKt$sam$Sam$0
}
@kotlin.Metadata
public final class<null> TKt {
// source: 't.kt'
public final static <(Lkotlin/jvm/functions/Function0<Ljava/lang/String;>;)Ljava/lang/String;> method specializedSam(@org.jetbrains.annotations.NotNull p0: kotlin.jvm.functions.Function0): java.lang.String
final inner class TKt$sam$Sam$0
}