diff --git a/kotlin-analysis-api/build.gradle.kts b/kotlin-analysis-api/build.gradle.kts index bf087d542f..b13460bd59 100644 --- a/kotlin-analysis-api/build.gradle.kts +++ b/kotlin-analysis-api/build.gradle.kts @@ -1,4 +1,5 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import java.io.ByteArrayOutputStream description = "Kotlin Symbol Processing implementation using Kotlin Analysis API" @@ -23,6 +24,7 @@ plugins { } val depSourceJars by configurations.creating +val depJarsForCheck by configurations.creating dependencies { listOf( @@ -84,6 +86,7 @@ dependencies { ) { isTransitive = false } + implementation("org.jetbrains:annotations:24.1.0") compileOnly(project(":common-deps")) @@ -91,6 +94,10 @@ dependencies { implementation(project(":common-util")) testImplementation(kotlin("stdlib", aaKotlinBaseVersion)) + + depJarsForCheck("org.jetbrains.kotlin", "kotlin-stdlib", aaKotlinBaseVersion) + depJarsForCheck(project(":api")) + depJarsForCheck(project(":common-deps")) } sourceSets.main { @@ -121,8 +128,31 @@ tasks.withType() { } exclude("kotlin/**") archiveClassifier.set("") - minimize() + minimize { + exclude(dependency("org.lz4:lz4-java:.*")) + } mergeServiceFiles() + + doLast { + // Checks for missing dependencies + val jarJar = archiveFile.get().asFile + val depJars = depJarsForCheck.resolve().map(File::getPath) + val stdout = ByteArrayOutputStream() + try { + exec { + executable = "jdeps" + args = listOf( + "--multi-release", "base", + "--missing-deps", + "-cp", depJars.joinToString(":"), jarJar.path + ) + standardOutput = stdout + } + } catch (e: org.gradle.process.internal.ExecException) { + logger.warn(e.message) + } + logger.warn(stdout.toString()) + } } tasks { diff --git a/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt b/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt index de0aa23fcc..378072222e 100644 --- a/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt +++ b/kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/KotlinSymbolProcessing.kt @@ -705,6 +705,16 @@ internal val DEAR_SHADOW_JAR_PLEASE_DO_NOT_REMOVE_THESE = listOf( org.jetbrains.kotlin.load.java.ErasedOverridabilityCondition::class.java, org.jetbrains.kotlin.load.java.FieldOverridabilityCondition::class.java, org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInsLoaderImpl::class.java, + com.fasterxml.aalto.AaltoInputProperties::class.java, + com.google.errorprone.annotations.CheckReturnValue::class.java, + com.intellij.openapi.application.JetBrainsProtocolHandler::class.java, + com.intellij.openapi.editor.impl.EditorDocumentPriorities::class.java, + com.intellij.psi.tree.ChildRoleBase::class.java, + com.intellij.util.xmlb.Constants::class.java, + com.intellij.xml.CommonXmlStrings::class.java, + javax.annotation.ParametersAreNonnullByDefault::class.java, + org.codehaus.stax2.XMLInputFactory2::class.java, + org.codehaus.stax2.XMLStreamProperties::class.java, ) fun TargetPlatform.getPlatformInfo(kspConfig: KSPConfig): List =