[kpm] kotlin-gradle-plugin-idea: Introduce IdeaKpm* naming convention (1/2)

Replace the pre-existing `IdeaKotlin` naming convention with `IdeaKpm`
This commit is contained in:
sebastian.sellmair
2022-05-24 14:35:32 +02:00
committed by Space
parent d4dc6a3d71
commit e2755b92aa
54 changed files with 378 additions and 382 deletions
@@ -1,4 +1,4 @@
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryCoordinates : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyCoordinates {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryCoordinates : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependencyCoordinates {
public abstract fun getGroup ()Ljava/lang/String;
public abstract fun getKotlinFragmentName ()Ljava/lang/String;
public abstract fun getKotlinModuleName ()Ljava/lang/String;
@@ -6,88 +6,88 @@ public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinB
public abstract fun getVersion ()Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryCoordinatesImpl$Companion {
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryCoordinatesImpl$Companion {
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependency {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryCoordinates;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependency {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryCoordinates;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmCompilationOutput : java/io/Serializable {
public abstract fun getClassesDirs ()Ljava/util/Set;
public abstract fun getResourcesDir ()Ljava/io/File;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependency : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependency : java/io/Serializable {
public static final field CLASSPATH_BINARY_TYPE Ljava/lang/String;
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependency$Companion;
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependency$Companion;
public static final field DOCUMENTATION_BINARY_TYPE Ljava/lang/String;
public static final field SOURCES_BINARY_TYPE Ljava/lang/String;
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyCoordinates;
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependencyCoordinates;
public abstract fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependency$Companion {
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependency$Companion {
public static final field CLASSPATH_BINARY_TYPE Ljava/lang/String;
public static final field DOCUMENTATION_BINARY_TYPE Ljava/lang/String;
public static final field SOURCES_BINARY_TYPE Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyCoordinates : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependencyCoordinates : java/io/Serializable {
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyKt {
public static final fun isClasspathType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResolvedBinaryDependency;)Z
public static final fun isDocumentationType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResolvedBinaryDependency;)Z
public static final fun isSourcesType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResolvedBinaryDependency;)Z
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependencyKt {
public static final fun isClasspathType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmResolvedBinaryDependency;)Z
public static final fun isDocumentationType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmResolvedBinaryDependency;)Z
public static final fun isSourcesType (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmResolvedBinaryDependency;)Z
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment : java/io/Serializable {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinates;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragment : java/io/Serializable {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentCoordinates;
public abstract fun getDependencies ()Ljava/util/List;
public abstract fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras;
public abstract fun getLanguageSettings ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings;
public abstract fun getLanguageSettings ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmLanguageSettings;
public abstract fun getPlatforms ()Ljava/util/Set;
public abstract fun getResourceDirectories ()Ljava/util/List;
public abstract fun getSourceDirectories ()Ljava/util/List;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinates : java/io/Serializable, org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependencyCoordinates {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentCoordinates : java/io/Serializable, org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependencyCoordinates {
public abstract fun getFragmentName ()Ljava/lang/String;
public abstract fun getModule ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates;
public abstract fun getModule ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleCoordinates;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinatesKt {
public static final fun getPath (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinates;)Ljava/lang/String;
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentCoordinatesKt {
public static final fun getPath (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentCoordinates;)Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinDependency {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentCoordinates;
public abstract fun getType ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmDependency {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentCoordinates;
public abstract fun getType ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type : java/lang/Enum, java/io/Serializable {
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type$Companion;
public static final field Friend Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public static final field Refines Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public static final field Regular Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public static fun values ()[Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentDependency$Type;
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type : java/lang/Enum, java/io/Serializable {
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type$Companion;
public static final field Friend Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
public static final field Refines Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
public static final field Regular Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
public static fun values ()[Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentDependency$Type;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragmentKt {
public static final fun getName (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment;)Ljava/lang/String;
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragmentKt {
public static final fun getName (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragment;)Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinJsPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmJsPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails {
public abstract fun isIr ()Z
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinJvmPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmJvmPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails {
public abstract fun getJvmTarget ()Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinLanguageSettings : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmLanguageSettings : java/io/Serializable {
public abstract fun getApiVersion ()Ljava/lang/String;
public abstract fun getCompilerPluginArguments ()Ljava/util/List;
public abstract fun getCompilerPluginClasspath ()Ljava/util/List;
@@ -98,12 +98,12 @@ public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinL
public abstract fun isProgressiveMode ()Z
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule : java/io/Serializable {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModule : java/io/Serializable {
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleCoordinates;
public abstract fun getFragments ()Ljava/util/List;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleCoordinates : java/io/Serializable {
public abstract fun getBuildId ()Ljava/lang/String;
public abstract fun getModuleClassifier ()Ljava/lang/String;
public abstract fun getModuleName ()Ljava/lang/String;
@@ -111,51 +111,51 @@ public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinM
public abstract fun getProjectPath ()Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinatesKt {
public static final fun getPath (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleCoordinates;)Ljava/lang/String;
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleCoordinatesKt {
public static final fun getPath (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleCoordinates;)Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModuleKt {
public static final fun getModuleClassifier (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule;)Ljava/lang/String;
public static final fun getName (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinModule;)Ljava/lang/String;
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModuleKt {
public static final fun getModuleClassifier (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModule;)Ljava/lang/String;
public static final fun getName (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmModule;)Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmNativePlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails {
public abstract fun getKonanTarget ()Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform : java/io/Serializable {
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform$Companion;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform : java/io/Serializable {
public static final field Companion Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform$Companion;
public static final field jsPlatformType Ljava/lang/String;
public static final field jvmPlatformType Ljava/lang/String;
public static final field nativePlatformType Ljava/lang/String;
public static final field wasmPlatformType Ljava/lang/String;
public abstract fun getPlatformDetails ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails;
public abstract fun getPlatformDetails ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails;
public abstract fun getPlatformType ()Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform$Companion {
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform$Companion {
public static final field jsPlatformType Ljava/lang/String;
public static final field jvmPlatformType Ljava/lang/String;
public static final field nativePlatformType Ljava/lang/String;
public static final field wasmPlatformType Ljava/lang/String;
public final fun getUnknown ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;
public final fun getUnknown ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails : java/io/Serializable {
}
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformKt {
public static final fun getJsOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinJsPlatformDetails;
public static final fun getJvmOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinJvmPlatformDetails;
public static final fun getNativeOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinNativePlatformDetails;
public static final fun isJs (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Z
public static final fun isJvm (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Z
public static final fun isNative (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Z
public static final fun isWasm (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;)Z
public final class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformKt {
public static final fun getJsOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmJsPlatformDetails;
public static final fun getJvmOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmJvmPlatformDetails;
public static final fun getNativeOrNull (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmNativePlatformDetails;
public static final fun isJs (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Z
public static final fun isJvm (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Z
public static final fun isNative (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Z
public static final fun isWasm (Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;)Z
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinProjectModel : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmProject : java/io/Serializable {
public abstract fun getCoreLibrariesVersion ()Ljava/lang/String;
public abstract fun getExplicitApiModeCliOption ()Ljava/lang/String;
public abstract fun getGradlePluginVersion ()Ljava/lang/String;
@@ -163,30 +163,30 @@ public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinP
public abstract fun getModules ()Ljava/util/List;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResolvedBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryDependency {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmResolvedBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryDependency {
public abstract fun getBinaryFile ()Ljava/io/File;
public abstract fun getBinaryType ()Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinResourceDirectory : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmResourceDirectory : java/io/Serializable {
public abstract fun getFile ()Ljava/io/File;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinSourceDirectory : java/io/Serializable {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmSourceDirectory : java/io/Serializable {
public abstract fun getFile ()Ljava/io/File;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinUnresolvedBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinBinaryDependency {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmUnresolvedBinaryDependency : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmBinaryDependency {
public abstract fun getCause ()Ljava/lang/String;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinVariant : java/io/Serializable, org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinFragment {
public abstract fun getCompilationOutputs ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinCompilationOutput;
public abstract fun getPlatform ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatform;
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmVariant : java/io/Serializable, org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmFragment {
public abstract fun getCompilationOutputs ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmCompilationOutput;
public abstract fun getPlatform ()Lorg/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatform;
public abstract fun getVariantAttributes ()Ljava/util/Map;
}
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinWasmPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKotlinPlatformDetails {
public abstract interface class org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmWasmPlatformDetails : org/jetbrains/kotlin/gradle/kpm/idea/IdeaKpmPlatformDetails {
}
public abstract interface annotation class org/jetbrains/kotlin/gradle/kpm/idea/InternalKotlinGradlePluginApi : java/lang/annotation/Annotation {
@@ -8,31 +8,32 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.tooling.core.Extras
import java.io.Serializable
sealed interface IdeaKotlinFragment : Serializable {
val coordinates: IdeaKotlinFragmentCoordinates
val platforms: Set<IdeaKotlinPlatform>
val languageSettings: IdeaKotlinLanguageSettings?
val dependencies: List<IdeaKotlinDependency>
val sourceDirectories: List<IdeaKotlinSourceDirectory>
val resourceDirectories: List<IdeaKotlinResourceDirectory>
sealed interface IdeaKpmFragment : Serializable {
val coordinates: IdeaKpmFragmentCoordinates
val platforms: Set<IdeaKpmPlatform>
val languageSettings: IdeaKpmLanguageSettings?
val dependencies: List<IdeaKpmDependency>
val sourceDirectories: List<IdeaKpmSourceDirectory>
val resourceDirectories: List<IdeaKpmResourceDirectory>
val extras: Extras
}
val IdeaKotlinFragment.name get() = coordinates.fragmentName
val IdeaKpmFragment.name get() = coordinates.fragmentName
@InternalKotlinGradlePluginApi
data class IdeaKotlinFragmentImpl(
override val coordinates: IdeaKotlinFragmentCoordinates,
override val platforms: Set<IdeaKotlinPlatform>,
override val languageSettings: IdeaKotlinLanguageSettings?,
override val dependencies: List<IdeaKotlinDependency>,
override val sourceDirectories: List<IdeaKotlinSourceDirectory>,
override val resourceDirectories: List<IdeaKotlinResourceDirectory>,
data class IdeaKpmFragmentImpl(
override val coordinates: IdeaKpmFragmentCoordinates,
override val platforms: Set<IdeaKpmPlatform>,
override val languageSettings: IdeaKpmLanguageSettings?,
override val dependencies: List<IdeaKpmDependency>,
override val sourceDirectories: List<IdeaKpmSourceDirectory>,
override val resourceDirectories: List<IdeaKpmResourceDirectory>,
override val extras: Extras
) : IdeaKotlinFragment {
) : IdeaKpmFragment {
@InternalKotlinGradlePluginApi
companion object {
private const val serialVersionUID = 0L
}
}
@@ -7,20 +7,20 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinModule : Serializable {
val coordinates: IdeaKotlinModuleCoordinates
val fragments: List<IdeaKotlinFragment>
sealed interface IdeaKpmModule : Serializable {
val coordinates: IdeaKpmModuleCoordinates
val fragments: List<IdeaKpmFragment>
}
val IdeaKotlinModule.name get() = coordinates.moduleName
val IdeaKpmModule.name get() = coordinates.moduleName
val IdeaKotlinModule.moduleClassifier get() = coordinates.moduleClassifier
val IdeaKpmModule.moduleClassifier get() = coordinates.moduleClassifier
@InternalKotlinGradlePluginApi
data class IdeaKotlinModuleImpl(
override val coordinates: IdeaKotlinModuleCoordinates,
override val fragments: List<IdeaKotlinFragment>
) : IdeaKotlinModule {
data class IdeaKpmModuleImpl(
override val coordinates: IdeaKpmModuleCoordinates,
override val fragments: List<IdeaKpmFragment>
) : IdeaKpmModule {
@InternalKotlinGradlePluginApi
companion object {
@@ -9,12 +9,12 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinPlatform : Serializable {
sealed interface IdeaKpmPlatform : Serializable {
val platformType: String
val platformDetails: IdeaKotlinPlatformDetails?
val platformDetails: IdeaKpmPlatformDetails?
companion object {
val unknown: IdeaKotlinPlatform = IdeaKotlinPlatformImpl("unknown", null)
val unknown: IdeaKpmPlatform = IdeaKpmPlatformImpl("unknown", null)
const val wasmPlatformType = "wasm"
const val nativePlatformType = "native"
@@ -23,77 +23,77 @@ sealed interface IdeaKotlinPlatform : Serializable {
}
}
sealed interface IdeaKotlinPlatformDetails : Serializable
sealed interface IdeaKpmPlatformDetails : Serializable
sealed interface IdeaKotlinWasmPlatformDetails : IdeaKotlinPlatformDetails
sealed interface IdeaKpmWasmPlatformDetails : IdeaKpmPlatformDetails
sealed interface IdeaKotlinNativePlatformDetails : IdeaKotlinPlatformDetails {
sealed interface IdeaKpmNativePlatformDetails : IdeaKpmPlatformDetails {
val konanTarget: String
}
sealed interface IdeaKotlinJvmPlatformDetails : IdeaKotlinPlatformDetails {
sealed interface IdeaKpmJvmPlatformDetails : IdeaKpmPlatformDetails {
val jvmTarget: String
}
sealed interface IdeaKotlinJsPlatformDetails : IdeaKotlinPlatformDetails {
sealed interface IdeaKpmJsPlatformDetails : IdeaKpmPlatformDetails {
val isIr: Boolean
}
@InternalKotlinGradlePluginApi
fun IdeaKotlinPlatform.Companion.wasm(): IdeaKotlinPlatform {
return IdeaKotlinPlatformImpl(wasmPlatformType, IdeaKotlinWasmPlatformDetailsImpl)
fun IdeaKpmPlatform.Companion.wasm(): IdeaKpmPlatform {
return IdeaKpmPlatformImpl(wasmPlatformType, IdeaKpmWasmPlatformDetailsImpl)
}
@InternalKotlinGradlePluginApi
fun IdeaKotlinPlatform.Companion.native(konanTarget: String): IdeaKotlinPlatform {
return IdeaKotlinPlatformImpl(nativePlatformType, IdeaKotlinNativePlatformDetailsImpl(konanTarget))
fun IdeaKpmPlatform.Companion.native(konanTarget: String): IdeaKpmPlatform {
return IdeaKpmPlatformImpl(nativePlatformType, IdeaKpmNativePlatformDetailsImpl(konanTarget))
}
@InternalKotlinGradlePluginApi
fun IdeaKotlinPlatform.Companion.jvm(jvmTarget: String): IdeaKotlinPlatform {
return IdeaKotlinPlatformImpl(jvmPlatformType, IdeaKotlinJvmPlatformDetailsImpl(jvmTarget))
fun IdeaKpmPlatform.Companion.jvm(jvmTarget: String): IdeaKpmPlatform {
return IdeaKpmPlatformImpl(jvmPlatformType, IdeaKpmJvmPlatformDetailsImpl(jvmTarget))
}
@InternalKotlinGradlePluginApi
fun IdeaKotlinPlatform.Companion.js(isIr: Boolean): IdeaKotlinPlatform {
return IdeaKotlinPlatformImpl(jsPlatformType, IdeaKotlinJsPlatformDetailsImpl(isIr))
fun IdeaKpmPlatform.Companion.js(isIr: Boolean): IdeaKpmPlatform {
return IdeaKpmPlatformImpl(jsPlatformType, IdeaKpmJsPlatformDetailsImpl(isIr))
}
val IdeaKotlinPlatform.isWasm get() = platformType == IdeaKotlinPlatform.wasmPlatformType
val IdeaKotlinPlatform.isNative get() = platformType == IdeaKotlinPlatform.nativePlatformType
val IdeaKotlinPlatform.isJvm get() = platformType == IdeaKotlinPlatform.jvmPlatformType
val IdeaKotlinPlatform.isJs get() = platformType == IdeaKotlinPlatform.jsPlatformType
val IdeaKpmPlatform.isWasm get() = platformType == IdeaKpmPlatform.wasmPlatformType
val IdeaKpmPlatform.isNative get() = platformType == IdeaKpmPlatform.nativePlatformType
val IdeaKpmPlatform.isJvm get() = platformType == IdeaKpmPlatform.jvmPlatformType
val IdeaKpmPlatform.isJs get() = platformType == IdeaKpmPlatform.jsPlatformType
val IdeaKotlinPlatform.nativeOrNull get() = (platformDetails as? IdeaKotlinNativePlatformDetails)
val IdeaKotlinPlatform.jvmOrNull get() = (platformDetails as? IdeaKotlinJvmPlatformDetails)
val IdeaKotlinPlatform.jsOrNull get() = (platformDetails as? IdeaKotlinJsPlatformDetails)
val IdeaKpmPlatform.nativeOrNull get() = (platformDetails as? IdeaKpmNativePlatformDetails)
val IdeaKpmPlatform.jvmOrNull get() = (platformDetails as? IdeaKpmJvmPlatformDetails)
val IdeaKpmPlatform.jsOrNull get() = (platformDetails as? IdeaKpmJsPlatformDetails)
private data class IdeaKotlinPlatformImpl(
override val platformType: String, override val platformDetails: IdeaKotlinPlatformDetails?
) : IdeaKotlinPlatform {
private data class IdeaKpmPlatformImpl(
override val platformType: String, override val platformDetails: IdeaKpmPlatformDetails?
) : IdeaKpmPlatform {
companion object {
const val serialVersionUID = 0L
}
}
private object IdeaKotlinWasmPlatformDetailsImpl : IdeaKotlinWasmPlatformDetails {
private object IdeaKpmWasmPlatformDetailsImpl : IdeaKpmWasmPlatformDetails {
private const val serialVersionUID = 0L
}
private data class IdeaKotlinJvmPlatformDetailsImpl(override val jvmTarget: String) : IdeaKotlinJvmPlatformDetails {
private data class IdeaKpmJvmPlatformDetailsImpl(override val jvmTarget: String) : IdeaKpmJvmPlatformDetails {
private companion object {
const val serialVersionUID = 0L
}
}
private data class IdeaKotlinNativePlatformDetailsImpl(override val konanTarget: String) : IdeaKotlinNativePlatformDetails {
private data class IdeaKpmNativePlatformDetailsImpl(override val konanTarget: String) : IdeaKpmNativePlatformDetails {
private companion object {
const val serialVersionUID = 0L
}
}
private data class IdeaKotlinJsPlatformDetailsImpl(override val isIr: Boolean) : IdeaKotlinJsPlatformDetails {
private data class IdeaKpmJsPlatformDetailsImpl(override val isIr: Boolean) : IdeaKpmJsPlatformDetails {
private companion object {
const val serialVersionUID = 0L
}
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.gradle.kpm.idea
sealed interface IdeaKotlinBinaryCoordinates : IdeaKotlinDependencyCoordinates {
sealed interface IdeaKpmBinaryCoordinates : IdeaKpmDependencyCoordinates {
val group: String
val module: String
val version: String
@@ -14,13 +14,13 @@ sealed interface IdeaKotlinBinaryCoordinates : IdeaKotlinDependencyCoordinates {
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinBinaryCoordinatesImpl(
data class IdeaKpmBinaryCoordinatesImpl(
override val group: String,
override val module: String,
override val version: String,
override val kotlinModuleName: String? = null,
override val kotlinFragmentName: String? = null
) : IdeaKotlinBinaryCoordinates {
) : IdeaKpmBinaryCoordinates {
override fun toString(): String {
return "$group:$module:$version" +
@@ -8,16 +8,16 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.File
import java.io.Serializable
sealed interface IdeaKotlinCompilationOutput : Serializable {
sealed interface IdeaKpmCompilationOutput : Serializable {
val classesDirs: Set<File>
val resourcesDir: File?
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinCompilationOutputImpl(
data class IdeaKpmCompilationOutputImpl(
override val classesDirs: Set<File>,
override val resourcesDir: File?
) : IdeaKotlinCompilationOutput {
) : IdeaKpmCompilationOutput {
@InternalKotlinGradlePluginApi
companion object {
@@ -7,17 +7,17 @@
package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.DOCUMENTATION_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.SOURCES_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.DOCUMENTATION_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.SOURCES_BINARY_TYPE
import org.jetbrains.kotlin.tooling.core.Extras
import org.jetbrains.kotlin.tooling.core.emptyExtras
import java.io.File
import java.io.Serializable
import java.util.*
sealed interface IdeaKotlinDependency : Serializable {
val coordinates: IdeaKotlinDependencyCoordinates?
sealed interface IdeaKpmDependency : Serializable {
val coordinates: IdeaKpmDependencyCoordinates?
val extras: Extras
companion object {
@@ -27,7 +27,7 @@ sealed interface IdeaKotlinDependency : Serializable {
}
}
sealed interface IdeaKotlinFragmentDependency : IdeaKotlinDependency {
sealed interface IdeaKpmFragmentDependency : IdeaKpmDependency {
enum class Type : Serializable {
Regular, Friend, Refines;
@@ -38,32 +38,32 @@ sealed interface IdeaKotlinFragmentDependency : IdeaKotlinDependency {
}
val type: Type
override val coordinates: IdeaKotlinFragmentCoordinates
override val coordinates: IdeaKpmFragmentCoordinates
}
sealed interface IdeaKotlinBinaryDependency : IdeaKotlinDependency {
override val coordinates: IdeaKotlinBinaryCoordinates?
sealed interface IdeaKpmBinaryDependency : IdeaKpmDependency {
override val coordinates: IdeaKpmBinaryCoordinates?
}
sealed interface IdeaKotlinUnresolvedBinaryDependency : IdeaKotlinBinaryDependency {
sealed interface IdeaKpmUnresolvedBinaryDependency : IdeaKpmBinaryDependency {
val cause: String?
}
sealed interface IdeaKotlinResolvedBinaryDependency : IdeaKotlinBinaryDependency {
sealed interface IdeaKpmResolvedBinaryDependency : IdeaKpmBinaryDependency {
val binaryType: String
val binaryFile: File
}
val IdeaKotlinResolvedBinaryDependency.isSourcesType get() = binaryType == SOURCES_BINARY_TYPE
val IdeaKotlinResolvedBinaryDependency.isDocumentationType get() = binaryType == DOCUMENTATION_BINARY_TYPE
val IdeaKotlinResolvedBinaryDependency.isClasspathType get() = binaryType == CLASSPATH_BINARY_TYPE
val IdeaKpmResolvedBinaryDependency.isSourcesType get() = binaryType == SOURCES_BINARY_TYPE
val IdeaKpmResolvedBinaryDependency.isDocumentationType get() = binaryType == DOCUMENTATION_BINARY_TYPE
val IdeaKpmResolvedBinaryDependency.isClasspathType get() = binaryType == CLASSPATH_BINARY_TYPE
@InternalKotlinGradlePluginApi
data class IdeaKotlinFragmentDependencyImpl(
override val type: IdeaKotlinFragmentDependency.Type,
override val coordinates: IdeaKotlinFragmentCoordinates,
data class IdeaKpmFragmentDependencyImpl(
override val type: IdeaKpmFragmentDependency.Type,
override val coordinates: IdeaKpmFragmentCoordinates,
override val extras: Extras = emptyExtras()
) : IdeaKotlinFragmentDependency {
) : IdeaKpmFragmentDependency {
override fun toString(): String {
@Suppress("DEPRECATION")
@@ -77,12 +77,12 @@ data class IdeaKotlinFragmentDependencyImpl(
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinResolvedBinaryDependencyImpl(
override val coordinates: IdeaKotlinBinaryCoordinates?,
data class IdeaKpmResolvedBinaryDependencyImpl(
override val coordinates: IdeaKpmBinaryCoordinates?,
override val binaryType: String,
override val binaryFile: File,
override val extras: Extras = emptyExtras()
) : IdeaKotlinResolvedBinaryDependency {
) : IdeaKpmResolvedBinaryDependency {
override fun toString(): String {
return "${binaryType.split(".").last()}://$coordinates/${binaryFile.name}"
@@ -95,11 +95,11 @@ data class IdeaKotlinResolvedBinaryDependencyImpl(
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinUnresolvedBinaryDependencyImpl(
data class IdeaKpmUnresolvedBinaryDependencyImpl(
override val cause: String?,
override val coordinates: IdeaKotlinBinaryCoordinates?,
override val coordinates: IdeaKpmBinaryCoordinates?,
override val extras: Extras = emptyExtras()
) : IdeaKotlinUnresolvedBinaryDependency {
) : IdeaKpmUnresolvedBinaryDependency {
@InternalKotlinGradlePluginApi
companion object {
@@ -7,4 +7,4 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinDependencyCoordinates : Serializable
sealed interface IdeaKpmDependencyCoordinates : Serializable
@@ -7,16 +7,16 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinFragmentCoordinates : Serializable, IdeaKotlinDependencyCoordinates {
val module: IdeaKotlinModuleCoordinates
sealed interface IdeaKpmFragmentCoordinates : Serializable, IdeaKpmDependencyCoordinates {
val module: IdeaKpmModuleCoordinates
val fragmentName: String
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinFragmentCoordinatesImpl(
override val module: IdeaKotlinModuleCoordinates,
data class IdeaKpmFragmentCoordinatesImpl(
override val module: IdeaKpmModuleCoordinates,
override val fragmentName: String
) : IdeaKotlinFragmentCoordinates {
) : IdeaKpmFragmentCoordinates {
override fun toString(): String = path
@@ -26,5 +26,5 @@ data class IdeaKotlinFragmentCoordinatesImpl(
}
}
val IdeaKotlinFragmentCoordinates.path: String
val IdeaKpmFragmentCoordinates.path: String
get() = "${module.path}/$fragmentName"
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.File
import java.io.Serializable
sealed interface IdeaKotlinLanguageSettings : Serializable {
sealed interface IdeaKpmLanguageSettings : Serializable {
val languageVersion: String?
val apiVersion: String?
val isProgressiveMode: Boolean
@@ -20,7 +20,7 @@ sealed interface IdeaKotlinLanguageSettings : Serializable {
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinLanguageSettingsImpl(
data class IdeaKpmLanguageSettingsImpl(
override val languageVersion: String?,
override val apiVersion: String?,
override val isProgressiveMode: Boolean,
@@ -29,7 +29,7 @@ data class IdeaKotlinLanguageSettingsImpl(
override val compilerPluginArguments: List<String>,
override val compilerPluginClasspath: List<File>,
override val freeCompilerArgs: List<String>
) : IdeaKotlinLanguageSettings {
) : IdeaKpmLanguageSettings {
@InternalKotlinGradlePluginApi
companion object {
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinModuleCoordinates : Serializable {
sealed interface IdeaKpmModuleCoordinates : Serializable {
val buildId: String
val projectPath: String
val projectName: String
@@ -15,17 +15,17 @@ sealed interface IdeaKotlinModuleCoordinates : Serializable {
val moduleClassifier: String?
}
val IdeaKotlinModuleCoordinates.path: String
val IdeaKpmModuleCoordinates.path: String
get() = "${buildId.takeIf { it != ":" }.orEmpty()}$projectPath/$moduleName"
@InternalKotlinGradlePluginApi
data class IdeaKotlinModuleCoordinatesImpl(
data class IdeaKpmModuleCoordinatesImpl(
override val buildId: String,
override val projectPath: String,
override val projectName: String,
override val moduleName: String,
override val moduleClassifier: String?
) : IdeaKotlinModuleCoordinates {
) : IdeaKpmModuleCoordinates {
@InternalKotlinGradlePluginApi
companion object {
@@ -8,22 +8,22 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.File
import java.io.Serializable
sealed interface IdeaKotlinProjectModel : Serializable {
sealed interface IdeaKpmProject : Serializable {
val gradlePluginVersion: String
val coreLibrariesVersion: String
val explicitApiModeCliOption: String?
val kotlinNativeHome: File
val modules: List<IdeaKotlinModule>
val modules: List<IdeaKpmModule>
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinProjectModelImpl(
data class IdeaKpmProjectImpl(
override val gradlePluginVersion: String,
override val coreLibrariesVersion: String,
override val explicitApiModeCliOption: String?,
override val kotlinNativeHome: File,
override val modules: List<IdeaKotlinModule>
) : IdeaKotlinProjectModel {
override val modules: List<IdeaKpmModule>
) : IdeaKpmProject {
@InternalKotlinGradlePluginApi
companion object {
@@ -8,14 +8,14 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.File
import java.io.Serializable
sealed interface IdeaKotlinResourceDirectory : Serializable {
sealed interface IdeaKpmResourceDirectory : Serializable {
val file: File
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinResourceDirectoryImpl(
data class IdeaKpmResourceDirectoryImpl(
override val file: File
) : IdeaKotlinResourceDirectory {
) : IdeaKpmResourceDirectory {
@InternalKotlinGradlePluginApi
companion object {
@@ -8,14 +8,14 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.File
import java.io.Serializable
sealed interface IdeaKotlinSourceDirectory : Serializable {
sealed interface IdeaKpmSourceDirectory : Serializable {
val file: File
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinSourceDirectoryImpl(
data class IdeaKpmSourceDirectoryImpl(
override val file: File,
) : IdeaKotlinSourceDirectory {
) : IdeaKpmSourceDirectory {
@InternalKotlinGradlePluginApi
companion object {
@@ -7,19 +7,19 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import java.io.Serializable
sealed interface IdeaKotlinVariant : IdeaKotlinFragment, Serializable {
val platform: IdeaKotlinPlatform
sealed interface IdeaKpmVariant : IdeaKpmFragment, Serializable {
val platform: IdeaKpmPlatform
val variantAttributes: Map<String, String>
val compilationOutputs: IdeaKotlinCompilationOutput
val compilationOutputs: IdeaKpmCompilationOutput
}
@InternalKotlinGradlePluginApi
data class IdeaKotlinVariantImpl(
internal val fragment: IdeaKotlinFragment,
override val platform: IdeaKotlinPlatform,
data class IdeaKpmVariantImpl(
internal val fragment: IdeaKpmFragment,
override val platform: IdeaKpmPlatform,
override val variantAttributes: Map<String, String>,
override val compilationOutputs: IdeaKotlinCompilationOutput,
) : IdeaKotlinVariant, IdeaKotlinFragment by fragment {
override val compilationOutputs: IdeaKpmCompilationOutput,
) : IdeaKpmVariant, IdeaKpmFragment by fragment {
@InternalKotlinGradlePluginApi
companion object {
@@ -4,7 +4,7 @@ import org.gradle.api.internal.project.ProjectInternal
import org.gradle.configurationcache.extensions.serviceOf
import org.gradle.testfixtures.ProjectBuilder
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModel
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProject
import org.jetbrains.kotlin.gradle.plugin.KotlinPm20PluginWrapper
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
@@ -13,9 +13,9 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
fun Project.buildIdeaKotlinProjectModel(): IdeaKotlinProjectModel {
return serviceOf<ToolingModelBuilderRegistry>().getBuilder(IdeaKotlinProjectModel::class.java.name)
.buildAll(IdeaKotlinProjectModel::class.java.name, this) as IdeaKotlinProjectModel
fun Project.buildIdeaKpmProjectModel(): IdeaKpmProject {
return serviceOf<ToolingModelBuilderRegistry>().getBuilder(IdeaKpmProject::class.java.name)
.buildAll(IdeaKpmProject::class.java.name, this) as IdeaKpmProject
}
fun createKpmProject(): Pair<ProjectInternal, KotlinPm20ProjectExtension> {
@@ -7,7 +7,7 @@
package org.jetbrains.kotlin.gradle.kpm.idea
import buildIdeaKotlinProjectModel
import buildIdeaKpmProjectModel
import createKpmProject
import createProxyInstance
import org.gradle.api.internal.project.ProjectInternal
@@ -57,12 +57,12 @@ class BackwardsCompatibilityDeserializationTest {
}
project.evaluate()
val model = project.buildIdeaKotlinProjectModel()
val model = project.buildIdeaKpmProjectModel()
val deserializedModel = deserializeModelWithBackwardsCompatibleClasses(model)
/* Use proxy instances to assert the deserialized model */
run {
val deserializedModelProxy = createProxyInstance<IdeaKotlinProjectModel>(deserializedModel)
val deserializedModelProxy = createProxyInstance<IdeaKpmProject>(deserializedModel)
val deserializedMainModuleProxy = deserializedModelProxy.modules.firstOrNull { it.coordinates.moduleClassifier == null }
?: fail("Missing main module")
@@ -94,9 +94,9 @@ class BackwardsCompatibilityDeserializationTest {
kotlinExtension.main.common.extras[retainedModelKey] = RetainedModel(2411)
kotlinExtension.main.common.extras[unretainedModelKey] = UnretainedModel(510)
val model = project.buildIdeaKotlinProjectModel()
val model = project.buildIdeaKpmProjectModel()
val deserializedModel = deserializeModelWithBackwardsCompatibleClasses(model)
val deserializedModelProxy = createProxyInstance<IdeaKotlinProjectModel>(deserializedModel)
val deserializedModelProxy = createProxyInstance<IdeaKpmProject>(deserializedModel)
val deserializedMainModuleProxy = deserializedModelProxy.modules.find { it.coordinates.moduleClassifier == null }
?: fail("Missing main module")
@@ -106,7 +106,7 @@ class BackwardsCompatibilityDeserializationTest {
run {
val deserializedCommonFragment = unwrapProxyInstance(deserializedCommonFragmentProxy)
val extras = deserializedCommonFragment.serialize().deserialize<IdeaKotlinFragment>().extras
val extras = deserializedCommonFragment.serialize().deserialize<IdeaKpmFragment>().extras
assertEquals(1, extras.keys.size)
assertEquals(RetainedModel(2411), extras[retainedModelKey])
assertNull(extras[unretainedModelKey])
@@ -128,7 +128,7 @@ private fun getClasspathForBackwardsCompatibilityTest(): List<File> {
.flatMap { file -> if (file.isDirectory) file.listFiles().orEmpty().toList() else listOf(file) }
}
private fun deserializeModelWithBackwardsCompatibleClasses(model: IdeaKotlinProjectModel): Any {
private fun deserializeModelWithBackwardsCompatibleClasses(model: IdeaKpmProject): Any {
val backwardsCompatibilityClassLoader = getClassLoaderForBackwardsCompatibilityTest()
val backwardsCompatibilityModel = model.serialize().deserialize(backwardsCompatibilityClassLoader)
@@ -21,7 +21,7 @@ import kotlin.test.*
@OptIn(ExperimentalStdlibApi::class)
@RunWith(Parameterized::class)
class IdeaKotlinProjectModelObjectGraphTest(private val node: KClass<*>, @Suppress("unused_parameter") clazzName: String) {
class IdeaKpmProjectObjectGraphTest(private val node: KClass<*>, @Suppress("unused_parameter") clazzName: String) {
@Test
fun `test - node implements Serializable`() {
@@ -98,7 +98,7 @@ class IdeaKotlinProjectModelObjectGraphTest(private val node: KClass<*>, @Suppre
@Parameterized.Parameters(name = "{1}")
fun findNodes(): List<Array<Any>> {
val classes = mutableSetOf<KClass<*>>()
val resolveQueue = ArrayDeque<KClass<*>>(listOf(IdeaKotlinProjectModel::class))
val resolveQueue = ArrayDeque<KClass<*>>(listOf(IdeaKpmProject::class))
while (resolveQueue.isNotEmpty()) {
val next = resolveQueue.removeFirst()
@@ -5,63 +5,63 @@
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinBinaryCoordinates
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinResolvedBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinates
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependency
import java.io.File
fun buildIdeaKotlinBinaryDependencyMatchers(notation: Any?): List<IdeaKotlinBinaryDependencyMatcher> {
fun buildIdeaKpmBinaryDependencyMatchers(notation: Any?): List<IdeaKpmBinaryDependencyMatcher> {
return when (notation) {
null -> emptyList()
is IdeaKotlinBinaryDependencyMatcher -> listOf(notation)
is String -> listOf(IdeaKotlinBinaryDependencyMatcher.Coordinates(parseIdeaKotlinBinaryCoordinates(notation)))
is Regex -> listOf(IdeaKotlinBinaryDependencyMatcher.CoordinatesRegex(notation))
is File -> listOf(IdeaKotlinBinaryDependencyMatcher.BinaryFile(notation))
is Iterable<*> -> notation.flatMap { child -> buildIdeaKotlinBinaryDependencyMatchers(child) }
else -> error("Can't build ${IdeaKotlinBinaryDependencyMatcher::class.simpleName} from $notation")
is IdeaKpmBinaryDependencyMatcher -> listOf(notation)
is String -> listOf(IdeaKpmBinaryDependencyMatcher.Coordinates(parseIdeaKpmBinaryCoordinates(notation)))
is Regex -> listOf(IdeaKpmBinaryDependencyMatcher.CoordinatesRegex(notation))
is File -> listOf(IdeaKpmBinaryDependencyMatcher.BinaryFile(notation))
is Iterable<*> -> notation.flatMap { child -> buildIdeaKpmBinaryDependencyMatchers(child) }
else -> error("Can't build ${IdeaKpmBinaryDependencyMatcher::class.simpleName} from $notation")
}
}
interface IdeaKotlinBinaryDependencyMatcher : IdeaKotlinDependencyMatcher<IdeaKotlinBinaryDependency>{
interface IdeaKpmBinaryDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmBinaryDependency>{
class Coordinates(
private val coordinates: IdeaKotlinBinaryCoordinates
) : IdeaKotlinBinaryDependencyMatcher {
private val coordinates: IdeaKpmBinaryCoordinates
) : IdeaKpmBinaryDependencyMatcher {
override val description: String = coordinates.toString()
override fun matches(dependency: IdeaKotlinBinaryDependency): Boolean {
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
return coordinates == dependency.coordinates
}
}
class CoordinatesRegex(
private val regex: Regex
) : IdeaKotlinBinaryDependencyMatcher {
) : IdeaKpmBinaryDependencyMatcher {
override val description: String = regex.pattern
override fun matches(dependency: IdeaKotlinBinaryDependency): Boolean {
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
return regex.matches(dependency.coordinates.toString())
}
}
class BinaryFile(
private val binaryFile: File
) : IdeaKotlinBinaryDependencyMatcher {
) : IdeaKpmBinaryDependencyMatcher {
override val description: String = binaryFile.path
override fun matches(dependency: IdeaKotlinBinaryDependency): Boolean {
return dependency is IdeaKotlinResolvedBinaryDependency && dependency.binaryFile == binaryFile
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
return dependency is IdeaKpmResolvedBinaryDependency && dependency.binaryFile == binaryFile
}
}
class InDirectory(
private val parentFile: File
) : IdeaKotlinBinaryDependencyMatcher {
) : IdeaKpmBinaryDependencyMatcher {
constructor(parentFilePath: String) : this(File(parentFilePath))
override val description: String = "$parentFile/**"
override fun matches(dependency: IdeaKotlinBinaryDependency): Boolean {
return dependency is IdeaKotlinResolvedBinaryDependency &&
override fun matches(dependency: IdeaKpmBinaryDependency): Boolean {
return dependency is IdeaKpmResolvedBinaryDependency &&
dependency.binaryFile.absoluteFile.normalize().canonicalPath.startsWith(
parentFile.absoluteFile.normalize().canonicalPath
)
@@ -1,30 +1,30 @@
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinFragmentDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragmentDependency
fun buildIdeaKotlinFragmentDependencyMatchers(notation: Any?): List<IdeaKotlinFragmentDependencyMatcher> {
fun buildIdeaKpmFragmentDependencyMatchers(notation: Any?): List<IdeaKpmFragmentDependencyMatcher> {
return when (notation) {
null -> emptyList()
is Iterable<*> -> notation.flatMap { buildIdeaKotlinFragmentDependencyMatchers(it) }
is String -> listOf(IdeaKotlinFragmentDependencyMatcher.DependencyLiteral(notation))
is Regex -> listOf(IdeaKotlinFragmentDependencyMatcher.DependencyRegex(notation))
else -> error("Can't build ${IdeaKotlinFragmentDependencyMatcher::class.simpleName} from $notation")
is Iterable<*> -> notation.flatMap { buildIdeaKpmFragmentDependencyMatchers(it) }
is String -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyLiteral(notation))
is Regex -> listOf(IdeaKpmFragmentDependencyMatcher.DependencyRegex(notation))
else -> error("Can't build ${IdeaKpmFragmentDependencyMatcher::class.simpleName} from $notation")
}
}
interface IdeaKotlinFragmentDependencyMatcher : IdeaKotlinDependencyMatcher<IdeaKotlinFragmentDependency> {
class DependencyLiteral(private val dependencyLiteral: String) : IdeaKotlinFragmentDependencyMatcher {
interface IdeaKpmFragmentDependencyMatcher : IdeaKpmDependencyMatcher<IdeaKpmFragmentDependency> {
class DependencyLiteral(private val dependencyLiteral: String) : IdeaKpmFragmentDependencyMatcher {
override val description: String = dependencyLiteral
override fun matches(dependency: IdeaKotlinFragmentDependency): Boolean {
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
return this.dependencyLiteral == dependency.toString()
}
}
class DependencyRegex(private val dependencyRegex: Regex) : IdeaKotlinFragmentDependencyMatcher {
class DependencyRegex(private val dependencyRegex: Regex) : IdeaKpmFragmentDependencyMatcher {
override val description: String = dependencyRegex.pattern
override fun matches(dependency: IdeaKotlinFragmentDependency): Boolean {
override fun matches(dependency: IdeaKpmFragmentDependency): Boolean {
return dependencyRegex.matches(dependency.coordinates.toString())
}
}
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency
interface IdeaKotlinDependencyMatcher<in T : IdeaKotlinDependency> {
interface IdeaKpmDependencyMatcher<in T : IdeaKpmDependency> {
val description: String
fun matches(dependency: T): Boolean
}
@@ -10,30 +10,30 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.*
import kotlin.test.fail
fun IdeaKotlinProjectModel.assertIsNotEmpty(): IdeaKotlinProjectModel = apply {
fun IdeaKpmProject.assertIsNotEmpty(): IdeaKpmProject = apply {
if (this.modules.isEmpty()) fail("Expected at least one module in model")
}
fun IdeaKotlinProjectModel.assertContainsModule(name: String): IdeaKotlinModule {
fun IdeaKpmProject.assertContainsModule(name: String): IdeaKpmModule {
return modules.find { it.name == name }
?: fail("Missing module with name '$name'. Found: ${modules.map { it.name }}")
}
fun IdeaKotlinModule.assertContainsFragment(name: String): IdeaKotlinFragment {
fun IdeaKpmModule.assertContainsFragment(name: String): IdeaKpmFragment {
return fragments.find { it.name == name }
?: fail("Missing fragment with name '$name'. Found: ${fragments.map { it.name }}")
}
fun IdeaKotlinFragment.assertResolvedBinaryDependencies(
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
binaryType: String,
matchers: Set<IdeaKotlinBinaryDependencyMatcher>
): Set<IdeaKotlinResolvedBinaryDependency> {
matchers: Set<IdeaKpmBinaryDependencyMatcher>
): Set<IdeaKpmResolvedBinaryDependency> {
val resolvedBinaryDependencies = dependencies
.mapNotNull { dependency ->
when (dependency) {
is IdeaKotlinResolvedBinaryDependencyImpl -> dependency
is IdeaKotlinUnresolvedBinaryDependencyImpl -> fail("Unexpected unresolved dependency: $dependency")
is IdeaKotlinFragmentDependencyImpl -> null
is IdeaKpmResolvedBinaryDependencyImpl -> dependency
is IdeaKpmUnresolvedBinaryDependencyImpl -> fail("Unexpected unresolved dependency: $dependency")
is IdeaKpmFragmentDependencyImpl -> null
}
}
.filter { it.binaryType == binaryType }
@@ -83,16 +83,16 @@ fun IdeaKotlinFragment.assertResolvedBinaryDependencies(
}
@JvmName("assertResolvedBinaryDependenciesByAnyMatcher")
fun IdeaKotlinFragment.assertResolvedBinaryDependencies(
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
binaryType: String, matchers: Set<Any?>,
) = assertResolvedBinaryDependencies(binaryType, matchers.flatMap { buildIdeaKotlinBinaryDependencyMatchers(it) }.toSet())
) = assertResolvedBinaryDependencies(binaryType, matchers.flatMap { buildIdeaKpmBinaryDependencyMatchers(it) }.toSet())
fun IdeaKotlinFragment.assertResolvedBinaryDependencies(
fun IdeaKpmFragment.assertResolvedBinaryDependencies(
binaryType: String, vararg matchers: Any?
) = assertResolvedBinaryDependencies(binaryType, matchers.toSet())
fun IdeaKotlinFragment.assertFragmentDependencies(matchers: Set<IdeaKotlinFragmentDependencyMatcher>): Set<IdeaKotlinFragmentDependency> {
val sourceDependencies = dependencies.filterIsInstance<IdeaKotlinFragmentDependency>().toSet()
fun IdeaKpmFragment.assertFragmentDependencies(matchers: Set<IdeaKpmFragmentDependencyMatcher>): Set<IdeaKpmFragmentDependency> {
val sourceDependencies = dependencies.filterIsInstance<IdeaKpmFragmentDependency>().toSet()
val unexpectedDependencies = sourceDependencies
.filter { dependency -> matchers.none { matcher -> matcher.matches(dependency) } }
@@ -133,8 +133,8 @@ fun IdeaKotlinFragment.assertFragmentDependencies(matchers: Set<IdeaKotlinFragme
}
@JvmName("assertSourceDependenciesByAnyMatcher")
fun IdeaKotlinFragment.assertFragmentDependencies(matchers: Set<Any?>): Set<IdeaKotlinFragmentDependency> =
assertFragmentDependencies(matchers.flatMap { buildIdeaKotlinFragmentDependencyMatchers(it) }.toSet())
fun IdeaKpmFragment.assertFragmentDependencies(matchers: Set<Any?>): Set<IdeaKpmFragmentDependency> =
assertFragmentDependencies(matchers.flatMap { buildIdeaKpmFragmentDependencyMatchers(it) }.toSet())
fun IdeaKotlinFragment.assertFragmentDependencies(vararg matchers: Any?) =
fun IdeaKpmFragment.assertFragmentDependencies(vararg matchers: Any?) =
assertFragmentDependencies(matchers.toSet())
@@ -5,30 +5,30 @@
package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinBinaryCoordinates
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinBinaryCoordinatesImpl
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinFragment
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinates
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryCoordinatesImpl
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmBinaryDependency
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmFragment
fun parseIdeaKotlinBinaryCoordinates(coordinates: String): IdeaKotlinBinaryCoordinates {
fun parseIdeaKpmBinaryCoordinates(coordinates: String): IdeaKpmBinaryCoordinates {
val parts = coordinates.split(":")
if (parts.size == 3) {
return IdeaKotlinBinaryCoordinatesImpl(parts[0], parts[1], parts[2])
return IdeaKpmBinaryCoordinatesImpl(parts[0], parts[1], parts[2])
}
if (parts.size == 5) {
return IdeaKotlinBinaryCoordinatesImpl(parts[0], parts[1], parts[2], parts[3], parts[4])
return IdeaKpmBinaryCoordinatesImpl(parts[0], parts[1], parts[2], parts[3], parts[4])
}
throw IllegalArgumentException("Cannot parse $coordinates into ${IdeaKotlinBinaryCoordinates::class.java.simpleName}")
throw IllegalArgumentException("Cannot parse $coordinates into ${IdeaKpmBinaryCoordinates::class.java.simpleName}")
}
fun Iterable<IdeaKotlinBinaryCoordinates>.parsableString() =
fun Iterable<IdeaKpmBinaryCoordinates>.parsableString() =
joinToString("," + System.lineSeparator(), "", "") { "\"$it\"" }
@Suppress("unused") // Debugging API
fun IdeaKotlinFragment.parsableDependencyCoordinatesString(): String {
return dependencies.filterIsInstance<IdeaKotlinBinaryDependency>()
fun IdeaKpmFragment.parsableDependencyCoordinatesString(): String {
return dependencies.filterIsInstance<IdeaKpmBinaryDependency>()
.mapNotNull { it.coordinates }.toSet()
.parsableString()
}
@@ -9,9 +9,9 @@ import com.android.build.gradle.internal.publishing.AndroidArtifacts
import org.gradle.api.attributes.Usage
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
import org.jetbrains.kotlin.gradle.kpm.external.project
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinResolvedBinaryDependencyImpl
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmResolvedBinaryDependencyImpl
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.kpm.idea.configureIdeaKotlinSpecialPlatformDependencyResolution
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
@@ -79,7 +79,7 @@ internal fun KotlinPm20ProjectExtension.setupIdeaKotlinFragmentDependencyResolve
additionalDependencies {
project.getAndroidRuntimeJars().map { androidRuntimeJar ->
IdeaKotlinResolvedBinaryDependencyImpl(
IdeaKpmResolvedBinaryDependencyImpl(
binaryType = CLASSPATH_BINARY_TYPE,
binaryFile = androidRuntimeJar,
coordinates = null
@@ -76,7 +76,7 @@ class IdeaKotlinPlatformDependencyResolutionDslHandle internal constructor(
}
@ExternalVariantPlatformDependencyResolutionDsl
fun additionalDependencies(dependencyProvider: (GradleKpmFragment) -> List<IdeaKotlinDependency>) {
fun additionalDependencies(dependencyProvider: (GradleKpmFragment) -> List<IdeaKpmDependency>) {
this.additionalDependencies += IdeaKotlinDependencyResolver { fragment -> dependencyProvider(fragment).toSet() }
}
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationOutput
internal fun IdeaKotlinCompilationOutput(compilation: KotlinCompilationOutput): IdeaKotlinCompilationOutput {
return IdeaKotlinCompilationOutputImpl(
internal fun IdeaKotlinCompilationOutput(compilation: KotlinCompilationOutput): IdeaKpmCompilationOutput {
return IdeaKpmCompilationOutputImpl(
classesDirs = compilation.classesDirs.toSet(),
resourcesDir = compilation.resourcesDir
)
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
* that the dependency resolution result is final.
*/
fun interface IdeaKotlinDependencyEffect {
operator fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>)
operator fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>)
}
fun IdeaKotlinDependencyResolver.withEffect(effect: IdeaKotlinDependencyEffect) = IdeaKotlinDependencyResolver { fragment ->
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
internal object IdeaKotlinDependencyLogger : IdeaKotlinDependencyEffect {
override fun invoke(
fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
) {
val fragmentPathRegex = fragment.project.properties["idea.kotlin.log.dependencies"]?.toString() ?: return
if (!fragment.path.matches(Regex(fragmentPathRegex))) return
@@ -8,10 +8,10 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
fun interface IdeaKotlinDependencyResolver {
fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency>
fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency>
object Empty : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> = emptySet()
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = emptySet()
}
}
@@ -48,7 +48,7 @@ operator fun IdeaKotlinDependencyResolver.plus(
private class CompositeIdeaKotlinDependencyResolver(
val children: List<IdeaKotlinDependencyResolver>
) : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
return children.flatMap { child -> child.resolve(fragment) }.toSet()
}
}
@@ -17,8 +17,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
*/
fun interface IdeaKotlinDependencyTransformer {
fun transform(
fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>
): Set<IdeaKotlinDependency>
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
): Set<IdeaKpmDependency>
}
fun IdeaKotlinDependencyResolver.withTransformer(transformer: IdeaKotlinDependencyTransformer) = IdeaKotlinDependencyResolver { fragment ->
@@ -54,8 +54,8 @@ private class CompositeIdeaKotlinDependencyTransformer(
val transformers: List<IdeaKotlinDependencyTransformer>
) : IdeaKotlinDependencyTransformer {
override fun transform(
fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>
): Set<IdeaKotlinDependency> {
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
): Set<IdeaKpmDependency> {
return transformers.fold(dependencies) { currentDependencies, transformer -> transformer.transform(fragment, currentDependencies) }
}
}
@@ -8,25 +8,25 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.tooling.core.emptyExtras
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKotlinFragment {
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
return if (fragment is GradleKpmVariant) buildIdeaKotlinVariant(fragment)
else buildIdeaKotlinFragment(fragment)
}
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKotlinFragment {
return IdeaKotlinFragmentImpl(
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinFragment(fragment: GradleKpmFragment): IdeaKpmFragment {
return IdeaKpmFragmentImpl(
coordinates = IdeaKotlinFragmentCoordinates(fragment),
platforms = fragment.containingVariants.map { variant -> IdeaKotlinPlatform(variant) }.toSet(),
languageSettings = IdeaKotlinLanguageSettings(fragment.languageSettings),
dependencies = dependencyResolver.resolve(fragment).toList(),
sourceDirectories = fragment.kotlinSourceRoots.sourceDirectories.files.toList().map { file -> IdeaKotlinSourceDirectoryImpl(file) },
sourceDirectories = fragment.kotlinSourceRoots.sourceDirectories.files.toList().map { file -> IdeaKpmSourceDirectoryImpl(file) },
resourceDirectories = emptyList(), // TODO
extras = emptyExtras() // TODO: Requires more sophisticated serialization
)
}
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: GradleKpmVariant): IdeaKotlinVariant {
return IdeaKotlinVariantImpl(
private fun IdeaKotlinProjectModelBuildingContext.buildIdeaKotlinVariant(variant: GradleKpmVariant): IdeaKpmVariant {
return IdeaKpmVariantImpl(
fragment = buildIdeaKotlinFragment(variant),
platform = IdeaKotlinPlatform(variant),
variantAttributes = variant.variantAttributes.mapKeys { (key, _) -> key.uniqueName },
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
internal fun IdeaKotlinFragmentCoordinates(fragment: GradleKpmFragment): IdeaKotlinFragmentCoordinates {
return IdeaKotlinFragmentCoordinatesImpl(
internal fun IdeaKotlinFragmentCoordinates(fragment: GradleKpmFragment): IdeaKpmFragmentCoordinates {
return IdeaKpmFragmentCoordinatesImpl(
module = IdeaKotlinModuleCoordinates(fragment.containingModule),
fragmentName = fragment.name
)
@@ -16,25 +16,25 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toKpmModuleDependency
internal class IdeaKotlinGranularFragmentDependencyResolver(
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
) : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
.filterIsInstance<ChooseVisibleSourceSets>()
.flatMap { resolution -> resolve(fragment, resolution) }
.toSet()
}
private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKpmDependency> {
val gradleProjectIdentifier = resolution.dependency.id as? ProjectComponentIdentifier ?: return emptyList()
val kotlinModuleIdentifier = resolution.dependency.toKpmModuleDependency().moduleIdentifier
return resolution.allVisibleSourceSetNames.map { visibleFragmentName ->
IdeaKotlinFragmentDependencyImpl(
IdeaKpmFragmentDependencyImpl(
type = if (
gradleProjectIdentifier.build == fragment.project.currentBuildId() &&
gradleProjectIdentifier.projectPath == fragment.project.path
) IdeaKotlinFragmentDependency.Type.Friend
else IdeaKotlinFragmentDependency.Type.Regular,
coordinates = IdeaKotlinFragmentCoordinatesImpl(
module = IdeaKotlinModuleCoordinatesImpl(
) IdeaKpmFragmentDependency.Type.Friend
else IdeaKpmFragmentDependency.Type.Regular,
coordinates = IdeaKpmFragmentCoordinatesImpl(
module = IdeaKpmModuleCoordinatesImpl(
buildId = gradleProjectIdentifier.build.name,
projectPath = gradleProjectIdentifier.projectPath,
projectName = gradleProjectIdentifier.projectName,
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultLanguageSettingsBuilder
import org.jetbrains.kotlin.project.model.LanguageSettings
internal fun IdeaKotlinLanguageSettings(languageSettings: LanguageSettings): IdeaKotlinLanguageSettings {
return IdeaKotlinLanguageSettingsImpl(
internal fun IdeaKotlinLanguageSettings(languageSettings: LanguageSettings): IdeaKpmLanguageSettings {
return IdeaKpmLanguageSettingsImpl(
languageVersion = languageSettings.languageVersion,
apiVersion = languageSettings.apiVersion,
isProgressiveMode = languageSettings.progressiveMode,
@@ -18,14 +18,14 @@ import org.jetbrains.kotlin.gradle.utils.withTemporaryDirectory
internal class IdeaKotlinMetadataBinaryDependencyResolver(
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
) : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
return fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
.filterIsInstance<ChooseVisibleSourceSets>()
.flatMap { resolution -> resolve(fragment, resolution) }
.toSet()
}
private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKotlinDependency> {
private fun resolve(fragment: GradleKpmFragment, resolution: ChooseVisibleSourceSets): Iterable<IdeaKpmDependency> {
val gradleModuleIdentifier = resolution.dependency.id as? ModuleComponentIdentifier ?: return emptySet()
val kotlinModuleIdentifier = resolution.dependency.toKpmModuleDependency().moduleIdentifier
@@ -56,10 +56,10 @@ internal class IdeaKotlinMetadataBinaryDependencyResolver(
.apply { if (!isFile) sourceBinaryFile.copyTo(this) }
}
IdeaKotlinResolvedBinaryDependencyImpl(
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
IdeaKpmResolvedBinaryDependencyImpl(
binaryType = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
binaryFile = binaryFile,
coordinates = IdeaKotlinBinaryCoordinatesImpl(
coordinates = IdeaKpmBinaryCoordinatesImpl(
group = gradleModuleIdentifier.group,
module = gradleModuleIdentifier.module,
version = gradleModuleIdentifier.version,
@@ -10,13 +10,13 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.path
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
internal object IdeaKotlinMissingFileDependencyLogger : IdeaKotlinDependencyEffect {
override fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>) {
dependencies.filterIsInstance<IdeaKotlinResolvedBinaryDependency>()
override fun invoke(fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>) {
dependencies.filterIsInstance<IdeaKpmResolvedBinaryDependency>()
.filter { !it.binaryFile.exists() }
.ifNotEmpty { fragment.project.logger.warn(buildWarningMessage(fragment, this)) }
}
private fun buildWarningMessage(fragment: GradleKpmFragment, dependencies: List<IdeaKotlinResolvedBinaryDependency>) = buildString {
private fun buildWarningMessage(fragment: GradleKpmFragment, dependencies: List<IdeaKpmResolvedBinaryDependency>) = buildString {
append("[WARNING] ${fragment.path}: Missing dependency files")
dependencies.forEach { dependency ->
appendLine(dependency.binaryFile)
@@ -7,8 +7,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: GradleKpmModule): IdeaKotlinModule {
return IdeaKotlinModuleImpl(
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinModule(module: GradleKpmModule): IdeaKpmModule {
return IdeaKpmModuleImpl(
coordinates = IdeaKotlinModuleCoordinates(module),
fragments = module.fragments.toList().map { fragment -> IdeaKotlinFragment(fragment) }
)
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmModule
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.currentBuildId
internal fun IdeaKotlinModuleCoordinates(module: GradleKpmModule): IdeaKotlinModuleCoordinates {
return IdeaKotlinModuleCoordinatesImpl(
internal fun IdeaKotlinModuleCoordinates(module: GradleKpmModule): IdeaKpmModuleCoordinates {
return IdeaKpmModuleCoordinatesImpl(
buildId = module.project.currentBuildId().name,
projectPath = module.project.path,
projectName = module.project.name,
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.library.uniqueName
import java.io.File
internal class IdeaKotlinNativePlatformDependencyResolver : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
val konanTargets = fragment.containingVariants
.map { it as? GradleKpmNativeVariantInternal ?: return emptySet() }
.map { it.konanTarget }
@@ -36,17 +36,17 @@ internal class IdeaKotlinNativePlatformDependencyResolver : IdeaKotlinDependency
}
}
private fun Project.resolveKlib(file: File): IdeaKotlinResolvedBinaryDependency? {
private fun Project.resolveKlib(file: File): IdeaKpmResolvedBinaryDependency? {
try {
val kotlinLibrary = resolveSingleFileKlib(
org.jetbrains.kotlin.konan.file.File(file.absolutePath),
strategy = ToolingSingleFileKlibResolveStrategy
)
return IdeaKotlinResolvedBinaryDependencyImpl(
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
return IdeaKpmResolvedBinaryDependencyImpl(
binaryType = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
binaryFile = file,
coordinates = IdeaKotlinBinaryCoordinatesImpl(
coordinates = IdeaKpmBinaryCoordinatesImpl(
group = "org.jetbrains.kotlin.native",
module = kotlinLibrary.shortName ?: kotlinLibrary.uniqueName,
version = project.getKotlinPluginVersion()
@@ -12,12 +12,12 @@ import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
internal object IdeaKotlinNativeStdlibDependencyResolver : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
return setOf(
IdeaKotlinResolvedBinaryDependencyImpl(
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
IdeaKpmResolvedBinaryDependencyImpl(
binaryType = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
binaryFile = KonanDistribution(fragment.project.konanHome).stdlib,
coordinates = IdeaKotlinBinaryCoordinatesImpl(
coordinates = IdeaKpmBinaryCoordinatesImpl(
"org.jetbrains.kotlin", "stdlib-native", fragment.project.getKotlinPluginVersion()
)
)
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurati
internal class IdeaKotlinOriginalMetadataDependencyResolver(
private val fragmentGranularMetadataResolverFactory: GradleKpmFragmentGranularMetadataResolverFactory
) : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
val dependencyIdentifiers = fragmentGranularMetadataResolverFactory.getOrCreate(fragment).resolutions
.filterIsInstance<KeepOriginalDependency>()
.mapNotNull { resolution -> resolution.dependency.id as? ModuleComponentIdentifier }
@@ -29,10 +29,10 @@ internal class IdeaKotlinOriginalMetadataDependencyResolver(
}.artifacts
.map { artifact ->
val artifactId = artifact.variant.owner as ModuleComponentIdentifier
IdeaKotlinResolvedBinaryDependencyImpl(
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
IdeaKpmResolvedBinaryDependencyImpl(
binaryType = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
binaryFile = artifact.file,
coordinates = IdeaKotlinBinaryCoordinatesImpl(artifactId.group, artifactId.module, artifactId.version)
coordinates = IdeaKpmBinaryCoordinatesImpl(artifactId.group, artifactId.module, artifactId.version)
)
}.toSet()
}
@@ -14,16 +14,16 @@ import org.jetbrains.kotlin.konan.target.HostManager
@Suppress("unused")
/* Receiver acts as scope, or key to that function */
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: GradleKpmVariant): IdeaKotlinPlatform {
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: GradleKpmVariant): IdeaKpmPlatform {
when (variant) {
is GradleKpmJvmVariant -> return IdeaKotlinPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is GradleKpmNativeVariantInternal -> return IdeaKotlinPlatform.native(variant.konanTarget.name)
is GradleKpmJvmVariant -> return IdeaKpmPlatform.jvm(variant.compilationData.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is GradleKpmNativeVariantInternal -> return IdeaKpmPlatform.native(variant.konanTarget.name)
is GradleKpmLegacyMappedVariant -> when (val compilation = variant.compilation) {
is KotlinJvmCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is KotlinJvmAndroidCompilation -> return IdeaKotlinPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is KotlinNativeCompilation -> return IdeaKotlinPlatform.native(compilation.konanTarget.name)
is KotlinJsIrCompilation -> return IdeaKotlinPlatform.js(isIr = true)
is KotlinJsCompilation -> return IdeaKotlinPlatform.js(isIr = false)
is KotlinJvmCompilation -> return IdeaKpmPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is KotlinJvmAndroidCompilation -> return IdeaKpmPlatform.jvm(compilation.kotlinOptions.jvmTarget ?: JvmTarget.DEFAULT.name)
is KotlinNativeCompilation -> return IdeaKpmPlatform.native(compilation.konanTarget.name)
is KotlinJsIrCompilation -> return IdeaKpmPlatform.js(isIr = true)
is KotlinJsCompilation -> return IdeaKpmPlatform.js(isIr = false)
}
}
@@ -32,10 +32,10 @@ internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinPlatform(variant: G
assert(false) { "Unable to build 'IdeaKotlinPlatform' from variant ${variant.path}" }
return when (variant.platformType) {
KotlinPlatformType.common -> throw IllegalArgumentException("Unexpected platformType 'common' for variant ${variant.name}")
KotlinPlatformType.jvm -> IdeaKotlinPlatform.jvm(JvmTarget.DEFAULT.name)
KotlinPlatformType.androidJvm -> IdeaKotlinPlatform.jvm(JvmTarget.DEFAULT.name)
KotlinPlatformType.js -> IdeaKotlinPlatform.js(false)
KotlinPlatformType.native -> IdeaKotlinPlatform.native(HostManager.host.name)
KotlinPlatformType.wasm -> IdeaKotlinPlatform.wasm()
KotlinPlatformType.jvm -> IdeaKpmPlatform.jvm(JvmTarget.DEFAULT.name)
KotlinPlatformType.androidJvm -> IdeaKpmPlatform.jvm(JvmTarget.DEFAULT.name)
KotlinPlatformType.js -> IdeaKpmPlatform.js(false)
KotlinPlatformType.native -> IdeaKpmPlatform.native(HostManager.host.name)
KotlinPlatformType.wasm -> IdeaKpmPlatform.wasm()
}
}
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmConfigurationAttribu
* to resolve those binaries. See [IdeaKotlinPlatformDependencyResolver.ArtifactResolution.PlatformFragment]
*/
class IdeaKotlinPlatformDependencyResolver(
private val binaryType: String = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
private val binaryType: String = IdeaKpmDependency.CLASSPATH_BINARY_TYPE,
private val artifactResolution: ArtifactResolution = ArtifactResolution.Variant()
) : IdeaKotlinDependencyResolver {
@@ -51,7 +51,7 @@ class IdeaKotlinPlatformDependencyResolver(
) : ArtifactResolution()
}
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinBinaryDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmBinaryDependency> {
val artifacts = artifactResolution.createArtifactView(fragment)?.artifacts ?: return emptySet()
val unresolvedDependencies = artifacts.failures
@@ -59,18 +59,18 @@ class IdeaKotlinPlatformDependencyResolver(
.map { reason ->
val selector = (reason as? ModuleVersionResolveException)?.selector as? ModuleComponentSelector
/* Can't figure out the dependency here :( */
?: return@map IdeaKotlinUnresolvedBinaryDependencyImpl(
?: return@map IdeaKpmUnresolvedBinaryDependencyImpl(
coordinates = null, cause = reason.message?.takeIf { it.isNotBlank() }
)
IdeaKotlinUnresolvedBinaryDependencyImpl(
coordinates = IdeaKotlinBinaryCoordinatesImpl(selector.group, selector.module, selector.version),
IdeaKpmUnresolvedBinaryDependencyImpl(
coordinates = IdeaKpmBinaryCoordinatesImpl(selector.group, selector.module, selector.version),
cause = reason.message?.takeIf { it.isNotBlank() }
)
}.toSet()
val resolvedDependencies = artifacts.artifacts.mapNotNull { artifact ->
IdeaKotlinResolvedBinaryDependencyImpl(
IdeaKpmResolvedBinaryDependencyImpl(
coordinates = artifact.variant.owner.ideaKotlinBinaryCoordinates,
binaryType = binaryType,
binaryFile = artifact.file
@@ -81,9 +81,9 @@ class IdeaKotlinPlatformDependencyResolver(
}
}
private val ComponentIdentifier.ideaKotlinBinaryCoordinates: IdeaKotlinBinaryCoordinates?
private val ComponentIdentifier.ideaKotlinBinaryCoordinates: IdeaKpmBinaryCoordinates?
get() = when (this) {
is ModuleComponentIdentifier -> IdeaKotlinBinaryCoordinatesImpl(group, module, version)
is ModuleComponentIdentifier -> IdeaKpmBinaryCoordinatesImpl(group, module, version)
else -> null
}
@@ -124,13 +124,13 @@ interface IdeaKotlinProjectModelBuilder {
constraint: FragmentConstraint
)
fun buildIdeaKotlinProjectModel(): IdeaKotlinProjectModel
fun buildIdeaKotlinProjectModel(): IdeaKpmProject
companion object
}
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinProjectModel(extension: KotlinPm20ProjectExtension): IdeaKotlinProjectModel {
return IdeaKotlinProjectModelImpl(
internal fun IdeaKotlinProjectModelBuildingContext.IdeaKotlinProjectModel(extension: KotlinPm20ProjectExtension): IdeaKpmProject {
return IdeaKpmProjectImpl(
gradlePluginVersion = extension.project.getKotlinPluginVersion(),
coreLibrariesVersion = extension.coreLibrariesVersion,
explicitApiModeCliOption = extension.explicitApi?.cliOption,
@@ -70,14 +70,14 @@ internal class IdeaKotlinProjectModelBuilderImpl @UnsafeApi("Use factory methods
)
}
override fun buildIdeaKotlinProjectModel(): IdeaKotlinProjectModel {
override fun buildIdeaKotlinProjectModel(): IdeaKpmProject {
return Context().IdeaKotlinProjectModel(extension)
}
override fun canBuild(modelName: String): Boolean =
modelName == IdeaKotlinProjectModel::class.java.name
modelName == IdeaKpmProject::class.java.name
override fun buildAll(modelName: String, project: Project): IdeaKotlinProjectModel {
override fun buildAll(modelName: String, project: Project): IdeaKpmProject {
check(project === extension.project) { "Expected project ${extension.project.path}, found ${project.path}" }
return buildIdeaKotlinProjectModel()
}
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
internal object IdeaKotlinRefinesDependencyResolver : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> = fragment.refinesClosure
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> = fragment.refinesClosure
.map { refinesDependencyFragment -> createRefinesDependency(refinesDependencyFragment) }.toSet()
private fun createRefinesDependency(fragment: GradleKpmFragment): IdeaKotlinDependency {
return IdeaKotlinFragmentDependencyImpl(
type = IdeaKotlinFragmentDependency.Type.Refines,
private fun createRefinesDependency(fragment: GradleKpmFragment): IdeaKpmDependency {
return IdeaKpmFragmentDependencyImpl(
type = IdeaKpmFragmentDependency.Type.Refines,
coordinates = IdeaKotlinFragmentCoordinates(fragment)
)
}
@@ -14,13 +14,13 @@ internal object IdeaKotlinSinglePlatformStdlibCommonFilter : IdeaKotlinDependenc
override fun transform(
fragment: GradleKpmFragment,
dependencies: Set<IdeaKotlinDependency>
): Set<IdeaKotlinDependency> {
dependencies: Set<IdeaKpmDependency>
): Set<IdeaKpmDependency> {
val platforms = fragment.containingVariants.map { it.platformType }.toSet()
if (platforms.size != 1) return dependencies
return dependencies.filter { dependency ->
val binaryDependency = dependency as? IdeaKotlinBinaryDependency ?: return@filter true
val binaryDependency = dependency as? IdeaKpmBinaryDependency ?: return@filter true
val coordinates = binaryDependency.coordinates ?: return@filter true
coordinates.group != stdlibCoordinatesGroup || coordinates.module !in stdlibCoordinatesModules
}.toSet()
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmVariant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.resolvableMetadataConfigurationName
internal class IdeaKotlinSourcesAndDocumentationResolver : IdeaKotlinDependencyResolver {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKotlinDependency> {
override fun resolve(fragment: GradleKpmFragment): Set<IdeaKpmDependency> {
if (fragment is GradleKpmVariant) {
return resolve(fragment.project, fragment.compileDependenciesConfiguration)
}
@@ -28,26 +28,26 @@ internal class IdeaKotlinSourcesAndDocumentationResolver : IdeaKotlinDependencyR
return resolve(fragment.project, metadataDependencies)
}
private fun resolve(project: Project, configuration: Configuration): Set<IdeaKotlinDependency> {
private fun resolve(project: Project, configuration: Configuration): Set<IdeaKpmDependency> {
val resolutionResult = project.dependencies.createArtifactResolutionQuery()
.forComponents(configuration.incoming.resolutionResult.allComponents.map { it.id })
.withArtifacts(JvmLibrary::class.java, SourcesArtifact::class.java, JavadocArtifact::class.java)
.execute()
return resolve(resolutionResult, SourcesArtifact::class.java, IdeaKotlinDependency.SOURCES_BINARY_TYPE) +
resolve(resolutionResult, JavadocArtifact::class.java, IdeaKotlinDependency.DOCUMENTATION_BINARY_TYPE)
return resolve(resolutionResult, SourcesArtifact::class.java, IdeaKpmDependency.SOURCES_BINARY_TYPE) +
resolve(resolutionResult, JavadocArtifact::class.java, IdeaKpmDependency.DOCUMENTATION_BINARY_TYPE)
}
fun resolve(
resolutionResult: ArtifactResolutionResult, artifactType: Class<out Artifact>, binaryType: String
): Set<IdeaKotlinDependency> {
): Set<IdeaKpmDependency> {
return resolutionResult.resolvedComponents.flatMap { resolved ->
resolved.getArtifacts(artifactType)
.filterIsInstance<ResolvedArtifactResult>()
.mapNotNull { artifact ->
val id = artifact.id.componentIdentifier as? ModuleComponentIdentifier ?: return@mapNotNull null
IdeaKotlinResolvedBinaryDependencyImpl(
coordinates = IdeaKotlinBinaryCoordinatesImpl(group = id.group, module = id.module, version = id.version),
IdeaKpmResolvedBinaryDependencyImpl(
coordinates = IdeaKpmBinaryCoordinatesImpl(group = id.group, module = id.module, version = id.version),
binaryType = binaryType,
binaryFile = artifact.file
)
@@ -9,14 +9,14 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmFragment
internal object IdeaKotlinUnusedSourcesAndDocumentationFilter : IdeaKotlinDependencyTransformer {
override fun transform(
fragment: GradleKpmFragment, dependencies: Set<IdeaKotlinDependency>
): Set<IdeaKotlinDependency> {
fragment: GradleKpmFragment, dependencies: Set<IdeaKpmDependency>
): Set<IdeaKpmDependency> {
val sourcesAndDocumentationDependencies = dependencies
.filterIsInstance<IdeaKotlinResolvedBinaryDependency>()
.filterIsInstance<IdeaKpmResolvedBinaryDependency>()
.filter { dependency -> dependency.isSourcesType || dependency.isDocumentationType }
.toSet()
val classpathCoordinates = dependencies.filterIsInstance<IdeaKotlinResolvedBinaryDependency>()
val classpathCoordinates = dependencies.filterIsInstance<IdeaKpmResolvedBinaryDependency>()
.filter { dependency -> dependency.isClasspathType }
.mapNotNull { it.coordinates }
.toSet()
@@ -10,7 +10,7 @@ import org.gradle.api.artifacts.verification.DependencyVerificationMode
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.testfixtures.ProjectBuilder
import org.jetbrains.kotlin.gradle.addBuildEventsListenerRegistryMock
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModel
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmProject
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
abstract class AbstractKpmExtensionTest {
@@ -27,6 +27,6 @@ fun Project.applyKpmPlugin(configure: KotlinPm20ProjectExtension.() -> Unit = {}
return (extensions.getByName("kotlin") as KotlinPm20ProjectExtension).also(configure)
}
fun KotlinPm20ProjectExtension.buildIdeaKotlinProjectModel(): IdeaKotlinProjectModel {
fun KotlinPm20ProjectExtension.buildIdeaKotlinProjectModel(): IdeaKpmProject {
return ideaKotlinProjectModelBuilder.buildIdeaKotlinProjectModel()
}
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.commonizer.KonanDistribution
import org.jetbrains.kotlin.commonizer.platformLibsDir
import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.gradle.enableDefaultStdlibDependency
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKotlinBinaryDependencyMatcher
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKpmBinaryDependencyMatcher
import org.jetbrains.kotlin.gradle.plugin.mpp.enabledOnCurrentHost
import org.jetbrains.kotlin.konan.target.KonanTarget
@@ -42,8 +42,8 @@ abstract class AbstractLightweightIdeaDependencyResolutionTest {
val Project.konanDistribution get() = KonanDistribution(project.konanHome)
fun Project.nativePlatformLibraries(target: KonanTarget): IdeaKotlinBinaryDependencyMatcher? =
IdeaKotlinBinaryDependencyMatcher.InDirectory(project.konanDistribution.platformLibsDir.resolve(target.name))
fun Project.nativePlatformLibraries(target: KonanTarget): IdeaKpmBinaryDependencyMatcher? =
IdeaKpmBinaryDependencyMatcher.InDirectory(project.konanDistribution.platformLibsDir.resolve(target.name))
.takeIf { target.enabledOnCurrentHost }
}
@@ -16,13 +16,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmIosX64Variant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmLinuxX64Variant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.GradleKpmMacosX64Variant
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.jvm
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
import java.io.ObjectInputStream
import java.io.ObjectOutputStream
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.fail
class IdeaKotlinProjectModelSerializableTest : AbstractKpmExtensionTest() {
@@ -56,8 +51,8 @@ class IdeaKotlinProjectModelSerializableTest : AbstractKpmExtensionTest() {
assertSerializeAndDeserializeEquals(kotlin.buildIdeaKotlinProjectModel())
}
private fun assertSerializeAndDeserializeEquals(model: IdeaKotlinProjectModel) {
val deserializedModel = model.serialize().deserialize<IdeaKotlinProjectModel>()
private fun assertSerializeAndDeserializeEquals(model: IdeaKpmProject) {
val deserializedModel = model.serialize().deserialize<IdeaKpmProject>()
assertEquals(
model.toString(), deserializedModel.toString(),
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.gradle.android.androidPrototype
import org.jetbrains.kotlin.gradle.assumeAndroidSdkAvailable
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsModule
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertIsNotEmpty
@@ -10,8 +10,8 @@ package org.jetbrains.kotlin.gradle.kpm.idea
import org.jetbrains.kotlin.gradle.enableDefaultStdlibDependency
import org.jetbrains.kotlin.gradle.kpm.applyKpmPlugin
import org.jetbrains.kotlin.gradle.kpm.buildIdeaKotlinProjectModel
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKotlinBinaryDependencyMatcher
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKpmDependency.Companion.CLASSPATH_BINARY_TYPE
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.IdeaKpmBinaryDependencyMatcher
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertContainsFragment
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertIsNotEmpty
import org.jetbrains.kotlin.gradle.kpm.idea.testFixtures.assertResolvedBinaryDependencies
@@ -58,7 +58,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
/* native fragments only references dependencies from the native distribution */
listOf("iosCommon", "iosX64", "iosArm64").forEach { fragmentName ->
module.assertContainsFragment(fragmentName).assertResolvedBinaryDependencies(
CLASSPATH_BINARY_TYPE, IdeaKotlinBinaryDependencyMatcher.InDirectory(project.konanDistribution.root)
CLASSPATH_BINARY_TYPE, IdeaKpmBinaryDependencyMatcher.InDirectory(project.konanDistribution.root)
)
}
}
@@ -112,7 +112,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
listOf("iosCommon", "iosX64", "iosArm64").forEach { fragmentName ->
module.assertContainsFragment(fragmentName).assertResolvedBinaryDependencies(
CLASSPATH_BINARY_TYPE,
IdeaKotlinBinaryDependencyMatcher.InDirectory(project.konanDistribution.root),
IdeaKpmBinaryDependencyMatcher.InDirectory(project.konanDistribution.root),
/* Actually not correct as well, since those are jvm dependencies. Filtering is not easily possible here, as well */
"org.jetbrains.kotlin:kotlin-stdlib:1.6.10",
@@ -155,7 +155,7 @@ class StdlibKotlinIdeaDependencyResolutionTest : AbstractLightweightIdeaDependen
listOf("iosCommon", "iosX64", "iosArm64").forEach { fragmentName ->
module.assertContainsFragment(fragmentName).assertResolvedBinaryDependencies(
CLASSPATH_BINARY_TYPE,
IdeaKotlinBinaryDependencyMatcher.InDirectory(project.konanDistribution.root),
IdeaKpmBinaryDependencyMatcher.InDirectory(project.konanDistribution.root),
)
}
}