[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),
|
AndroidBootClasspathIdeDependencyResolver(project),
|
||||||
constraint = IdeMultiplatformImport.SourceSetConstraint { sourceSet -> sourceSet.android != null },
|
constraint = IdeMultiplatformImport.SourceSetConstraint { sourceSet -> sourceSet.android != null },
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
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 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 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 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 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 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 registerExtrasSerializationExtension (Lorg/jetbrains/kotlin/gradle/idea/serialize/IdeaKotlinExtrasSerializationExtension;)V
|
||||||
public abstract fun resolveDependencies (Ljava/lang/String;)Ljava/util/Set;
|
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 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 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 PostAdditionalArtifactResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$AdditionalArtifactResolutionPhase;
|
||||||
public static final field PreAdditionalArtifactResolution 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 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 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 BinaryDependencyResolution Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$DependencyResolutionPhase;
|
||||||
public static final field PostDependencyResolution 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 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 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 static final field Companion Lorg/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport$SourceSetConstraint$Companion;
|
||||||
public abstract fun invoke (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)Z
|
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.Logger
|
||||||
import org.gradle.api.logging.Logging
|
import org.gradle.api.logging.Logging
|
||||||
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
|
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.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||||
import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension
|
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.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
import org.jetbrains.kotlin.gradle.plugin.extraProperties
|
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.ide.IdeMultiplatformImport.SourceSetConstraint
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
@@ -60,28 +57,28 @@ interface IdeMultiplatformImport {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a given [resolver] to run during Gradle import:
|
* Registers a given [resolver] to run during Gradle import:
|
||||||
* The given resolver will only run if [constraint] matches and if not overwritten by another
|
* 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 level=[DependencyResolutionLevel.Overwrite]
|
* resolver registered in the same [phase] and higher [Priority]
|
||||||
*/
|
*/
|
||||||
@ExternalKotlinTargetApi
|
@ExternalKotlinTargetApi
|
||||||
fun registerDependencyResolver(
|
fun registerDependencyResolver(
|
||||||
resolver: IdeDependencyResolver,
|
resolver: IdeDependencyResolver,
|
||||||
constraint: SourceSetConstraint,
|
constraint: SourceSetConstraint,
|
||||||
phase: DependencyResolutionPhase,
|
phase: DependencyResolutionPhase,
|
||||||
level: DependencyResolutionLevel = Default,
|
priority: Priority = Priority.normal,
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a given [resolver] to run during Gradle import:
|
* Registers a given [resolver] to run during Gradle import:
|
||||||
* The given resolver will only run if [constraint] matches and if not overwritten by another
|
* 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 level [AdditionalArtifactResolutionLevel.Overwrite]
|
* resolver registered in the same [phase] and higher [Priority]
|
||||||
*/
|
*/
|
||||||
@ExternalKotlinTargetApi
|
@ExternalKotlinTargetApi
|
||||||
fun registerAdditionalArtifactResolver(
|
fun registerAdditionalArtifactResolver(
|
||||||
resolver: IdeAdditionalArtifactResolver,
|
resolver: IdeAdditionalArtifactResolver,
|
||||||
constraint: SourceSetConstraint,
|
constraint: SourceSetConstraint,
|
||||||
phase: AdditionalArtifactResolutionPhase,
|
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.
|
* Indicating the 'priority' of a given [IdeDependencyResolver] or [IdeAdditionalArtifactResolver]:
|
||||||
* Generally, all resolvers registered in a given resolution level will work collaboratively, meaning the dependency resolution
|
* When resolving dependencies, only the highest priority resolver will be selected and executed.
|
||||||
* result is the aggregation of all resolvers running.
|
* 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.
|
* By 'default' resolvers are registered using [Priority.normal].
|
||||||
* If resolvers with level [Overwrite] are found, then only those will contribute to the dependency resolution.
|
* The Kotlin Gradle Plugin is not expected to register resolvers outside the [normal] or [high] priorities
|
||||||
* Otherwise, all [Default] resolvers will run.
|
* 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
|
@ExternalKotlinTargetApi
|
||||||
enum class DependencyResolutionLevel {
|
class Priority(val value: Int) : Comparable<Priority> {
|
||||||
Default, Overwrite
|
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
|
@ExternalKotlinTargetApi
|
||||||
enum class AdditionalArtifactResolutionPhase {
|
enum class AdditionalArtifactResolutionPhase {
|
||||||
PreAdditionalArtifactResolution,
|
PreAdditionalArtifactResolution,
|
||||||
@@ -175,11 +213,6 @@ interface IdeMultiplatformImport {
|
|||||||
PostAdditionalArtifactResolution
|
PostAdditionalArtifactResolution
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExternalKotlinTargetApi
|
|
||||||
enum class AdditionalArtifactResolutionLevel {
|
|
||||||
Default, Overwrite
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Any [IdeDependencyResolver] has to be registered for a given transformation phase.
|
* Any [IdeDependencyResolver] has to be registered for a given transformation phase.
|
||||||
* The phases will be executed in the order of this enums ordinal.
|
* 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,
|
resolver = IdeDependsOnDependencyResolver,
|
||||||
constraint = SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeFriendSourceDependencyResolver,
|
resolver = IdeFriendSourceDependencyResolver,
|
||||||
constraint = SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
resolver = IdeVisibleMultiplatformSourceDependencyResolver,
|
||||||
constraint = !SourceSetConstraint.isLeaf,
|
constraint = !SourceSetConstraint.isLeaf,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
resolver = IdeJvmAndAndroidSourceDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isJvmAndAndroid,
|
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourceDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeNativeStdlibDependencyResolver,
|
resolver = IdeNativeStdlibDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isNative,
|
constraint = SourceSetConstraint.isNative,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeNativePlatformDependencyResolver,
|
resolver = IdeNativePlatformDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isNative,
|
constraint = SourceSetConstraint.isNative,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeCommonizedNativePlatformDependencyResolver,
|
resolver = IdeCommonizedNativePlatformDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isNative,
|
constraint = SourceSetConstraint.isNative,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeTransformedMetadataDependencyResolver,
|
resolver = IdeTransformedMetadataDependencyResolver,
|
||||||
constraint = !SourceSetConstraint.isLeaf and !SourceSetConstraint.isJvmAndAndroid,
|
constraint = !SourceSetConstraint.isLeaf and !SourceSetConstraint.isJvmAndAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeOriginalMetadataDependencyResolver,
|
resolver = IdeOriginalMetadataDependencyResolver,
|
||||||
constraint = !SourceSetConstraint.isLeaf,
|
constraint = !SourceSetConstraint.isLeaf,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeBinaryDependencyResolver(),
|
resolver = IdeBinaryDependencyResolver(),
|
||||||
constraint = SourceSetConstraint.isSinglePlatformType,
|
constraint = SourceSetConstraint.isSinglePlatformType,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdePlatformCinteropDependencyResolver,
|
resolver = IdePlatformCinteropDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isSingleKotlinTarget and SourceSetConstraint.isNative,
|
constraint = SourceSetConstraint.isSingleKotlinTarget and SourceSetConstraint.isNative,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeCommonizedCinteropDependencyResolver,
|
resolver = IdeCommonizedCinteropDependencyResolver,
|
||||||
constraint = { sourceSet -> sourceSet.commonizerTarget.getOrThrow() is SharedCommonizerTarget },
|
constraint = { sourceSet -> sourceSet.commonizerTarget.getOrThrow() is SharedCommonizerTarget },
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeCInteropMetadataDependencyClasspathResolver,
|
resolver = IdeCInteropMetadataDependencyClasspathResolver,
|
||||||
constraint = SourceSetConstraint.isNative and !SourceSetConstraint.isSingleKotlinTarget,
|
constraint = SourceSetConstraint.isNative and !SourceSetConstraint.isSingleKotlinTarget,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default,
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeProjectToProjectCInteropDependencyResolver,
|
resolver = IdeProjectToProjectCInteropDependencyResolver,
|
||||||
constraint = SourceSetConstraint.isNative and SourceSetConstraint.isSingleKotlinTarget,
|
constraint = SourceSetConstraint.isNative and SourceSetConstraint.isSingleKotlinTarget,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
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),
|
resolver = IdeJvmAndAndroidPlatformBinaryDependencyResolver(extension.project),
|
||||||
constraint = SourceSetConstraint.isJvmAndAndroid,
|
constraint = SourceSetConstraint.isJvmAndAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdePlatformSourcesResolver(),
|
resolver = IdePlatformSourcesResolver(),
|
||||||
constraint = SourceSetConstraint.isSinglePlatformType,
|
constraint = SourceSetConstraint.isSinglePlatformType,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
registerAdditionalArtifactResolver(
|
registerAdditionalArtifactResolver(
|
||||||
resolver = IdeMetadataSourcesResolver(),
|
resolver = IdeMetadataSourcesResolver(),
|
||||||
constraint = !SourceSetConstraint.isSinglePlatformType,
|
constraint = !SourceSetConstraint.isSinglePlatformType,
|
||||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
||||||
level = IdeMultiplatformImport.AdditionalArtifactResolutionLevel.Default
|
priority = IdeMultiplatformImport.Priority.normal
|
||||||
)
|
)
|
||||||
|
|
||||||
if (extension.project.kotlinPropertiesProvider.enableSlowIdeSourcesJarResolver) {
|
if (extension.project.kotlinPropertiesProvider.enableSlowIdeSourcesJarResolver) {
|
||||||
@@ -144,7 +144,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti
|
|||||||
resolver = IdeArtifactResolutionQuerySourcesAndDocumentationResolver,
|
resolver = IdeArtifactResolutionQuerySourcesAndDocumentationResolver,
|
||||||
constraint = SourceSetConstraint.unconstrained,
|
constraint = SourceSetConstraint.unconstrained,
|
||||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
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,
|
resolver = IdeDependencyResolver.empty,
|
||||||
constraint = SourceSetConstraint.isAndroid,
|
constraint = SourceSetConstraint.isAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.BinaryDependencyResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
priority = IdeMultiplatformImport.Priority.high
|
||||||
)
|
)
|
||||||
|
|
||||||
registerDependencyResolver(
|
registerDependencyResolver(
|
||||||
resolver = IdeDependencyResolver.empty,
|
resolver = IdeDependencyResolver.empty,
|
||||||
constraint = SourceSetConstraint.isAndroid,
|
constraint = SourceSetConstraint.isAndroid,
|
||||||
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
phase = IdeMultiplatformImport.DependencyResolutionPhase.SourcesAndDocumentationResolution,
|
||||||
level = IdeMultiplatformImport.DependencyResolutionLevel.Overwrite
|
priority = IdeMultiplatformImport.Priority.high
|
||||||
)
|
)
|
||||||
|
|
||||||
registerAdditionalArtifactResolver(
|
registerAdditionalArtifactResolver(
|
||||||
resolver = IdeAdditionalArtifactResolver.empty,
|
resolver = IdeAdditionalArtifactResolver.empty,
|
||||||
constraint = SourceSetConstraint.isAndroid,
|
constraint = SourceSetConstraint.isAndroid,
|
||||||
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
phase = IdeMultiplatformImport.AdditionalArtifactResolutionPhase.SourcesAndDocumentationResolution,
|
||||||
level = IdeMultiplatformImport.AdditionalArtifactResolutionLevel.Overwrite
|
priority = IdeMultiplatformImport.Priority.high
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-12
@@ -63,10 +63,10 @@ internal class IdeMultiplatformImportImpl(
|
|||||||
resolver: IdeDependencyResolver,
|
resolver: IdeDependencyResolver,
|
||||||
constraint: SourceSetConstraint,
|
constraint: SourceSetConstraint,
|
||||||
phase: DependencyResolutionPhase,
|
phase: DependencyResolutionPhase,
|
||||||
level: DependencyResolutionLevel
|
priority: Priority,
|
||||||
) {
|
) {
|
||||||
registeredDependencyResolvers.add(
|
registeredDependencyResolvers.add(
|
||||||
RegisteredDependencyResolver(extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, level)
|
RegisteredDependencyResolver(extension.project.kotlinIdeMultiplatformImportStatistics, resolver, constraint, phase, priority)
|
||||||
)
|
)
|
||||||
|
|
||||||
if (resolver is IdeDependencyResolver.WithBuildDependencies) {
|
if (resolver is IdeDependencyResolver.WithBuildDependencies) {
|
||||||
@@ -91,11 +91,11 @@ internal class IdeMultiplatformImportImpl(
|
|||||||
resolver: IdeAdditionalArtifactResolver,
|
resolver: IdeAdditionalArtifactResolver,
|
||||||
constraint: SourceSetConstraint,
|
constraint: SourceSetConstraint,
|
||||||
phase: AdditionalArtifactResolutionPhase,
|
phase: AdditionalArtifactResolutionPhase,
|
||||||
level: AdditionalArtifactResolutionLevel
|
priority: Priority
|
||||||
) {
|
) {
|
||||||
registeredAdditionalArtifactResolvers.add(
|
registeredAdditionalArtifactResolvers.add(
|
||||||
RegisteredAdditionalArtifactResolver(
|
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
|
val applicableResolvers = registeredDependencyResolvers
|
||||||
.filter { it.phase == phase }
|
.filter { it.phase == phase }
|
||||||
.filter { it.constraint(sourceSet) }
|
.filter { it.constraint(sourceSet) }
|
||||||
.groupBy { it.level }
|
.groupBy { it.priority }
|
||||||
|
|
||||||
/* Find resolvers in the highest resolution level and only consider those */
|
/* Find resolvers in the highest resolution level and only consider those */
|
||||||
DependencyResolutionLevel.values().reversed().forEach { level ->
|
applicableResolvers.keys.sortedDescending().forEach { priority ->
|
||||||
val resolvers = applicableResolvers[level].orEmpty()
|
val resolvers = applicableResolvers[priority].orEmpty()
|
||||||
if (resolvers.isNotEmpty()) {
|
if (resolvers.isNotEmpty()) {
|
||||||
return@resolve IdeDependencyResolver(resolvers).resolve(sourceSet)
|
return@resolve IdeDependencyResolver(resolvers).resolve(sourceSet)
|
||||||
}
|
}
|
||||||
@@ -145,10 +145,10 @@ internal class IdeMultiplatformImportImpl(
|
|||||||
val applicableResolvers = registeredAdditionalArtifactResolvers
|
val applicableResolvers = registeredAdditionalArtifactResolvers
|
||||||
.filter { it.phase == phase }
|
.filter { it.phase == phase }
|
||||||
.filter { it.constraint(sourceSet) }
|
.filter { it.constraint(sourceSet) }
|
||||||
.groupBy { it.level }
|
.groupBy { it.priority }
|
||||||
|
|
||||||
AdditionalArtifactResolutionLevel.values().reversed().forEach { level ->
|
applicableResolvers.keys.sortedDescending().forEach { priority ->
|
||||||
val resolvers = applicableResolvers[level].orEmpty()
|
val resolvers = applicableResolvers[priority].orEmpty()
|
||||||
if (resolvers.isNotEmpty()) {
|
if (resolvers.isNotEmpty()) {
|
||||||
resolvers.forEach { resolver -> resolver.resolve(sourceSet, dependencies) }
|
resolvers.forEach { resolver -> resolver.resolve(sourceSet, dependencies) }
|
||||||
return@resolve
|
return@resolve
|
||||||
@@ -202,7 +202,7 @@ internal class IdeMultiplatformImportImpl(
|
|||||||
private val resolver: IdeDependencyResolver,
|
private val resolver: IdeDependencyResolver,
|
||||||
val constraint: SourceSetConstraint,
|
val constraint: SourceSetConstraint,
|
||||||
val phase: DependencyResolutionPhase,
|
val phase: DependencyResolutionPhase,
|
||||||
val level: DependencyResolutionLevel,
|
val priority: Priority,
|
||||||
) : IdeDependencyResolver {
|
) : IdeDependencyResolver {
|
||||||
|
|
||||||
private class TimeMeasuredResult(val timeInMillis: Long, val dependencies: Set<IdeaKotlinDependency>)
|
private class TimeMeasuredResult(val timeInMillis: Long, val dependencies: Set<IdeaKotlinDependency>)
|
||||||
@@ -245,7 +245,7 @@ internal class IdeMultiplatformImportImpl(
|
|||||||
private val resolver: IdeAdditionalArtifactResolver,
|
private val resolver: IdeAdditionalArtifactResolver,
|
||||||
val constraint: SourceSetConstraint,
|
val constraint: SourceSetConstraint,
|
||||||
val phase: AdditionalArtifactResolutionPhase,
|
val phase: AdditionalArtifactResolutionPhase,
|
||||||
val level: AdditionalArtifactResolutionLevel
|
val priority: Priority,
|
||||||
) : IdeAdditionalArtifactResolver {
|
) : IdeAdditionalArtifactResolver {
|
||||||
override fun resolve(sourceSet: KotlinSourceSet, dependencies: Set<IdeaKotlinDependency>) {
|
override fun resolve(sourceSet: KotlinSourceSet, dependencies: Set<IdeaKotlinDependency>) {
|
||||||
runCatching { measureTimeMillis { resolver.resolve(sourceSet, dependencies) } }
|
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