From a7eaf788ac09d7de17ea8464054aa622676ce034 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sun, 17 May 2020 15:55:11 +0800 Subject: [PATCH] Rearrange implementations --- .../codegen/SettingValueUseSiteCodegen.kt | 32 +++++++++++++++++++ .../mirai/console/codegen/ValuesCodegen.kt | 4 +-- .../mamoe/mirai/console/setting/Setting.kt | 22 ------------- .../mamoe/mirai/console/setting/ValueImpl.kt | 7 ++-- .../mamoe/mirai/console/setting/_Setting.kt | 22 ++++++++++++- .../net/mamoe/mirai/console/setting/_Value.kt | 7 ---- 6 files changed, 59 insertions(+), 35 deletions(-) diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/SettingValueUseSiteCodegen.kt b/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/SettingValueUseSiteCodegen.kt index adf4ba0ac..00aa5a915 100644 --- a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/SettingValueUseSiteCodegen.kt +++ b/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/SettingValueUseSiteCodegen.kt @@ -9,6 +9,7 @@ package net.mamoe.mirai.console.codegen +import org.intellij.lang.annotations.Language import java.io.File @@ -48,6 +49,9 @@ import kotlinx.serialization.builtins.* """.trimIndent() fun genAllValueUseSite(): String = buildString { + fun appendln(@Language("kt") code: String) { + this.appendln(code.trimIndent()) + } // PRIMITIVE for (number in NUMBERS + OTHER_PRIMITIVES) { appendln(genValueUseSite(number, number)) @@ -73,6 +77,7 @@ fun genAllValueUseSite(): String = buildString { // MUTABLE LIST / MUTABLE SET for (collectionName in listOf("List", "Set")) { for (number in NUMBERS + OTHER_PRIMITIVES) { + appendln() appendln( """ @JvmName("valueMutable") @@ -81,6 +86,33 @@ fun genAllValueUseSite(): String = buildString { ) } } + + // SPECIAL + appendln() + appendln( + """ + fun Setting.value(default: T): Value { + require(this::class != default::class) { + "Recursive nesting is prohibited" + } + return valueImpl(default) + } + + inline fun Setting.value(default: T, crossinline initializer: T.() -> Unit): Value = + value(default).also { it.value.apply(initializer) } + + inline fun Setting.value(default: List): SettingListValue = valueImpl(default) + + @JvmName("valueMutable") + inline fun Setting.value(default: MutableList): MutableSettingListValue = valueImpl(default) + + + inline fun Setting.value(default: Set): SettingSetValue = valueImpl(default) + + @JvmName("valueMutable") + inline fun Setting.value(default: MutableSet): MutableSettingSetValue = valueImpl(default) + """ + ) } fun genValueUseSite(kotlinTypeName: String, miraiValueName: String): String = diff --git a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuesCodegen.kt b/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuesCodegen.kt index d0d984b07..3b3d095c9 100644 --- a/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuesCodegen.kt +++ b/backend/codegen/src/main/kotlin/net/mamoe/mirai/console/codegen/ValuesCodegen.kt @@ -21,7 +21,7 @@ fun main() { }.writeText(genPublicApi()) } -internal const val COPYRIGHT = """ +internal val COPYRIGHT = """ /* * Copyright 2020 Mamoe Technologies and contributors. * @@ -30,7 +30,7 @@ internal const val COPYRIGHT = """ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ -""" +""".trim() internal val NUMBERS = listOf( "Int", diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/Setting.kt b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/Setting.kt index 44e76ff49..ed4373690 100644 --- a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/Setting.kt +++ b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/Setting.kt @@ -45,25 +45,3 @@ abstract class Setting : AbstractSetting() { @Suppress("UNCHECKED_CAST") val T.serializer: KSerializer get() = kotlinSerializer as KSerializer - - -fun Setting.value(default: T): Value { - require(this::class != default::class) { - "Recursive nesting is prohibited" - } - return valueImpl(default) -} - -inline fun Setting.value(default: T, crossinline initializer: T.() -> Unit): Value = - value(default).also { it.value.apply(initializer) } - -inline fun Setting.value(default: List): SettingListValue = valueImpl(default) - -@JvmName("valueMutable") -inline fun Setting.value(default: MutableList): MutableSettingListValue = valueImpl(default) - - -inline fun Setting.value(default: Set): SettingSetValue = valueImpl(default) - -@JvmName("valueMutable") -inline fun Setting.value(default: MutableSet): MutableSettingSetValue = valueImpl(default) diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/ValueImpl.kt b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/ValueImpl.kt index d384e9b74..0331ad96e 100644 --- a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/ValueImpl.kt +++ b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/ValueImpl.kt @@ -33,6 +33,7 @@ internal inline fun Setting.valueImpl( ): MutableSettingListValue = valueImpl(default, T::class.createInstance().serializer) +/* @PublishedApi @JvmName("valueImpl1") internal fun Setting.valueImpl( @@ -40,7 +41,7 @@ internal fun Setting.valueImpl( valueMapper: (T) -> Value, elementSerializer: KSerializer ): MutableListValue = valueImpl(default.mapTo(mutableListOf(), valueMapper), valueMapper, elementSerializer) - +*/ internal fun Setting.valueImpl( default: MutableList>, valueMapper: (T) -> Value, @@ -225,7 +226,7 @@ internal inline fun Setting.valueImpl( default: MutableSet ): MutableSettingSetValue = valueImpl(default, T::class.createInstance().serializer) - +/* @JvmName("valueImpl1") @PublishedApi internal fun Setting.valueImpl( @@ -233,7 +234,7 @@ internal fun Setting.valueImpl( valueMapper: (T) -> Value, elementSerializer: KSerializer ): MutableSetValue = valueImpl(default.mapTo(mutableSetOf(), valueMapper), valueMapper, elementSerializer) - +*/ @JvmName("valueImplMutable") internal fun Setting.valueImpl( default: MutableSet>, diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Setting.kt b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Setting.kt index ec6c3e656..2f4b80a48 100644 --- a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Setting.kt +++ b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Setting.kt @@ -1,4 +1,3 @@ - /* * Copyright 2020 Mamoe Technologies and contributors. * @@ -116,3 +115,24 @@ fun Setting.value(default: MutableSet): MutableCharSetValue = valueImpl(de @JvmName("valueMutable") fun Setting.value(default: MutableSet): MutableStringSetValue = valueImpl(default) +fun Setting.value(default: T): Value { + require(this::class != default::class) { + "Recursive nesting is prohibited" + } + return valueImpl(default) +} + +inline fun Setting.value(default: T, crossinline initializer: T.() -> Unit): Value = + value(default).also { it.value.apply(initializer) } + +inline fun Setting.value(default: List): SettingListValue = valueImpl(default) + +@JvmName("valueMutable") +inline fun Setting.value(default: MutableList): MutableSettingListValue = valueImpl(default) + + +inline fun Setting.value(default: Set): SettingSetValue = valueImpl(default) + +@JvmName("valueMutable") +inline fun Setting.value(default: MutableSet): MutableSettingSetValue = valueImpl(default) + diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Value.kt b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Value.kt index a28b5e9f4..1aa6600b5 100644 --- a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Value.kt +++ b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/setting/_Value.kt @@ -62,31 +62,24 @@ sealed class PrimitiveArrayValue : ArrayValue() abstract class IntArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class ShortArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class ByteArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class LongArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class FloatArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class DoubleArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class BooleanArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() } - abstract class CharArrayValue internal constructor() : PrimitiveArrayValue(), Iterable { override fun iterator(): Iterator = this.value.iterator() }