From 22cb67feabc9a0767b88b62d2cd0bb735affc2c6 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Mon, 2 Mar 2020 01:09:33 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=E5=BC=95=E6=95=B00=E3=81=AE=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=81=AF=E3=81=93=E3=81=AE=E6=99=82=E7=82=B9=E3=81=A7?= =?UTF-8?q?=E5=BC=BE=E3=81=8F=E5=BF=85=E8=A6=81=E3=81=8C=E6=9C=89=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=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 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt index 566f79e..012f148 100644 --- a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt +++ b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt @@ -11,6 +11,9 @@ class KFunctionForCall(private val function: KFunction, instance: Any? = n fun getArgumentBucket(): ArgumentBucket = originalArgumentBucket.clone() init { + if (parameters.isEmpty() || (instance != null && parameters.size == 1)) + throw IllegalArgumentException("This function is not require arguments.") + // この関数には確実にアクセスするためアクセシビリティ書き換え function.isAccessible = true originalArgumentBucket = if (instance != null) { From dd0bf1356f18def3aa9098e026b88a7200a1dbb2 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Mon, 2 Mar 2020 01:21:38 +0900 Subject: [PATCH 2/6] =?UTF-8?q?bucket=E3=81=AF=E3=83=A2=E3=82=B8=E3=83=A5?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E5=A4=96=E3=81=A7=E5=8F=82=E7=85=A7=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=81=A8=E5=9B=B0=E3=82=8B=E3=81=9F=E3=82=81?= =?UTF-8?q?=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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt index 3b09578..92fbcb8 100644 --- a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt +++ b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt @@ -1,7 +1,7 @@ package com.mapk.core class ArgumentBucket( - val bucket: Array, + internal val bucket: Array, private var initializeStatus: Int, private val initializeMask: List, // clone時の再計算を避けるため1回で済むようにデフォルト値化 From 8d3f3ee9991b8e471eae095a9a3d787d3dd5d2b6 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Mon, 2 Mar 2020 01:31:19 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E9=96=A2=E6=95=B0=E5=86=85=E3=82=92?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/KFunctionForCall.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt index 012f148..cfc8281 100644 --- a/src/main/kotlin/com/mapk/core/KFunctionForCall.kt +++ b/src/main/kotlin/com/mapk/core/KFunctionForCall.kt @@ -8,8 +8,6 @@ class KFunctionForCall(private val function: KFunction, instance: Any? = n val parameters: List = function.parameters private val originalArgumentBucket: ArgumentBucket - fun getArgumentBucket(): ArgumentBucket = originalArgumentBucket.clone() - init { if (parameters.isEmpty() || (instance != null && parameters.size == 1)) throw IllegalArgumentException("This function is not require arguments.") @@ -35,6 +33,8 @@ class KFunctionForCall(private val function: KFunction, instance: Any? = n } } + fun getArgumentBucket(): ArgumentBucket = originalArgumentBucket.clone() + fun call(argumentBucket: ArgumentBucket): T { return function.call(*argumentBucket.bucket) } From 7a8c86c5eb0b4ea4a23bce55f676a7f53d86a633 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Mon, 2 Mar 2020 01:39:34 +0900 Subject: [PATCH 4/6] =?UTF-8?q?KFunctionForCall=E3=81=AE=E5=88=9D=E6=9C=9F?= =?UTF-8?q?=E5=8C=96=E9=96=A2=E9=80=A3=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mapk/core/KFunctionForCallTest.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/test/kotlin/com/mapk/core/KFunctionForCallTest.kt diff --git a/src/test/kotlin/com/mapk/core/KFunctionForCallTest.kt b/src/test/kotlin/com/mapk/core/KFunctionForCallTest.kt new file mode 100644 index 0000000..3247531 --- /dev/null +++ b/src/test/kotlin/com/mapk/core/KFunctionForCallTest.kt @@ -0,0 +1,36 @@ +package com.mapk.core + +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertDoesNotThrow +import org.junit.jupiter.api.assertThrows + +class KFunctionForCallTest { + @Nested + @DisplayName("初期化関連テスト") + inner class InitializeTest { + // 空引数の関数 + private fun dummy1() {} + @Suppress("UNUSED_PARAMETER") + private fun dummy2(input: Int) {} + + @Test + @DisplayName("不正な関数を入力した場合") + fun withNoInstance() { + assertThrows { KFunctionForCall(this::dummy1) } + } + + @Test + @DisplayName("不正な関数を入力した場合(インスタンス付き = ファクトリーメソッド想定)") + fun withInstance() { + assertThrows { KFunctionForCall(this::dummy2, object {}) } + } + + @Test + @DisplayName("正常入力") + fun isValid() { + assertDoesNotThrow { KFunctionForCall(this::dummy2) } + } + } +} From d917e6e9d4efabcbf72a2adaaaa19b7ea142720d Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Tue, 3 Mar 2020 01:31:19 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E3=83=A2=E3=82=B8=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=83=AB=E5=A4=96=E3=81=A7new=E3=81=95=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=81=A8=E5=9B=B0=E3=82=8B=E3=81=AE=E3=81=A7internal=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/com/mapk/core/ArgumentBucket.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt index 92fbcb8..73d0ec8 100644 --- a/src/main/kotlin/com/mapk/core/ArgumentBucket.kt +++ b/src/main/kotlin/com/mapk/core/ArgumentBucket.kt @@ -1,6 +1,6 @@ package com.mapk.core -class ArgumentBucket( +class ArgumentBucket internal constructor( internal val bucket: Array, private var initializeStatus: Int, private val initializeMask: List, From 3001d28c50f7fd27f2593a86a87af9a9b63412ba Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Fri, 6 Mar 2020 14:30:07 +0900 Subject: [PATCH 6/6] =?UTF-8?q?kotlin=201.3.70=E3=81=AB=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=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 fcbd923..bf4d22d 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.61" + id("org.jetbrains.kotlin.jvm") version "1.3.70" id("org.jlleitschuh.gradle.ktlint") version "9.2.1" } @@ -18,7 +18,7 @@ buildscript { } dependencies { - classpath(kotlin("gradle-plugin", version = "1.3.61")) + classpath(kotlin("gradle-plugin", version = "1.3.70")) } }