diff --git a/revanced-patcher/api/revanced-patcher.api b/revanced-patcher/api/revanced-patcher.api index 7580bb4..b80f98b 100644 --- a/revanced-patcher/api/revanced-patcher.api +++ b/revanced-patcher/api/revanced-patcher.api @@ -407,6 +407,7 @@ public final class app/revanced/patcher/patch/options/PatchOptions : java/util/M public final fun remove (Ljava/lang/Object;)Lapp/revanced/patcher/patch/options/PatchOption; public final synthetic fun remove (Ljava/lang/Object;)Ljava/lang/Object; public fun remove (Ljava/lang/String;)Lapp/revanced/patcher/patch/options/PatchOption; + public final fun set (Ljava/lang/String;Ljava/lang/Object;)V public final fun size ()I public final fun values ()Ljava/util/Collection; } diff --git a/revanced-patcher/src/main/kotlin/app/revanced/patcher/patch/options/PatchOptions.kt b/revanced-patcher/src/main/kotlin/app/revanced/patcher/patch/options/PatchOptions.kt index 93d3f6c..481da72 100644 --- a/revanced-patcher/src/main/kotlin/app/revanced/patcher/patch/options/PatchOptions.kt +++ b/revanced-patcher/src/main/kotlin/app/revanced/patcher/patch/options/PatchOptions.kt @@ -23,16 +23,18 @@ class PatchOptions internal constructor( * @param value The value. * @throws PatchOptionException.PatchOptionNotFoundException If the option does not exist. */ - inline operator fun set(key: String, value: T?) { + operator fun set(key: String, value: T?) { val option = this[key] - if (option.value !is T) throw PatchOptionException.InvalidValueTypeException( - T::class.java.name, - option.value?.let { it::class.java.name } ?: "null", - ) - - @Suppress("UNCHECKED_CAST") - (option as PatchOption).value = value + try { + @Suppress("UNCHECKED_CAST") + (option as PatchOption).value = value + } catch (e: ClassCastException) { + throw PatchOptionException.InvalidValueTypeException( + value?.let { it::class.java.name } ?: "null", + option.value?.let { it::class.java.name } ?: "null", + ) + } } /**