Skip to content

Commit e7e6607

Browse files
authored
Merge pull request #68 from ForteScarlet/optimize-#67
optimize: `override` for synthetic functions
2 parents e166bcf + 8e7da52 commit e7e6607

File tree

15 files changed

+2758
-34
lines changed

15 files changed

+2758
-34
lines changed

buildSrc/src/main/kotlin/IProject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ object IProject : ProjectDetail() {
1111

1212
// Remember the libs.versions.toml!
1313
val ktVersion = "2.1.0-Beta1"
14-
val pluginVersion = "0.9.2"
14+
val pluginVersion = "0.9.3"
1515

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

compiler/suspend-transform-plugin/src/main/kotlin/love/forte/plugin/suspendtrans/fir/SuspendTransformFirTransformer.kt

Lines changed: 285 additions & 31 deletions
Large diffs are not rendered by default.

compiler/suspend-transform-plugin/src/test-gen/love/forte/plugin/suspendtrans/runners/CodeGenTestRunnerGenerated.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,16 @@ public void testTypeAttr() {
4949
public void testOpt() {
5050
runTest("src/testData/codegen/opt.kt");
5151
}
52+
53+
@Test
54+
@TestMetadata("implOverriden.kt")
55+
public void testImplOverriden() {
56+
runTest("src/testData/codegen/implOverriden.kt");
57+
}
58+
59+
@Test
60+
@TestMetadata("implOverridenGeneric.kt")
61+
public void testImplOverridenGeneric() {
62+
runTest("src/testData/codegen/implOverridenGeneric.kt");
63+
}
5264
}
Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
public abstract interface FooInterface1 : java/lang/Object {
2+
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)
3+
4+
public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)
5+
6+
public abstract java.lang.Object data3(int p0, kotlin.coroutines.Continuation p1)
7+
}
8+
9+
final class FooInterface1Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
10+
final int $value
11+
12+
int label
13+
14+
final FooInterface1Impl this$0
15+
16+
void <init>(FooInterface1Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)
17+
18+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
19+
20+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
21+
22+
public java.lang.Object invoke(java.lang.Object p1)
23+
24+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
25+
}
26+
27+
final class FooInterface1Impl$data3Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
28+
final int $this_data3Blocking
29+
30+
int label
31+
32+
final FooInterface1Impl this$0
33+
34+
void <init>(FooInterface1Impl $receiver, int $receiver, kotlin.coroutines.Continuation $completion)
35+
36+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
37+
38+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
39+
40+
public java.lang.Object invoke(java.lang.Object p1)
41+
42+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
43+
}
44+
45+
final class FooInterface1Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
46+
int label
47+
48+
final FooInterface1Impl this$0
49+
50+
void <init>(FooInterface1Impl $receiver, kotlin.coroutines.Continuation $completion)
51+
52+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
53+
54+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
55+
56+
public java.lang.Object invoke(java.lang.Object p1)
57+
58+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
59+
}
60+
61+
public final class FooInterface1Impl : java/lang/Object, FooInterface1 {
62+
public void <init>()
63+
64+
public java.lang.Object data(kotlin.coroutines.Continuation $completion)
65+
66+
public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)
67+
68+
public java.lang.String data2Blocking(int value)
69+
70+
public java.lang.Object data3(int $this$data3, kotlin.coroutines.Continuation $completion)
71+
72+
public java.lang.String data3Blocking(int $this$data3Blocking)
73+
74+
public java.lang.String dataBlocking()
75+
}
76+
77+
public final class FooInterface2$DefaultImpls : java/lang/Object {
78+
public static java.lang.String data2Blocking(FooInterface2 $this, int value)
79+
80+
public static java.lang.String data3Blocking(FooInterface2 $this, int $receiver)
81+
82+
public static java.lang.String dataBlocking(FooInterface2 $this)
83+
}
84+
85+
public abstract interface FooInterface2 : java/lang/Object {
86+
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)
87+
88+
public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)
89+
90+
public abstract java.lang.String data2Blocking(int p0)
91+
92+
public abstract java.lang.Object data3(int p0, kotlin.coroutines.Continuation p1)
93+
94+
public abstract java.lang.String data3Blocking(int p0)
95+
96+
public abstract java.lang.String dataBlocking()
97+
}
98+
99+
final class FooInterface2Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
100+
final int $value
101+
102+
int label
103+
104+
final FooInterface2Impl this$0
105+
106+
void <init>(FooInterface2Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)
107+
108+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
109+
110+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
111+
112+
public java.lang.Object invoke(java.lang.Object p1)
113+
114+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
115+
}
116+
117+
final class FooInterface2Impl$data3Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
118+
final int $this_data3Blocking
119+
120+
int label
121+
122+
final FooInterface2Impl this$0
123+
124+
void <init>(FooInterface2Impl $receiver, int $receiver, kotlin.coroutines.Continuation $completion)
125+
126+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
127+
128+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
129+
130+
public java.lang.Object invoke(java.lang.Object p1)
131+
132+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
133+
}
134+
135+
final class FooInterface2Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
136+
int label
137+
138+
final FooInterface2Impl this$0
139+
140+
void <init>(FooInterface2Impl $receiver, kotlin.coroutines.Continuation $completion)
141+
142+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
143+
144+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
145+
146+
public java.lang.Object invoke(java.lang.Object p1)
147+
148+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
149+
}
150+
151+
public final class FooInterface2Impl : java/lang/Object, FooInterface2 {
152+
public void <init>()
153+
154+
public java.lang.Object data(kotlin.coroutines.Continuation $completion)
155+
156+
public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)
157+
158+
public java.lang.String data2Blocking(int value)
159+
160+
public java.lang.Object data3(int $this$data3, kotlin.coroutines.Continuation $completion)
161+
162+
public java.lang.String data3Blocking(int $this$data3Blocking)
163+
164+
public java.lang.String dataBlocking()
165+
}
166+
167+
public final class FooInterface3$DefaultImpls : java/lang/Object {
168+
public static java.lang.String getDataBlocking(FooInterface3 $this)
169+
}
170+
171+
public abstract interface FooInterface3 : java/lang/Object {
172+
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)
173+
174+
public abstract java.lang.String getDataBlocking()
175+
}
176+
177+
final class FooInterface3Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
178+
int label
179+
180+
final FooInterface3Impl this$0
181+
182+
void <init>(FooInterface3Impl $receiver, kotlin.coroutines.Continuation $completion)
183+
184+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
185+
186+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
187+
188+
public java.lang.Object invoke(java.lang.Object p1)
189+
190+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
191+
}
192+
193+
public final class FooInterface3Impl : java/lang/Object, FooInterface3 {
194+
public void <init>()
195+
196+
public java.lang.Object data(kotlin.coroutines.Continuation $completion)
197+
198+
public java.lang.String getDataBlocking()
199+
200+
public static void getDataBlocking$annotations()
201+
}
202+
203+
public final class FooInterface4$DefaultImpls : java/lang/Object {
204+
public static java.lang.String data2Blocking(FooInterface4 $this, int value)
205+
206+
public static java.lang.String dataBlocking(FooInterface4 $this)
207+
}
208+
209+
final class FooInterface4$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
210+
final int $value
211+
212+
int label
213+
214+
final FooInterface4 this$0
215+
216+
void <init>(FooInterface4 $receiver, int $value, kotlin.coroutines.Continuation $completion)
217+
218+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
219+
220+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
221+
222+
public java.lang.Object invoke(java.lang.Object p1)
223+
224+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
225+
}
226+
227+
final class FooInterface4$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
228+
int label
229+
230+
final FooInterface4 this$0
231+
232+
void <init>(FooInterface4 $receiver, kotlin.coroutines.Continuation $completion)
233+
234+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
235+
236+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
237+
238+
public java.lang.Object invoke(java.lang.Object p1)
239+
240+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
241+
}
242+
243+
public abstract interface FooInterface4 : java/lang/Object {
244+
public abstract java.lang.Object data(kotlin.coroutines.Continuation p0)
245+
246+
public abstract java.lang.Object data2(int p0, kotlin.coroutines.Continuation p1)
247+
248+
public abstract java.lang.String data2Blocking(int p0)
249+
250+
public abstract java.lang.String dataBlocking()
251+
}
252+
253+
final class FooInterface4Impl$data2Blocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
254+
final int $value
255+
256+
int label
257+
258+
final FooInterface4Impl this$0
259+
260+
void <init>(FooInterface4Impl $receiver, int $value, kotlin.coroutines.Continuation $completion)
261+
262+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
263+
264+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
265+
266+
public java.lang.Object invoke(java.lang.Object p1)
267+
268+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
269+
}
270+
271+
final class FooInterface4Impl$dataBlocking$1 : kotlin/coroutines/jvm/internal/SuspendLambda, kotlin/jvm/functions/Function1 {
272+
int label
273+
274+
final FooInterface4Impl this$0
275+
276+
void <init>(FooInterface4Impl $receiver, kotlin.coroutines.Continuation $completion)
277+
278+
public final kotlin.coroutines.Continuation create(kotlin.coroutines.Continuation $completion)
279+
280+
public final java.lang.Object invoke(kotlin.coroutines.Continuation p1)
281+
282+
public java.lang.Object invoke(java.lang.Object p1)
283+
284+
public final java.lang.Object invokeSuspend(java.lang.Object $result)
285+
}
286+
287+
public final class FooInterface4Impl : java/lang/Object, FooInterface4 {
288+
public void <init>()
289+
290+
public java.lang.Object data(kotlin.coroutines.Continuation $completion)
291+
292+
public java.lang.Object data2(int value, kotlin.coroutines.Continuation $completion)
293+
294+
public java.lang.String data2Blocking(int value)
295+
296+
public java.lang.String dataBlocking()
297+
}

0 commit comments

Comments
 (0)