From bc08edb181faaeea80f3f48b8d762727d3f74424 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:05:25 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 399a86a..b08c74d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "com.mapk" -version = "0.9" +version = "0.10" java { sourceCompatibility = JavaVersion.VERSION_1_8 From fa3909e753922d2939a4d94971ab65b147caa73a Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:18:49 +0900 Subject: [PATCH 2/7] =?UTF-8?q?Kotlin=E3=81=AE=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b08c74d..901c23a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ plugins { id("maven") id("java") - id("org.jetbrains.kotlin.jvm") version "1.3.70" + id("org.jetbrains.kotlin.jvm") version "1.3.71" id("org.jlleitschuh.gradle.ktlint") version "9.2.1" } @@ -18,7 +18,7 @@ buildscript { } dependencies { - classpath(kotlin("gradle-plugin", version = "1.3.70")) + classpath(kotlin("gradle-plugin", version = "1.3.71")) } } From e745c82d3cbb3b95add998f95f68ccb97f41216d Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:19:01 +0900 Subject: [PATCH 3/7] =?UTF-8?q?JUnit5=E3=81=AE=E3=82=A2=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 901c23a..f087be2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,7 +33,7 @@ dependencies { implementation(group = "org.jetbrains", name = "annotations", version = "19.0.0") // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter - testImplementation(group = "org.junit.jupiter", name = "junit-jupiter", version = "5.6.0") { + testImplementation(group = "org.junit.jupiter", name = "junit-jupiter", version = "5.6.1") { exclude(group = "org.junit.vintage", module = "junit-vintage-engine") } // https://mvnrepository.com/artifact/io.mockk/mockk From 7b9031e3b60191693a8d58d130deea86147c05aa Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:20:09 +0900 Subject: [PATCH 4/7] =?UTF-8?q?Mutable=E3=81=AA=E3=81=BE=E3=81=BE=E3=81=AB?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84=E3=81=9F=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/ArgumentBucket.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt index 3454817..a0a6afa 100644 --- a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt +++ b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt @@ -37,10 +37,10 @@ class ArgumentBucket internal constructor( override val entries: Set> get() = keyArray.mapNotNull { it?.let { Entry(it, valueArray[it.index]) } }.toSet() - override val keys: MutableSet - get() = keyArray.filterNotNull().toMutableSet() - override val values: MutableCollection - get() = valueArray.filterIndexed { i, _ -> initializationStatusManager.isInitialized(i) }.toMutableList() + override val keys: Set + get() = keyArray.filterNotNull().toSet() + override val values: Collection + get() = valueArray.filterIndexed { i, _ -> initializationStatusManager.isInitialized(i) } fun putIfAbsent(key: KParameter, value: Any?) { val index = key.index From bc5c721cbe12315ccf7902a15f0703363207211d Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:25:11 +0900 Subject: [PATCH 5/7] =?UTF-8?q?KParameter=E3=81=AF=E5=88=9D=E6=9C=9F?= =?UTF-8?q?=E5=8C=96=E6=99=82=E7=82=B9=E3=81=A7=E7=A2=BA=E5=AE=9A=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=E3=81=9F=E3=82=81=E3=80=81=E7=84=A1?= =?UTF-8?q?=E9=A7=84=E3=81=AA=E7=8A=B6=E6=85=8B=E3=82=92=E6=8C=81=E3=81=9F?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/ArgumentBucket.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt index a0a6afa..8e519f8 100644 --- a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt +++ b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt @@ -4,7 +4,7 @@ import java.util.Objects import kotlin.reflect.KParameter class ArgumentBucket internal constructor( - private val keyArray: Array, + private val keyList: List, internal val valueArray: Array, private val isRequireNonNull: List, private val initializationStatusManager: InitializationStatusManager @@ -22,8 +22,7 @@ class ArgumentBucket internal constructor( override val size: Int get() = count override fun containsKey(key: KParameter): Boolean { - // NOTE: もしかしたらステータスを見た方が速いかも - return keyArray[key.index] != null + return initializationStatusManager.isInitialized(key.index) } override fun containsValue(value: Any?): Boolean = valueArray.any { Objects.equals(value, it) } @@ -36,9 +35,12 @@ class ArgumentBucket internal constructor( override fun isEmpty(): Boolean = count == 0 override val entries: Set> - get() = keyArray.mapNotNull { it?.let { Entry(it, valueArray[it.index]) } }.toSet() + get() = keyList + .filter { initializationStatusManager.isInitialized(it.index) } + .map { Entry(it, valueArray[it.index]) } + .toSet() override val keys: Set - get() = keyArray.filterNotNull().toSet() + get() = keyList.filter { initializationStatusManager.isInitialized(it.index) }.toSet() override val values: Collection get() = valueArray.filterIndexed { i, _ -> initializationStatusManager.isInitialized(i) } @@ -53,7 +55,6 @@ class ArgumentBucket internal constructor( count += 1 initializationStatusManager.put(index) - keyArray[index] = key valueArray[index] = value return From 963e0c829b2de2c555f6ccb84d131acf101de79a Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:29:16 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=83=BC?= =?UTF-8?q?=E3=82=BF=E3=81=AE=E5=88=9D=E6=9C=9F=E5=8C=96=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/BucketGenerator.kt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/mapk/core/BucketGenerator.kt b/src/main/kotlin/com/mapk/core/BucketGenerator.kt index 572f46e..57cc0a9 100644 --- a/src/main/kotlin/com/mapk/core/BucketGenerator.kt +++ b/src/main/kotlin/com/mapk/core/BucketGenerator.kt @@ -3,10 +3,9 @@ package com.mapk.core import com.mapk.annotations.KParameterRequireNonNull import kotlin.reflect.KParameter -internal class BucketGenerator(parameters: List, instancePair: Pair?) { +internal class BucketGenerator(private val parameters: List, instance: Any?) { private val initializationStatus: Array private val isRequireNonNull: List - private val keyArray: Array private val valueArray: Array init { @@ -16,12 +15,10 @@ internal class BucketGenerator(parameters: List, instancePair: Pair< } initializationStatus = Array(capacity) { false } - keyArray = arrayOfNulls(capacity) valueArray = arrayOfNulls(capacity) - if (instancePair != null) { - keyArray[0] = instancePair.first - valueArray[0] = instancePair.second + if (instance != null) { + valueArray[0] = instance initializationStatus[0] = true } else { initializationStatus[0] = false @@ -30,7 +27,7 @@ internal class BucketGenerator(parameters: List, instancePair: Pair< fun generate(): ArgumentBucket { return ArgumentBucket( - keyArray.clone(), + parameters, valueArray.clone(), isRequireNonNull, InitializationStatusManager(initializationStatus.clone()) From 13cfc429a6f30c66f668a628170548fb2f31116c Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 4 Apr 2020 01:33:47 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=E3=83=90=E3=82=B1=E3=83=84=E3=82=B8?= =?UTF-8?q?=E3=82=A7=E3=83=8D=E3=83=AC=E3=83=BC=E3=82=BF=E3=81=AE=E5=88=9D?= =?UTF-8?q?=E6=9C=9F=E5=8C=96=E6=96=B9=E6=B3=95=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/KFunctionForCall.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt index a8b7050..e15bf29 100644 --- a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt +++ b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt @@ -20,9 +20,8 @@ class KFunctionForCall(internal val function: KFunction, instance: Any? = // この関数には確実にアクセスするためアクセシビリティ書き換え function.isAccessible = true - generator = BucketGenerator( - parameters, instance?.let { parameters.first { param -> param.kind == KParameter.Kind.INSTANCE } to it } - ) + // パラメータのチェックを済ませてから初期化しないとエラーになる + generator = BucketGenerator(parameters, instance) } fun getArgumentBucket(): ArgumentBucket = generator.generate()