From 735d46efb4da80bfd5c678063455d8a94be7b6e6 Mon Sep 17 00:00:00 2001 From: Nikita Bobko Date: Thu, 9 Dec 2021 18:56:59 +0100 Subject: [PATCH] Freezable.{frozen, unfrozen} refactoring: add type safety --- .../jetbrains/kotlin/cli/common/arguments/Freezable.kt | 10 ++++++---- .../org/jetbrains/kotlin/config/KotlinFacetSettings.kt | 9 +++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/Freezable.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/Freezable.kt index 9d085335364..f8f62fa358e 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/Freezable.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/Freezable.kt @@ -40,8 +40,10 @@ abstract class Freezable { private var frozen: Boolean = false - private fun getInstanceWithFreezeStatus(value: Boolean) = if (value == frozen) this else copyBean(this).apply { frozen = value } + internal fun getInstanceWithFreezeStatus(value: Boolean) = if (value == frozen) this else copyBean(this).apply { frozen = value } +} - fun frozen() = getInstanceWithFreezeStatus(true) - fun unfrozen() = getInstanceWithFreezeStatus(false) -} \ No newline at end of file +@Suppress("UNCHECKED_CAST") +fun T.frozen(): T = getInstanceWithFreezeStatus(true) as T +@Suppress("UNCHECKED_CAST") +fun T.unfrozen(): T = getInstanceWithFreezeStatus(false) as T diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index cedcffa36d9..be91cb6198c 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -7,10 +7,7 @@ package org.jetbrains.kotlin.config import com.intellij.openapi.module.Module import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.cli.common.arguments.Argument -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments -import org.jetbrains.kotlin.cli.common.arguments.copyBean -import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments +import org.jetbrains.kotlin.cli.common.arguments.* import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatformVersion @@ -184,13 +181,13 @@ class KotlinFacetSettings { var compilerArguments: CommonCompilerArguments? = null set(value) { - field = value?.unfrozen() as CommonCompilerArguments? + field = value?.unfrozen() updateMergedArguments() } var compilerSettings: CompilerSettings? = null set(value) { - field = value?.unfrozen() as CompilerSettings? + field = value?.unfrozen() updateMergedArguments() }