diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt index 94b676405af..4ad8da0d764 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt @@ -34,7 +34,8 @@ data class IdeaKotlinProjectArtifactDependency( internal companion object { const val serialVersionUID = 0L - var IdeaKotlinSourceDependency.projectArtifactDependencyOrigin by extrasKeyOf("origin") + var IdeaKotlinSourceDependency.projectArtifactDependencyOrigin + by extrasReadWriteProperty("origin") private set } } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/extras/KlibExtra.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/extras/KlibExtra.kt index c946a37bc5c..1e8aa2d22ee 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/extras/KlibExtra.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/extras/KlibExtra.kt @@ -8,11 +8,10 @@ package org.jetbrains.kotlin.gradle.idea.tcs.extras import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinExtra import org.jetbrains.kotlin.tooling.core.extrasKeyOf -import org.jetbrains.kotlin.tooling.core.getValue -import org.jetbrains.kotlin.tooling.core.setValue +import org.jetbrains.kotlin.tooling.core.readWriteProperty import java.io.Serializable -var IdeaKotlinBinaryDependency.klibExtra by KlibExtra.key +var IdeaKotlinBinaryDependency.klibExtra by KlibExtra.key.readWriteProperty @IdeaKotlinExtra data class KlibExtra( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver.kt index eb0fc29b93e..52ddfa9bd10 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver.kt @@ -8,9 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide import org.gradle.api.artifacts.result.ResolvedArtifactResult import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.tooling.core.extrasKeyOf -import org.jetbrains.kotlin.tooling.core.getValue -import org.jetbrains.kotlin.tooling.core.setValue +import org.jetbrains.kotlin.tooling.core.extrasReadWriteProperty fun interface IdeDependencyResolver { fun resolve(sourceSet: KotlinSourceSet): Set @@ -20,8 +18,8 @@ fun interface IdeDependencyResolver { } companion object { - var IdeaKotlinDependency.resolvedBy: IdeDependencyResolver? by extrasKeyOf("resolvedBy") - var IdeaKotlinDependency.gradleArtifact: ResolvedArtifactResult? by extrasKeyOf("gradleArtifact") + var IdeaKotlinDependency.resolvedBy: IdeDependencyResolver? by extrasReadWriteProperty("resolvedBy") + var IdeaKotlinDependency.gradleArtifact: ResolvedArtifactResult? by extrasReadWriteProperty("gradleArtifact") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationSourceSetInclusion.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationSourceSetInclusion.kt index 49ec47eabf9..88d5a8a516c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationSourceSetInclusion.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationSourceSetInclusion.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.gradle.plugin.sources.defaultSourceSetLanguageSettin import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation import org.jetbrains.kotlin.tooling.core.extrasFactoryProperty -import org.jetbrains.kotlin.tooling.core.extrasKeyOf import java.util.concurrent.Callable internal class KotlinCompilationSourceSetInclusion( @@ -75,7 +74,7 @@ internal class KotlinCompilationSourceSetInclusion( * to avoid re-processing of unnecessary source sets! */ val InternalKotlinCompilation<*>.includedSourceSets: MutableSet - by extrasFactoryProperty(extrasKeyOf(KotlinCompilationSourceSetInclusion::class.java.name), { hashSetOf() }) + by extrasFactoryProperty(KotlinCompilationSourceSetInclusion::class.java.name, { hashSetOf() }) } diff --git a/libraries/tools/kotlin-tooling-core/api/kotlin-tooling-core.api b/libraries/tools/kotlin-tooling-core/api/kotlin-tooling-core.api index ec02364de2a..a3458bebde3 100644 --- a/libraries/tools/kotlin-tooling-core/api/kotlin-tooling-core.api +++ b/libraries/tools/kotlin-tooling-core/api/kotlin-tooling-core.api @@ -128,11 +128,6 @@ public abstract interface class org/jetbrains/kotlin/tooling/core/HasExtras { public abstract fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras; } -public final class org/jetbrains/kotlin/tooling/core/HasExtrasKt { - public static final fun getValue (Lorg/jetbrains/kotlin/tooling/core/Extras$Key;Lorg/jetbrains/kotlin/tooling/core/HasExtras;Lkotlin/reflect/KProperty;)Ljava/lang/Object; - public static final fun setValue (Lorg/jetbrains/kotlin/tooling/core/Extras$Key;Lorg/jetbrains/kotlin/tooling/core/HasMutableExtras;Lkotlin/reflect/KProperty;Ljava/lang/Object;)V -} - public abstract interface class org/jetbrains/kotlin/tooling/core/HasMutableExtras : org/jetbrains/kotlin/tooling/core/HasExtras { public abstract fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/MutableExtras; } diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasProperty.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasProperty.kt index e2618493c5a..bfe0d8ccadf 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasProperty.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasProperty.kt @@ -32,6 +32,15 @@ fun extrasFactoryProperty(key: Extras.Key, factory: () -> T) = obje override val factory: () -> T = factory } +inline fun extrasReadWriteProperty(name: String? = null) = + extrasReadWriteProperty(extrasKeyOf(name)) + +inline fun extrasReadProperty(name: String? = null) = + extrasReadProperty(extrasKeyOf(name)) + +inline fun extrasFactoryProperty(name: String? = null, noinline factory: () -> T) = + extrasFactoryProperty(extrasKeyOf(name), factory) + interface ExtrasReadOnlyProperty : ExtrasProperty, ReadOnlyProperty { override fun getValue(thisRef: HasExtras, property: KProperty<*>): T? { return thisRef.extras[key] diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/HasExtras.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/HasExtras.kt index aa29ee36de4..80118c23351 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/HasExtras.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/HasExtras.kt @@ -5,8 +5,6 @@ package org.jetbrains.kotlin.tooling.core -import kotlin.reflect.KProperty - interface HasExtras { val extras: Extras @@ -15,17 +13,3 @@ interface HasExtras { interface HasMutableExtras : HasExtras { override val extras: MutableExtras } - -operator fun Extras.Key.getValue(receiver: HasExtras, property: KProperty<*>): T? { - return receiver.extras[this] -} - -operator fun Extras.Key.setValue(receiver: HasMutableExtras, property: KProperty<*>, value: T?) { - if (value == null) { - receiver.extras.remove(this) - } else { - receiver.extras[this] = value - } -} - - diff --git a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/HasExtrasTest.kt b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/HasExtrasTest.kt deleted file mode 100644 index a703fa6b69d..00000000000 --- a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/HasExtrasTest.kt +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.tooling.core - -import org.jetbrains.kotlin.tooling.core.HasExtrasTest.Subject.Companion.value1 -import org.jetbrains.kotlin.tooling.core.HasExtrasTest.Subject.Companion.value2 -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertNull - -class HasExtrasTest { - - class Subject : HasMutableExtras { - override val extras: MutableExtras = mutableExtrasOf() - - companion object { - var Subject.value1: Int? by extrasKeyOf() - var Subject.value2: Int? by extrasKeyOf("2") - } - } - - @Test - fun `test - non-null value`() { - val subject = Subject() - assertNull(subject.value1) - assertNull(subject.value2) - - subject.value1 = 1 - assertEquals(1, subject.value1) - assertNull(subject.value2) - - subject.value2 = 2 - assertEquals(1, subject.value1) - assertEquals(2, subject.value2) - } - - @Test - fun `test - set null`() { - val subject = Subject() - subject.value1 = 1 - assertEquals(1, subject.value1) - - subject.value1 = null - assertNull(subject.value1) - } -}