Skip to content

Commit

Permalink
Merge pull request #68 from ForteScarlet/optimize-#67
Browse files Browse the repository at this point in the history
optimize: `override` for synthetic functions
  • Loading branch information
ForteScarlet authored Oct 5, 2024
2 parents e166bcf + 8e7da52 commit e7e6607
Show file tree
Hide file tree
Showing 15 changed files with 2,758 additions and 34 deletions.
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/IProject.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ object IProject : ProjectDetail() {

// Remember the libs.versions.toml!
val ktVersion = "2.1.0-Beta1"
val pluginVersion = "0.9.2"
val pluginVersion = "0.9.3"

override val version: String = "$ktVersion-$pluginVersion"

Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,16 @@ public void testTypeAttr() {
public void testOpt() {
runTest("src/testData/codegen/opt.kt");
}

@Test
@TestMetadata("implOverriden.kt")
public void testImplOverriden() {
runTest("src/testData/codegen/implOverriden.kt");
}

@Test
@TestMetadata("implOverridenGeneric.kt")
public void testImplOverridenGeneric() {
runTest("src/testData/codegen/implOverridenGeneric.kt");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
public abstract interface FooInterface1 : java/lang/Object {
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)

public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)

public abstract java.lang.Object data3(int p0, kotlin.coroutines.Continuation p1)
}

final class FooInterface1Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $value

int label

final FooInterface1Impl this$0

void <init>(FooInterface1Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface1Impl$data3Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $this_data3Blocking

int label

final FooInterface1Impl this$0

void <init>(FooInterface1Impl $receiver, int $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface1Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
int label

final FooInterface1Impl this$0

void <init>(FooInterface1Impl $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

public final class FooInterface1Impl : java/lang/Object, FooInterface1 {
public void <init>()

public java.lang.Object data(kotlin.coroutines.Continuation $completion)

public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)

public java.lang.String data2Blocking(int value)

public java.lang.Object data3(int $this$data3, kotlin.coroutines.Continuation $completion)

public java.lang.String data3Blocking(int $this$data3Blocking)

public java.lang.String dataBlocking()
}

public final class FooInterface2$DefaultImpls : java/lang/Object {
public static java.lang.String data2Blocking(FooInterface2 $this, int value)

public static java.lang.String data3Blocking(FooInterface2 $this, int $receiver)

public static java.lang.String dataBlocking(FooInterface2 $this)
}

public abstract interface FooInterface2 : java/lang/Object {
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)

public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)

public abstract java.lang.String data2Blocking(int p0)

public abstract java.lang.Object data3(int p0, kotlin.coroutines.Continuation p1)

public abstract java.lang.String data3Blocking(int p0)

public abstract java.lang.String dataBlocking()
}

final class FooInterface2Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $value

int label

final FooInterface2Impl this$0

void <init>(FooInterface2Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface2Impl$data3Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $this_data3Blocking

int label

final FooInterface2Impl this$0

void <init>(FooInterface2Impl $receiver, int $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface2Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
int label

final FooInterface2Impl this$0

void <init>(FooInterface2Impl $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

public final class FooInterface2Impl : java/lang/Object, FooInterface2 {
public void <init>()

public java.lang.Object data(kotlin.coroutines.Continuation $completion)

public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)

public java.lang.String data2Blocking(int value)

public java.lang.Object data3(int $this$data3, kotlin.coroutines.Continuation $completion)

public java.lang.String data3Blocking(int $this$data3Blocking)

public java.lang.String dataBlocking()
}

public final class FooInterface3$DefaultImpls : java/lang/Object {
public static java.lang.String getDataBlocking(FooInterface3 $this)
}

public abstract interface FooInterface3 : java/lang/Object {
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)

public abstract java.lang.String getDataBlocking()
}

final class FooInterface3Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
int label

final FooInterface3Impl this$0

void <init>(FooInterface3Impl $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

public final class FooInterface3Impl : java/lang/Object, FooInterface3 {
public void <init>()

public java.lang.Object data(kotlin.coroutines.Continuation $completion)

public java.lang.String getDataBlocking()

public static void getDataBlocking$annotations()
}

public final class FooInterface4$DefaultImpls : java/lang/Object {
public static java.lang.String data2Blocking(FooInterface4 $this, int value)

public static java.lang.String dataBlocking(FooInterface4 $this)
}

final class FooInterface4$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $value

int label

final FooInterface4 this$0

void <init>(FooInterface4 $receiver, int $value, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface4$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
int label

final FooInterface4 this$0

void <init>(FooInterface4 $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

public abstract interface FooInterface4 : java/lang/Object {
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)

public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)

public abstract java.lang.String data2Blocking(int p0)

public abstract java.lang.String dataBlocking()
}

final class FooInterface4Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
final int $value

int label

final FooInterface4Impl this$0

void <init>(FooInterface4Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

final class FooInterface4Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
int label

final FooInterface4Impl this$0

void <init>(FooInterface4Impl $receiver, kotlin.coroutines.Continuation $completion)

public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)

public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)

public java.lang.Object invoke(java.lang.Object p1)

public final java.lang.Object invokeSuspend(java.lang.Object $result)
}

public final class FooInterface4Impl : java/lang/Object, FooInterface4 {
public void <init>()

public java.lang.Object data(kotlin.coroutines.Continuation $completion)

public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)

public java.lang.String data2Blocking(int value)

public java.lang.String dataBlocking()
}
Loading

0 comments on commit e7e6607

Please sign in to comment.