diff --git a/src/main/kotlin/app/revanced/patcher/patch/PatchOption.kt b/src/main/kotlin/app/revanced/patcher/patch/PatchOption.kt index 2d47507f..fbb40263 100644 --- a/src/main/kotlin/app/revanced/patcher/patch/PatchOption.kt +++ b/src/main/kotlin/app/revanced/patcher/patch/PatchOption.kt @@ -42,6 +42,14 @@ class PatchOptions(vararg val options: PatchOption<*>) : Iterable opt.value = value } + /** + * Sets the value of a [PatchOption] to `null`. + * @param key The key of the [PatchOption]. + */ + fun nullify(key: String) { + get(key).value = null + } + override fun iterator() = options.iterator() } diff --git a/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt b/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt index 3a415554..140c3c0e 100644 --- a/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt +++ b/src/test/kotlin/app/revanced/patcher/patch/PatchOptionsTest.kt @@ -36,6 +36,15 @@ internal class PatchOptionsTest { println(options["key1"].value) } + @Test + fun `should be able to set value to null`() { + // Sadly, doing: + // > options["key1"] = null + // is not possible because Kotlin + // cannot reify the type "Nothing?". + options.nullify("key1") + } + @Test fun `should fail because the option does not exist`() { assertThrows {