Commit aea931e 1 parent d159e1f commit aea931e Copy full SHA for aea931e
File tree 5 files changed +28
-11
lines changed
mirai-console/src/internal
mirai-core-utils/src/commonMain/kotlin
5 files changed +28
-11
lines changed Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ package net.mamoe.console.integrationtest
12
12
import net.mamoe.mirai.console.extension.PluginComponentStorage
13
13
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription
14
14
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin
15
+ import net.mamoe.mirai.utils.createInstanceOrNull
15
16
16
17
/* *
17
18
* IntegrationTest 测试单元 (Plugin mode)
@@ -29,7 +30,6 @@ public abstract class AbstractTestPointAsPlugin : AbstractTestPoint() {
29
30
protected open fun KotlinPlugin.onDisable0 () {}
30
31
31
32
32
-
33
33
@Suppress(" unused" )
34
34
@PublishedApi
35
35
internal abstract class TestPointPluginImpl (
@@ -43,7 +43,9 @@ public abstract class AbstractTestPointAsPlugin : AbstractTestPoint() {
43
43
@PublishedApi
44
44
internal constructor (
45
45
impl: Class <out AbstractTestPointAsPlugin >
46
- ) : this (impl.kotlin.objectInstance ? : impl.newInstance())
46
+ ) : this (
47
+ impl.kotlin.createInstanceOrNull() ? : impl.getConstructor().newInstance()
48
+ )
47
49
48
50
override fun onDisable () {
49
51
try {
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ package net.mamoe.mirai.console.internal.data
13
13
14
14
import net.mamoe.mirai.console.data.PluginData
15
15
import net.mamoe.mirai.console.data.ValueName
16
+ import net.mamoe.mirai.utils.createInstanceOrNull
16
17
import kotlin.reflect.*
17
18
import kotlin.reflect.full.findAnnotation
18
19
import kotlin.reflect.full.isSubclassOf
@@ -63,14 +64,6 @@ internal fun KType.classifierAsKClassOrNull() = when (val t = classifier) {
63
64
else -> null
64
65
} as KClass <Any >?
65
66
66
- @JvmSynthetic
67
- internal fun <T : Any > KClass<T>.createInstanceOrNull (): T ? {
68
- val noArgsConstructor = constructors.singleOrNull { it.parameters.all(KParameter ::isOptional) }
69
- ? : return null
70
-
71
- return noArgsConstructor.callBy(emptyMap())
72
- }
73
-
74
67
@JvmSynthetic
75
68
internal fun KClass <* >.findValueName (): String =
76
69
findAnnotation<ValueName >()?.value
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ import net.mamoe.mirai.console.data.PluginData
16
16
import net.mamoe.mirai.console.data.SerializableValue.Companion.serializableValueWith
17
17
import net.mamoe.mirai.console.data.SerializerAwareValue
18
18
import net.mamoe.mirai.console.data.valueFromKType
19
+ import net.mamoe.mirai.utils.createInstanceOrNull
19
20
import java.util.concurrent.ConcurrentHashMap
20
21
import java.util.concurrent.ConcurrentMap
21
22
import kotlin.contracts.contract
Original file line number Diff line number Diff line change 12
12
package net.mamoe.mirai.console.internal.util
13
13
14
14
import net.mamoe.mirai.console.internal.data.cast
15
- import net.mamoe.mirai.console.internal.data.createInstanceOrNull
16
15
import net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl
16
+ import net.mamoe.mirai.utils.createInstanceOrNull
17
17
import java.lang.reflect.Modifier
18
18
import java.util.*
19
19
import kotlin.reflect.KClass
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2019-2021 Mamoe Technologies and contributors.
3
+ *
4
+ * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
5
+ * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
6
+ *
7
+ * https://github.com/mamoe/mirai/blob/dev/LICENSE
8
+ */
9
+
10
+ package net.mamoe.mirai.utils
11
+
12
+ import kotlin.reflect.KClass
13
+ import kotlin.reflect.KParameter
14
+
15
+ public fun <T : Any > KClass<T>.createInstanceOrNull (): T ? {
16
+ objectInstance?.let { return it }
17
+ val noArgsConstructor = constructors.singleOrNull { it.parameters.all(KParameter ::isOptional) }
18
+ ? : return null
19
+
20
+ return noArgsConstructor.callBy(emptyMap())
21
+ }
You can’t perform that action at this time.
0 commit comments