[Gradle] Replace IdeMultiplatformImport.*Level enums with simpler IdeMultiplatformImport.Priority
KT-58601
This commit is contained in:
committed by
Space Team
parent
d4e1321c65
commit
e1e2c04044
+1
-1
@@ -98,7 +98,7 @@ fun KotlinMultiplatformExtension.androidTargetPrototype(): PrototypeAndroidTarge
|
||||
AndroidBootClasspathIdeDependencyResolver(project),
|
||||
constraint = IdeMultiplatformImport.SourceSetConstraint { sourceSet -> sourceSet.android != null },
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyTransform
|
||||
public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport {
|
||||
public static final field Companion Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Companion;
|
||||
public static fun instance (Lorg/gradle/api/Project;)Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport;
|
||||
public abstract fun registerAdditionalArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;)V
|
||||
public abstract fun registerAdditionalArtifactResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeAdditionalArtifactResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;)V
|
||||
public abstract fun registerDependencyEffect (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyEffect;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;)V
|
||||
public abstract fun registerDependencyResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;)V
|
||||
public abstract fun registerDependencyResolver (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyResolver;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;)V
|
||||
public abstract fun registerDependencyTransformer (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeDependencyTransformer;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint;Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyTransformationPhase;)V
|
||||
public abstract fun registerExtrasSerializationExtension (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinExtrasSerializationExtension;)V
|
||||
public abstract fun resolveDependencies (Ljava/lang/String;)Ljava/util/Set;
|
||||
@@ -67,13 +67,6 @@ public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultip
|
||||
public abstract fun serialize (Lorg/jetbrains/kotlin/tooling/core/Extras$Key;Ljava/lang/Object;)[B
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel : java/lang/Enum {
|
||||
public static final field Default Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;
|
||||
public static final field Overwrite Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;
|
||||
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;
|
||||
public static fun values ()[Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionLevel;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase : java/lang/Enum {
|
||||
public static final field PostAdditionalArtifactResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;
|
||||
public static final field PreAdditionalArtifactResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;
|
||||
@@ -86,13 +79,6 @@ public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport
|
||||
public final fun instance (Lorg/gradle/api/Project;)Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel : java/lang/Enum {
|
||||
public static final field Default Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;
|
||||
public static final field Overwrite Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;
|
||||
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;
|
||||
public static fun values ()[Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionLevel;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase : java/lang/Enum {
|
||||
public static final field BinaryDependencyResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;
|
||||
public static final field PostDependencyResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;
|
||||
@@ -112,6 +98,23 @@ public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport
|
||||
public static fun values ()[Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyTransformationPhase;
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority : java/lang/Comparable {
|
||||
public static final field Companion Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority$Companion;
|
||||
public fun <init> (I)V
|
||||
public synthetic fun compareTo (Ljava/lang/Object;)I
|
||||
public fun compareTo (Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;)I
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public final fun getValue ()I
|
||||
public fun hashCode ()I
|
||||
}
|
||||
|
||||
public final class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority$Companion {
|
||||
public final fun getHigh ()Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;
|
||||
public final fun getLow ()Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;
|
||||
public final fun getNormal ()Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;
|
||||
public final fun getVeryHigh ()Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$Priority;
|
||||
}
|
||||
|
||||
public abstract interface class org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint {
|
||||
public static final field Companion Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint$Companion;
|
||||
public abstract fun invoke (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)Z
|
||||
|
||||
+55
-22
@@ -10,7 +10,6 @@ import org.gradle.api.Project
|
||||
import org.gradle.api.logging.Logger
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
|
||||
import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
|
||||
@@ -21,8 +20,6 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||
@@ -60,28 +57,28 @@ interface IdeMultiplatformImport {
|
||||
|
||||
/**
|
||||
* Registers a given [resolver] to run during Gradle import:
|
||||
* The given resolver will only run if [constraint] matches and if not overwritten by another
|
||||
* resolver registered in the same [phase] and level=[DependencyResolutionLevel.Overwrite]
|
||||
* The given resolver will only run if the [constraint] matches a given SourceSet and if not overwritten by another
|
||||
* resolver registered in the same [phase] and higher [Priority]
|
||||
*/
|
||||
@ExternalKotlinTargetApi
|
||||
fun registerDependencyResolver(
|
||||
resolver: IdeDependencyResolver,
|
||||
constraint: SourceSetConstraint,
|
||||
phase: DependencyResolutionPhase,
|
||||
level: DependencyResolutionLevel = Default,
|
||||
priority: Priority = Priority.normal,
|
||||
)
|
||||
|
||||
/**
|
||||
* Registers a given [resolver] to run during Gradle import:
|
||||
* The given resolver will only run if [constraint] matches and if not overwritten by another
|
||||
* resolver registered in the same [phase] and level [AdditionalArtifactResolutionLevel.Overwrite]
|
||||
* The given resolver will only run if the [constraint] matches a given SourceSet and if not overwritten by another
|
||||
* resolver registered in the same [phase] and higher [Priority]
|
||||
*/
|
||||
@ExternalKotlinTargetApi
|
||||
fun registerAdditionalArtifactResolver(
|
||||
resolver: IdeAdditionalArtifactResolver,
|
||||
constraint: SourceSetConstraint,
|
||||
phase: AdditionalArtifactResolutionPhase,
|
||||
level: AdditionalArtifactResolutionLevel = AdditionalArtifactResolutionLevel.Default,
|
||||
priority: Priority = Priority.normal,
|
||||
)
|
||||
|
||||
/**
|
||||
@@ -155,19 +152,60 @@ interface IdeMultiplatformImport {
|
||||
}
|
||||
|
||||
/**
|
||||
* Any [IdeDependencyResolver] has to be registered specifying a certain resolution level.
|
||||
* Generally, all resolvers registered in a given resolution level will work collaboratively, meaning the dependency resolution
|
||||
* result is the aggregation of all resolvers running.
|
||||
* Indicating the 'priority' of a given [IdeDependencyResolver] or [IdeAdditionalArtifactResolver]:
|
||||
* When resolving dependencies, only the highest priority resolver will be selected and executed.
|
||||
* If there are multiple resolvers with the same [Priority] registered, then all of them will be executed
|
||||
* and the result will be merged.
|
||||
*
|
||||
* However, only the resolvers in the highest resolution result will run e.g.
|
||||
* If resolvers with level [Overwrite] are found, then only those will contribute to the dependency resolution.
|
||||
* Otherwise, all [Default] resolvers will run.
|
||||
* By 'default' resolvers are registered using [Priority.normal].
|
||||
* The Kotlin Gradle Plugin is not expected to register resolvers outside the [normal] or [high] priorities
|
||||
* External Kotlin Target maintainers _(such as Google)_ can therefore use [veryHigh] to overwrite all resolvers
|
||||
* from the Kotlin Gradle plugin or [low] to only register a resolver if there is nothing available by default
|
||||
* from the Kotlin Gradle plugin.
|
||||
*/
|
||||
@ExternalKotlinTargetApi
|
||||
enum class DependencyResolutionLevel {
|
||||
Default, Overwrite
|
||||
class Priority(val value: Int) : Comparable<Priority> {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (other !is Priority) return false
|
||||
return other.value == value
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return value.hashCode()
|
||||
}
|
||||
|
||||
override fun compareTo(other: Priority): Int {
|
||||
return this.value.compareTo(other.value)
|
||||
}
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
companion object {
|
||||
/**
|
||||
* Not used by the Kotlin Gradle plugin: Can be used by external Kotlin Target maintainers to
|
||||
* provide resolvers only if KGP does not offer any out of the box.
|
||||
*/
|
||||
val low = Priority(-10)
|
||||
|
||||
/**
|
||||
* Default [Priority] used to register resolvers.
|
||||
* Used by the Kotlin Gradle plugin.
|
||||
*/
|
||||
val normal = Priority(0)
|
||||
|
||||
/**
|
||||
* Used by the Kotlin Gradle plugin for special cases (like android, jvmAndAndroid, ...)
|
||||
*/
|
||||
val high = Priority(10)
|
||||
|
||||
/**
|
||||
* Not used by the Kotlin Gradle plugin: Can be used by external Kotlin Target maintainers to
|
||||
* overwrite the Kotlin Gradle plugin
|
||||
*/
|
||||
val veryHigh = Priority(100)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
enum class AdditionalArtifactResolutionPhase {
|
||||
PreAdditionalArtifactResolution,
|
||||
@@ -175,11 +213,6 @@ interface IdeMultiplatformImport {
|
||||
PostAdditionalArtifactResolution
|
||||
}
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
enum class AdditionalArtifactResolutionLevel {
|
||||
Default, Overwrite
|
||||
}
|
||||
|
||||
/**
|
||||
* Any [IdeDependencyResolver] has to be registered for a given transformation phase.
|
||||
* The phases will be executed in the order of this enums ordinal.
|
||||
|
||||
+21
-21
@@ -20,98 +20,98 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
||||
resolver = IdeDependsOnDependencyResolver,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeFriendSourceDependencyResolver,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
||||
constraint = !SourceSetConstraint.isLeaf,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
||||
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeNativeStdlibDependencyResolver,
|
||||
constraint = SourceSetConstraint.isNative,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeNativePlatformDependencyResolver,
|
||||
constraint = SourceSetConstraint.isNative,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeCommonizedNativePlatformDependencyResolver,
|
||||
constraint = SourceSetConstraint.isNative,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeTransformedMetadataDependencyResolver,
|
||||
constraint = !SourceSetConstraint.isLeaf and !SourceSetConstraint.isJvmAndAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeOriginalMetadataDependencyResolver,
|
||||
constraint = !SourceSetConstraint.isLeaf,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeBinaryDependencyResolver(),
|
||||
constraint = SourceSetConstraint.isSinglePlatformType,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdePlatformCinteropDependencyResolver,
|
||||
constraint = SourceSetConstraint.isSingleKotlinTarget and SourceSetConstraint.isNative,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeCommonizedCinteropDependencyResolver,
|
||||
constraint = { sourceSet -> sourceSet.commonizerTarget.getOrThrow() is SharedCommonizerTarget },
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeCInteropMetadataDependencyClasspathResolver,
|
||||
constraint = SourceSetConstraint.isNative and !SourceSetConstraint.isSingleKotlinTarget,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeProjectToProjectCInteropDependencyResolver,
|
||||
constraint = SourceSetConstraint.isNative and SourceSetConstraint.isSingleKotlinTarget,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -122,21 +122,21 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
||||
resolver = IdeJvmAndAndroidPlatformBinaryDependencyResolver(extension.project),
|
||||
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdePlatformSourcesResolver(),
|
||||
constraint = SourceSetConstraint.isSinglePlatformType,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
registerAdditionalArtifactResolver(
|
||||
resolver = IdeMetadataSourcesResolver(),
|
||||
constraint = !SourceSetConstraint.isSinglePlatformType,
|
||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
||||
level = IdeMultiplatformImport.AdditionalArtifactResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
|
||||
if (extension.project.kotlinPropertiesProvider.enableSlowIdeSourcesJarResolver) {
|
||||
@@ -144,7 +144,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
||||
resolver = IdeArtifactResolutionQuerySourcesAndDocumentationResolver,
|
||||
constraint = SourceSetConstraint.unconstrained,
|
||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
||||
level = IdeMultiplatformImport.AdditionalArtifactResolutionLevel.Default
|
||||
priority = IdeMultiplatformImport.Priority.normal
|
||||
)
|
||||
}
|
||||
|
||||
@@ -167,21 +167,21 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
||||
resolver = IdeDependencyResolver.empty,
|
||||
constraint = SourceSetConstraint.isAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
||||
priority = IdeMultiplatformImport.Priority.high
|
||||
)
|
||||
|
||||
registerDependencyResolver(
|
||||
resolver = IdeDependencyResolver.empty,
|
||||
constraint = SourceSetConstraint.isAndroid,
|
||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
||||
priority = IdeMultiplatformImport.Priority.high
|
||||
)
|
||||
|
||||
registerAdditionalArtifactResolver(
|
||||
resolver = IdeAdditionalArtifactResolver.empty,
|
||||
constraint = SourceSetConstraint.isAndroid,
|
||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
||||
level = IdeMultiplatformImport.AdditionalArtifactResolutionLevel.Overwrite
|
||||
priority = IdeMultiplatformImport.Priority.high
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+12
-12
@@ -63,10 +63,10 @@ internal class IdeMultiplatformImportImpl(
|
||||
resolver: IdeDependencyResolver,
|
||||
constraint: SourceSetConstraint,
|
||||
phase: DependencyResolutionPhase,
|
||||
level: DependencyResolutionLevel
|
||||
priority: Priority,
|
||||
) {
|
||||
registeredDependencyResolvers.add(
|
||||
RegisteredDependencyResolver(extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, level)
|
||||
RegisteredDependencyResolver(extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, priority)
|
||||
)
|
||||
|
||||
if (resolver is IdeDependencyResolver.WithBuildDependencies) {
|
||||
@@ -91,11 +91,11 @@ internal class IdeMultiplatformImportImpl(
|
||||
resolver: IdeAdditionalArtifactResolver,
|
||||
constraint: SourceSetConstraint,
|
||||
phase: AdditionalArtifactResolutionPhase,
|
||||
level: AdditionalArtifactResolutionLevel
|
||||
priority: Priority
|
||||
) {
|
||||
registeredAdditionalArtifactResolvers.add(
|
||||
RegisteredAdditionalArtifactResolver(
|
||||
extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, level
|
||||
extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, priority
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -123,11 +123,11 @@ internal class IdeMultiplatformImportImpl(
|
||||
val applicableResolvers = registeredDependencyResolvers
|
||||
.filter { it.phase == phase }
|
||||
.filter { it.constraint(sourceSet) }
|
||||
.groupBy { it.level }
|
||||
.groupBy { it.priority }
|
||||
|
||||
/* Find resolvers in the highest resolution level and only consider those */
|
||||
DependencyResolutionLevel.values().reversed().forEach { level ->
|
||||
val resolvers = applicableResolvers[level].orEmpty()
|
||||
applicableResolvers.keys.sortedDescending().forEach { priority ->
|
||||
val resolvers = applicableResolvers[priority].orEmpty()
|
||||
if (resolvers.isNotEmpty()) {
|
||||
return@resolve IdeDependencyResolver(resolvers).resolve(sourceSet)
|
||||
}
|
||||
@@ -145,10 +145,10 @@ internal class IdeMultiplatformImportImpl(
|
||||
val applicableResolvers = registeredAdditionalArtifactResolvers
|
||||
.filter { it.phase == phase }
|
||||
.filter { it.constraint(sourceSet) }
|
||||
.groupBy { it.level }
|
||||
.groupBy { it.priority }
|
||||
|
||||
AdditionalArtifactResolutionLevel.values().reversed().forEach { level ->
|
||||
val resolvers = applicableResolvers[level].orEmpty()
|
||||
applicableResolvers.keys.sortedDescending().forEach { priority ->
|
||||
val resolvers = applicableResolvers[priority].orEmpty()
|
||||
if (resolvers.isNotEmpty()) {
|
||||
resolvers.forEach { resolver -> resolver.resolve(sourceSet, dependencies) }
|
||||
return@resolve
|
||||
@@ -202,7 +202,7 @@ internal class IdeMultiplatformImportImpl(
|
||||
private val resolver: IdeDependencyResolver,
|
||||
val constraint: SourceSetConstraint,
|
||||
val phase: DependencyResolutionPhase,
|
||||
val level: DependencyResolutionLevel,
|
||||
val priority: Priority,
|
||||
) : IdeDependencyResolver {
|
||||
|
||||
private class TimeMeasuredResult(val timeInMillis: Long, val dependencies: Set<IdeaKotlinDependency>)
|
||||
@@ -245,7 +245,7 @@ internal class IdeMultiplatformImportImpl(
|
||||
private val resolver: IdeAdditionalArtifactResolver,
|
||||
val constraint: SourceSetConstraint,
|
||||
val phase: AdditionalArtifactResolutionPhase,
|
||||
val level: AdditionalArtifactResolutionLevel
|
||||
val priority: Priority,
|
||||
) : IdeAdditionalArtifactResolver {
|
||||
override fun resolve(sourceSet: KotlinSourceSet, dependencies: Set<IdeaKotlinDependency>) {
|
||||
runCatching { measureTimeMillis { resolver.resolve(sourceSet, dependencies) } }
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:Suppress("FunctionName")
|
||||
|
||||
package org.jetbrains.kotlin.gradle.unitTests
|
||||
|
||||
import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.Priority
|
||||
import org.junit.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNotEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class IdeMultiplatformImportPriorityTest {
|
||||
|
||||
@Test
|
||||
fun `test - equals and hashCode`() {
|
||||
assertEquals(Priority(10), Priority(10))
|
||||
assertEquals(Priority(10).hashCode(), Priority(10).hashCode())
|
||||
|
||||
assertNotEquals(Priority(10), Priority(11))
|
||||
assertNotEquals(Priority(10).hashCode(), Priority(11).hashCode())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - compareTo`() {
|
||||
assertTrue(Priority(10) > Priority(9))
|
||||
assertTrue(Priority(9) < Priority(10))
|
||||
assertTrue(Priority(9) < Priority(10))
|
||||
assertTrue(Priority(10) <= Priority(10))
|
||||
assertTrue(Priority(10) >= Priority(10))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - predefined values`() {
|
||||
val predefinedValues = listOf(
|
||||
Priority.low,
|
||||
Priority.normal,
|
||||
Priority.high,
|
||||
Priority.veryHigh
|
||||
)
|
||||
|
||||
assertEquals(predefinedValues, predefinedValues.sorted())
|
||||
assertEquals(predefinedValues.reversed(), predefinedValues.sortedDescending())
|
||||
|
||||
predefinedValues.zipWithNext { lower, higher ->
|
||||
assertNotEquals(lower, higher)
|
||||
assertTrue(lower < higher)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user