From 01a4045c042f71b9577fbabd6668bbb5cf8cd694 Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Mon, 13 Jun 2022 14:25:25 +0200 Subject: [PATCH] [kpm] Implement generic 'kotlin.debug' extra ^KT-52568 In Progress --- .../idea/ideaKpmProjectModelBuilderFactory.kt | 6 ++++++ .../kotlin/gradle/kpm/idea/kotlinDebugKey.kt | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/kotlinDebugKey.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ideaKpmProjectModelBuilderFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ideaKpmProjectModelBuilderFactory.kt index 7891509d0da..cd81e086a52 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ideaKpmProjectModelBuilderFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/ideaKpmProjectModelBuilderFactory.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi +import org.jetbrains.kotlin.gradle.kpm.idea.serialize.IdeaKpmExtrasSerializer import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragmentGranularMetadataResolverFactory import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension import org.jetbrains.kotlin.tooling.core.UnsafeApi @@ -95,4 +96,9 @@ internal fun IdeaKpmProjectModelBuilder.Companion.default( effect = IdeaKpmMissingFileDependencyLogger, constraint = IdeaKpmProjectModelBuilder.FragmentConstraint.unconstrained ) + + registerExtrasSerializationExtension { + /* For transporting debugging breadcrumbs into the ide */ + register(kotlinDebugKey, IdeaKpmExtrasSerializer.javaIoSerializable()) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/kotlinDebugKey.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/kotlinDebugKey.kt new file mode 100644 index 00000000000..ee5af65839e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/kotlinDebugKey.kt @@ -0,0 +1,21 @@ +/* + * 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.gradle.kpm.idea + +import org.jetbrains.kotlin.tooling.core.Extras +import org.jetbrains.kotlin.tooling.core.MutableExtras +import org.jetbrains.kotlin.tooling.core.extrasKeyOf + +internal val kotlinDebugKey = extrasKeyOf("kotlin.debug") + +val Extras.kotlinDebug get() = this[kotlinDebugKey] + +var MutableExtras.kotlinDebug: Any? + get() = this[kotlinDebugKey] + set(value) { + if (value != null) this[kotlinDebugKey] = value + else this.remove(kotlinDebugKey) + }