1
1
package love.forte.plugin.suspendtrans
2
2
3
+ data class FunctionInfo (
4
+ val packageName : String ,
5
+ val className : String? ,
6
+ val functionName : String ,
7
+ )
8
+
9
+ data class ClassInfo @JvmOverloads constructor(
10
+ val packageName : String ,
11
+ val className : String ,
12
+ val local : Boolean = false
13
+ )
3
14
4
15
/* *
5
16
*
6
17
* @author ForteScarlet
7
18
*/
8
- open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled : Boolean = true , defaultJvm : Jvm = Jvm (), defaultJs : Js = Js ()) {
19
+ open class SuspendTransformConfiguration @JvmOverloads constructor(
20
+ var enabled : Boolean = true ,
21
+ defaultJvm : Jvm = Jvm (),
22
+ defaultJs : Js = Js ()
23
+ ) {
9
24
var jvm: Jvm = defaultJvm
10
25
private set
11
26
@@ -34,6 +49,16 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
34
49
*/
35
50
var jvmBlockingMarkAnnotation = MarkAnnotation (TO_JVM_BLOCKING_ANNOTATION_NAME )
36
51
52
+
53
+ /* *
54
+ * 如果 [jvmBlockingFunctionName] 不为null,则会尝试优先解析。
55
+ *
56
+ * @see jvmBlockingFunctionInfo
57
+ */
58
+ @Deprecated(" Use jvmBlockingFunctionInfo" )
59
+ var jvmBlockingFunctionName: String? = null // JVM_RUN_IN_BLOCKING_FUNCTION_NAME
60
+
61
+
37
62
/* *
38
63
* 格式必须为
39
64
*
@@ -43,13 +68,26 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
43
68
* }
44
69
* ```
45
70
*/
46
- var jvmBlockingFunctionName: String = JVM_RUN_IN_BLOCKING_FUNCTION_NAME
71
+ var jvmBlockingFunctionInfo: FunctionInfo = FunctionInfo (
72
+ JVM_RUN_IN_BLOCKING_FUNCTION_PACKAGE_NAME ,
73
+ JVM_RUN_IN_BLOCKING_FUNCTION_CLASS_NAME ,
74
+ JVM_RUN_IN_BLOCKING_FUNCTION_FUNCTION_NAME ,
75
+ )
47
76
48
77
/* *
49
78
* 标记为异步函数的标记注解。
50
79
*/
51
80
var jvmAsyncMarkAnnotation = MarkAnnotation (TO_JVM_ASYNC_ANNOTATION_NAME )
52
81
82
+ /* *
83
+ * 如果 [jvmAsyncFunctionName] 不为null,则会尝试优先解析。
84
+ *
85
+ * @see jvmAsyncFunctionInfo
86
+ *
87
+ */
88
+ @Deprecated(" Use jvmBlockingFunctionInfo" )
89
+ var jvmAsyncFunctionName: String? = null // JVM_RUN_IN_ASYNC_FUNCTION_NAME
90
+
53
91
/* *
54
92
* 格式必须为:
55
93
*
@@ -73,21 +111,43 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
73
111
* 当前类型不属于 [kotlinx.coroutines.CoroutineScope] 类型时不会使用此参数。
74
112
*
75
113
*/
76
- var jvmAsyncFunctionName: String = JVM_RUN_IN_ASYNC_FUNCTION_NAME
114
+ var jvmAsyncFunctionInfo: FunctionInfo = FunctionInfo (
115
+ JVM_RUN_IN_ASYNC_FUNCTION_PACKAGE_NAME ,
116
+ JVM_RUN_IN_ASYNC_FUNCTION_CLASS_NAME ,
117
+ JVM_RUN_IN_ASYNC_FUNCTION_FUNCTION_NAME ,
118
+ )
119
+
120
+
121
+ /* *
122
+ * @see originFunctionIncludeAnnotationInfos
123
+ */
124
+ @Deprecated(" Use 'originFunctionIncludeAnnotationInfos'" )
125
+ var originFunctionIncludeAnnotations: List <IncludeAnnotation >? = null
126
+ // listOf(
127
+ // IncludeAnnotation("kotlin.jvm.JvmSynthetic")
128
+ // )
77
129
78
130
/* *
79
131
* 要在被合成的源函数上追加的注解。必须保证不存在参数。
80
132
*/
81
- var originFunctionIncludeAnnotations : List <IncludeAnnotation > = listOf (
82
- IncludeAnnotation ( " kotlin.jvm. JvmSynthetic" )
133
+ var originFunctionIncludeAnnotationInfos : List <IncludeAnnotationInfo > = listOf (
134
+ IncludeAnnotationInfo ( ClassInfo ( " kotlin.jvm" , " JvmSynthetic" ) )
83
135
)
84
136
137
+ /* *
138
+ * @see syntheticBlockingFunctionIncludeAnnotationInfos
139
+ */
140
+ @Deprecated(" Use 'syntheticBlockingFunctionIncludeAnnotationInfos'" )
141
+ var syntheticBlockingFunctionIncludeAnnotations: List <IncludeAnnotation >? = null
142
+ // listOf(
143
+ // IncludeAnnotation("love.forte.plugin.suspendtrans.annotation.Api4J")
144
+ // )
145
+
85
146
/* *
86
147
* 要在合成出来的 blocking 函数上追加的额外注解。(不需要指定 `@Generated`)。
87
- *
88
148
*/
89
- var syntheticBlockingFunctionIncludeAnnotations : List <IncludeAnnotation > = listOf (
90
- IncludeAnnotation ( " love.forte.plugin.suspendtrans.annotation. Api4J" )
149
+ var syntheticBlockingFunctionIncludeAnnotationInfos : List <IncludeAnnotationInfo > = listOf (
150
+ IncludeAnnotationInfo ( ClassInfo ( " love.forte.plugin.suspendtrans.annotation" , " Api4J" ) )
91
151
)
92
152
93
153
/* *
@@ -107,8 +167,17 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
107
167
* 要在合成出来的 async 函数上追加的额外注解。(不需要指定 `@Generated`)。
108
168
*
109
169
*/
110
- var syntheticAsyncFunctionIncludeAnnotations: List <IncludeAnnotation > = listOf (
111
- IncludeAnnotation (" love.forte.plugin.suspendtrans.annotation.Api4J" )
170
+ @Deprecated(" Use 'syntheticAsyncFunctionIncludeAnnotationInfos'" )
171
+ var syntheticAsyncFunctionIncludeAnnotations: List <IncludeAnnotation >? = null
172
+ // listOf(
173
+ // IncludeAnnotation("love.forte.plugin.suspendtrans.annotation.Api4J")
174
+ // )
175
+ /* *
176
+ * 要在合成出来的 async 函数上追加的额外注解。(不需要指定 `@Generated`)。
177
+ *
178
+ */
179
+ var syntheticAsyncFunctionIncludeAnnotationInfos: List <IncludeAnnotationInfo > = listOf (
180
+ IncludeAnnotationInfo (ClassInfo (" love.forte.plugin.suspendtrans.annotation" , " Api4J" ))
112
181
)
113
182
114
183
@@ -136,6 +205,13 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
136
205
* JS platform config
137
206
*/
138
207
open class Js {
208
+
209
+ /* *
210
+ * @see jsPromiseFunctionInfo
211
+ */
212
+ @Deprecated(" Unused" )
213
+ var jsPromiseFunctionName: String? = null // JS_RUN_IN_ASYNC_FUNCTION_NAME
214
+
139
215
/* *
140
216
* 格式必须为
141
217
* ```kotlin
@@ -144,7 +220,11 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
144
220
* }
145
221
* ```
146
222
*/
147
- var jsPromiseFunctionName: String = JS_RUN_IN_ASYNC_FUNCTION_NAME
223
+ var jsPromiseFunctionInfo: FunctionInfo = FunctionInfo (
224
+ JS_RUN_IN_ASYNC_FUNCTION_PACKAGE_NAME ,
225
+ JS_RUN_IN_ASYNC_FUNCTION_CLASS_NAME ,
226
+ JS_RUN_IN_ASYNC_FUNCTION_FUNCTION_NAME ,
227
+ )
148
228
149
229
150
230
/* *
@@ -191,6 +271,10 @@ open class SuspendTransformConfiguration @JvmOverloads constructor(var enabled:
191
271
var name : String , var repeatable : Boolean = false
192
272
)
193
273
274
+ data class IncludeAnnotationInfo (
275
+ var classInfo : ClassInfo , var repeatable : Boolean = false
276
+ )
277
+
194
278
data class ExcludeAnnotation (val name : String )
195
279
196
280
class MarkAnnotation (
0 commit comments