[Gradle] Implement IdeaKotlinClasspath concept

KT-55492
This commit is contained in:
Sebastian Sellmair
2022-12-15 10:43:18 +01:00
committed by Space Team
parent f6c63c6e4f
commit 4eb5641e2a
36 changed files with 1404 additions and 1270 deletions
@@ -318,29 +318,51 @@ public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordina
}
public abstract class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency : org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency {
public static final field Companion Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency$Companion;
public static final field KOTLIN_COMPILE_BINARY_TYPE Ljava/lang/String;
public abstract fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency$Companion {
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependencyKt {
public static final fun isClasspathBinaryType (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;)Z
public static final fun isDocumentationBinaryType (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;)Z
public static final fun isSourcesBinaryType (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;)Z
public static final fun isKotlinCompileBinaryType (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;)Z
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath : java/io/Serializable, java/util/Set, kotlin/jvm/internal/markers/KMutableSet {
public synthetic fun <init> (Ljava/util/Set;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun add (Ljava/io/File;)Z
public synthetic fun add (Ljava/lang/Object;)Z
public fun addAll (Ljava/util/Collection;)Z
public fun clear ()V
public fun contains (Ljava/io/File;)Z
public final fun contains (Ljava/lang/Object;)Z
public fun containsAll (Ljava/util/Collection;)Z
public fun equals (Ljava/lang/Object;)Z
public fun getSize ()I
public fun hashCode ()I
public fun isEmpty ()Z
public fun iterator ()Ljava/util/Iterator;
public fun remove (Ljava/io/File;)Z
public final fun remove (Ljava/lang/Object;)Z
public fun removeAll (Ljava/util/Collection;)Z
public fun retainAll (Ljava/util/Collection;)Z
public final fun size ()I
public fun toArray ()[Ljava/lang/Object;
public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspathKt {
public static final fun IdeaKotlinClasspath ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public static final fun IdeaKotlinClasspath (Ljava/lang/Iterable;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public static final fun IdeaKotlinClasspath ([Ljava/io/File;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
}
public abstract interface class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency : java/io/Serializable, org/jetbrains/kotlin/tooling/core/HasMutableExtras {
public static final field CLASSPATH_BINARY_TYPE Ljava/lang/String;
public static final field Companion Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency$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/idea/tcs/IdeaKotlinDependencyCoordinates;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency$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/idea/tcs/IdeaKotlinDependencyCoordinates : java/io/Serializable {
}
@@ -353,32 +375,18 @@ public abstract interface annotation class org/jetbrains/kotlin/gradle/idea/tcs/
public abstract interface annotation class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinModel : java/lang/annotation/Annotation {
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates : org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependencyCoordinates {
public static final field serialVersionUID J
public fun <init> (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Ljava/io/File;)V
public final fun component1 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;
public final fun component2 ()Ljava/io/File;
public final fun copy (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Ljava/io/File;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Ljava/io/File;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;
public fun equals (Ljava/lang/Object;)Z
public final fun getArtifactFile ()Ljava/io/File;
public final fun getProject ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency : org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency {
public static final field serialVersionUID J
public fun <init> (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)V
public synthetic fun <init> (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)V
public synthetic fun <init> (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;
public final fun component2 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;
public final fun component2 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;
public final fun component3 ()Lorg/jetbrains/kotlin/tooling/core/MutableExtras;
public final fun copy (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;
public final fun copy (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;
public fun equals (Ljava/lang/Object;)Z
public synthetic fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependencyCoordinates;
public fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactCoordinates;
public fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates;
public synthetic fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras;
public fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/MutableExtras;
public final fun getType ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinSourceDependency$Type;
@@ -387,7 +395,7 @@ public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifac
public fun toString ()Ljava/lang/String;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates : java/io/Serializable {
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordinates : java/io/Serializable, org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependencyCoordinates {
public static final field serialVersionUID J
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
@@ -405,17 +413,17 @@ public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectCoordin
public final class org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency : org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency {
public static final field serialVersionUID J
public fun <init> (Ljava/lang/String;Ljava/io/File;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/io/File;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)V
public synthetic fun <init> (Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/io/File;
public final fun component2 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public final fun component3 ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;
public final fun component4 ()Lorg/jetbrains/kotlin/tooling/core/MutableExtras;
public final fun copy (Ljava/lang/String;Ljava/io/File;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;Ljava/lang/String;Ljava/io/File;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;
public final fun copy (Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;
public static synthetic fun copy$default (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;Ljava/lang/String;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;Lorg/jetbrains/kotlin/tooling/core/MutableExtras;ILjava/lang/Object;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinResolvedBinaryDependency;
public fun equals (Ljava/lang/Object;)Z
public final fun getBinaryFile ()Ljava/io/File;
public final fun getBinaryType ()Ljava/lang/String;
public final fun getClasspath ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryCoordinates;
public synthetic fun getCoordinates ()Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependencyCoordinates;
public synthetic fun getExtras ()Lorg/jetbrains/kotlin/tooling/core/Extras;
@@ -541,3 +549,15 @@ public final class org/jetbrains/kotlin/gradle/idea/tcs/extras/PrimitiveExtrasKt
public static final fun setNativeStdlib (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency;Z)V
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/extras/ProjectArtifactClasspathExtrasKt {
public static final fun getArtifactsClasspath (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public static final fun getProjectArtifactsClasspathKey ()Lorg/jetbrains/kotlin/tooling/core/Extras$Key;
}
public final class org/jetbrains/kotlin/gradle/idea/tcs/extras/SourcesAndDocumentationExtrasKt {
public static final fun getDocumentationClasspath (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public static final fun getDocumentationClasspathKey ()Lorg/jetbrains/kotlin/tooling/core/Extras$Key;
public static final fun getSourcesClasspath (Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinBinaryDependency;)Lorg/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinClasspath;
public static final fun getSourcesClasspathKey ()Lorg/jetbrains/kotlin/tooling/core/Extras$Key;
}
@@ -7,15 +7,18 @@ package org.jetbrains.kotlin.gradle.idea.tcs
import org.jetbrains.kotlin.tooling.core.MutableExtras
import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
import java.io.File
sealed class IdeaKotlinBinaryDependency : IdeaKotlinDependency {
abstract override val coordinates: IdeaKotlinBinaryCoordinates?
companion object {
const val KOTLIN_COMPILE_BINARY_TYPE = "KOTLIN_COMPILE"
}
}
data class IdeaKotlinResolvedBinaryDependency(
val binaryType: String,
val binaryFile: File,
val classpath: IdeaKotlinClasspath,
override val coordinates: IdeaKotlinBinaryCoordinates?,
override val extras: MutableExtras = mutableExtrasOf()
) : IdeaKotlinBinaryDependency() {
@@ -34,11 +37,5 @@ data class IdeaKotlinUnresolvedBinaryDependency(
}
}
val IdeaKotlinResolvedBinaryDependency.isClasspathBinaryType
get() = this.binaryType == IdeaKotlinDependency.CLASSPATH_BINARY_TYPE
val IdeaKotlinResolvedBinaryDependency.isSourcesBinaryType
get() = this.binaryType == IdeaKotlinDependency.SOURCES_BINARY_TYPE
val IdeaKotlinResolvedBinaryDependency.isDocumentationBinaryType
get() = this.binaryType == IdeaKotlinDependency.DOCUMENTATION_BINARY_TYPE
val IdeaKotlinResolvedBinaryDependency.isKotlinCompileBinaryType
get() = this.binaryType == IdeaKotlinBinaryDependency.KOTLIN_COMPILE_BINARY_TYPE
@@ -0,0 +1,88 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.idea.tcs
import java.io.File
import java.io.Serializable
fun IdeaKotlinClasspath(files: Iterable<File>): IdeaKotlinClasspath = IdeaKotlinClasspath.from(files)
fun IdeaKotlinClasspath(vararg files: File): IdeaKotlinClasspath = IdeaKotlinClasspath.from(files.toList())
fun IdeaKotlinClasspath(): IdeaKotlinClasspath = IdeaKotlinClasspath.empty()
@IdeaKotlinModel
class IdeaKotlinClasspath private constructor(private val files: MutableSet<File> = mutableSetOf()) : MutableSet<File>, Serializable {
override val size: Int
get() = files.size
override fun add(element: File): Boolean {
return files.add(normalise(element))
}
override fun addAll(elements: Collection<File>): Boolean {
return files.addAll(elements.map(::normalise))
}
override fun clear() {
files.clear()
}
override fun contains(element: File): Boolean {
return files.contains(normalise(element))
}
override fun containsAll(elements: Collection<File>): Boolean {
return files.containsAll(elements.map(::normalise).toSet())
}
override fun isEmpty(): Boolean {
return files.isEmpty()
}
override fun iterator(): MutableIterator<File> {
return files.iterator()
}
override fun remove(element: File): Boolean {
return files.remove(normalise(element))
}
override fun removeAll(elements: Collection<File>): Boolean {
return files.removeAll(elements.map(::normalise).toSet())
}
override fun retainAll(elements: Collection<File>): Boolean {
return files.retainAll(elements.map(::normalise).toSet())
}
override fun equals(other: Any?): Boolean {
if (other !is IdeaKotlinClasspath) return false
return files == other.files
}
override fun hashCode(): Int {
return files.hashCode()
}
internal companion object {
private const val serialVersionUID = 0L
fun normalise(file: File): File {
return file.absoluteFile.normalize()
}
fun from(files: Iterable<File>): IdeaKotlinClasspath {
return IdeaKotlinClasspath(files.map(::normalise).toMutableSet())
}
fun from(file: File): IdeaKotlinClasspath {
return IdeaKotlinClasspath(mutableSetOf(normalise(file)))
}
fun empty() = IdeaKotlinClasspath(mutableSetOf())
}
}
@@ -11,10 +11,4 @@ import java.io.Serializable
@IdeaKotlinModel
sealed interface IdeaKotlinDependency : Serializable, HasMutableExtras {
val coordinates: IdeaKotlinDependencyCoordinates?
companion object {
const val CLASSPATH_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.classpathBinaryType"
const val SOURCES_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.sourcesBinaryType"
const val DOCUMENTATION_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.documentationBinaryType"
}
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.gradle.idea.tcs
import java.io.File
import java.io.Serializable
@IdeaKotlinModel
@@ -26,6 +25,21 @@ data class IdeaKotlinBinaryCoordinates(
}
}
@IdeaKotlinModel
data class IdeaKotlinProjectCoordinates(
val buildId: String,
val projectPath: String,
val projectName: String
) : Serializable, IdeaKotlinDependencyCoordinates {
override fun toString(): String {
return "${buildId.takeIf { it != ":" }?.plus(":").orEmpty()}$projectPath"
}
internal companion object {
const val serialVersionUID = 0L
}
}
data class IdeaKotlinSourceCoordinates(
val project: IdeaKotlinProjectCoordinates,
val sourceSetName: String
@@ -43,17 +57,3 @@ data class IdeaKotlinSourceCoordinates(
const val serialVersionUID = 0L
}
}
data class IdeaKotlinProjectArtifactCoordinates(
val project: IdeaKotlinProjectCoordinates,
val artifactFile: File
) : IdeaKotlinDependencyCoordinates {
override fun toString(): String {
return "$project${File.pathSeparator}$artifactFile"
}
internal companion object {
const val serialVersionUID = 0L
}
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.tooling.core.*
data class IdeaKotlinProjectArtifactDependency(
val type: IdeaKotlinSourceDependency.Type,
override val coordinates: IdeaKotlinProjectArtifactCoordinates,
override val coordinates: IdeaKotlinProjectCoordinates,
override val extras: MutableExtras = mutableExtrasOf()
) : IdeaKotlinDependency {
@@ -22,7 +22,7 @@ data class IdeaKotlinProjectArtifactDependency(
type = type,
extras = extras.toMutableExtras(),
coordinates = IdeaKotlinSourceCoordinates(
project = coordinates.project,
project = coordinates,
sourceSetName = sourceSetName
)
)
@@ -1,23 +0,0 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.idea.tcs
import java.io.Serializable
@IdeaKotlinModel
data class IdeaKotlinProjectCoordinates(
val buildId: String,
val projectPath: String,
val projectName: String
) : Serializable {
override fun toString(): String {
return "${buildId.takeIf { it != ":" }?.plus(":").orEmpty()}$projectPath"
}
internal companion object {
const val serialVersionUID = 0L
}
}
@@ -40,4 +40,4 @@ val isCommonizedKey = extrasKeyOf<Boolean>("isCommonized")
/**
* Marks dependencies produced by the commonizer
*/
var IdeaKotlinBinaryDependency.isCommonized by isCommonizedKey.readWriteProperty.notNull(false)
var IdeaKotlinBinaryDependency.isCommonized by isCommonizedKey.readWriteProperty.notNull(false)
@@ -0,0 +1,15 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.idea.tcs.extras
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinClasspath
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinProjectArtifactDependency
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
import org.jetbrains.kotlin.tooling.core.lazyProperty
val projectArtifactsClasspathKey = extrasKeyOf<IdeaKotlinClasspath>("artifactsClasspath")
val IdeaKotlinProjectArtifactDependency.artifactsClasspath by projectArtifactsClasspathKey.lazyProperty { IdeaKotlinClasspath() }
@@ -0,0 +1,29 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.idea.tcs.extras
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinBinaryDependency
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinClasspath
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
import org.jetbrains.kotlin.tooling.core.lazyProperty
/* Sources (-sources.jar) */
val sourcesClasspathKey = extrasKeyOf<IdeaKotlinClasspath>("sourcesClasspath")
/**
* Contains all resolved -sources.jar artifacts associated with this dependency
*/
val IdeaKotlinBinaryDependency.sourcesClasspath by sourcesClasspathKey.lazyProperty { IdeaKotlinClasspath() }
/* Documentation (-javadoc.jar) */
val documentationClasspathKey = extrasKeyOf<IdeaKotlinClasspath>("documentationClasspath")
/**
* Contains all resolved -javadoc.jar artifacts associated with this dependency
*/
val IdeaKotlinBinaryDependency.documentationClasspath by documentationClasspathKey.lazyProperty { IdeaKotlinClasspath() }
@@ -0,0 +1,65 @@
/*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.idea.test.tcs
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinClasspath
import java.io.File
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotEquals
import kotlin.test.assertTrue
class IdeaKotlinClasspathTest {
@Test
fun `test - equals`() {
val first = IdeaKotlinClasspath()
val second = IdeaKotlinClasspath()
assertEquals(first, second)
first.add(File("a"))
assertNotEquals(first, second)
second.add(File("a").absoluteFile)
assertEquals(first, second)
assertEquals(first, IdeaKotlinClasspath(File("a")))
}
@Test
fun `test - stores files absolute`() {
val classpath = IdeaKotlinClasspath()
classpath.add(File("test"))
assertNotEquals(classpath.toSet(), setOf(File("test")))
assertEquals(classpath.toSet(), setOf(File("test").absoluteFile))
}
@Test
fun `test - contains file - relative and absolute`() {
val classpath = IdeaKotlinClasspath()
classpath.add(File("test"))
assertTrue(File("test") in classpath)
assertTrue(File("test").absoluteFile in classpath)
}
@Test
fun `test - remove file - relative and absolute`() {
val classpath = IdeaKotlinClasspath()
classpath.add(File("test"))
assertTrue(classpath.isNotEmpty())
classpath.remove(File("test"))
assertTrue(classpath.isEmpty())
classpath.add(File("test"))
assertTrue(classpath.isNotEmpty())
classpath.remove(File("test").absoluteFile)
assertTrue(classpath.isEmpty())
}
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.idea.testFixtures.tcs
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinProjectArtifactDependency
import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceDependency
import org.jetbrains.kotlin.gradle.idea.tcs.extras.artifactsClasspath
import java.io.File
internal class IdeaKotlinProjectArtifactDependencyMatcher(
@@ -22,9 +23,9 @@ internal class IdeaKotlinProjectArtifactDependencyMatcher(
override fun matches(dependency: IdeaKotlinDependency): Boolean {
if (dependency !is IdeaKotlinProjectArtifactDependency) return false
return dependency.type == type &&
dependency.coordinates.project.buildId == buildId &&
dependency.coordinates.project.projectPath == projectPath &&
artifactFilePath.matches(dependency.coordinates.artifactFile)
dependency.coordinates.buildId == buildId &&
dependency.coordinates.projectPath == projectPath &&
dependency.artifactsClasspath.any { artifactFilePath.matches(it) }
}
}
@@ -37,21 +37,19 @@ object TestIdeaKotlinInstances {
sourceSetName = "mySourceSetName"
)
val simpleProjectArtifactCoordinates = IdeaKotlinProjectArtifactCoordinates(
project = simpleProjectCoordinates,
artifactFile = File("myArtifactFile.klib")
)
val simpleUnresolvedBinaryDependency = IdeaKotlinUnresolvedBinaryDependency(
cause = "myCause",
coordinates = simpleBinaryCoordinates,
extras = extrasWithIntAndStrings.toMutableExtras()
)
val simpleClasspath = IdeaKotlinClasspath(setOf(File("myFirstFile.klib"), File("mySecondFile.jar").absoluteFile))
val emptyClasspath = IdeaKotlinClasspath()
val simpleResolvedBinaryDependency = IdeaKotlinResolvedBinaryDependency(
binaryType = IdeaKotlinDependency.CLASSPATH_BINARY_TYPE,
binaryFile = File("myBinaryFile.klib"),
binaryType = IdeaKotlinBinaryDependency.KOTLIN_COMPILE_BINARY_TYPE,
classpath = simpleClasspath,
coordinates = simpleBinaryCoordinates,
extras = extrasWithIntAndStrings.toMutableExtras()
)
@@ -63,8 +61,8 @@ object TestIdeaKotlinInstances {
)
val simpleProjectArtifactDependency = IdeaKotlinProjectArtifactDependency(
coordinates = simpleProjectArtifactCoordinates,
coordinates = simpleProjectCoordinates,
type = IdeaKotlinSourceDependency.Type.Regular,
extras = extrasWithIntAndStrings.toMutableExtras()
)
}
}