From c32741bd3ad36cefb3670455657ee0dd0d4e3458 Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sat, 7 Jun 2025 14:07:37 +0530 Subject: [PATCH 1/6] Generate KSP classes jar as output --- MODULE.bazel | 2 + kotlin/internal/jvm/compile.bzl | 11 +- kotlin_rules_maven_install.json | 714 +++++++++++++++++- .../kotlin/builder/tasks/KotlinBuilder.kt | 4 + .../builder/tasks/jvm/CompilationTask.kt | 15 + .../tasks/jvm/KotlinJvmTaskExecutor.kt | 3 + src/main/protobuf/kotlin_model.proto | 2 + 7 files changed, 730 insertions(+), 21 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 4d9865fc8..87e92ebf8 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -78,6 +78,8 @@ maven.install( "com.squareup.moshi:moshi-kotlin:1.15.1", "com.squareup.moshi:moshi-kotlin-codegen:1.15.1", "org.codehaus.plexus:plexus-utils:3.0.24", + "io.micronaut:micronaut-inject-kotlin:4.8.11", + "io.micronaut:micronaut-context:4.8.11", ], fail_if_repin_required = True, fetch_sources = True, diff --git a/kotlin/internal/jvm/compile.bzl b/kotlin/internal/jvm/compile.bzl index 4d41ab1f2..d5a0cefa0 100644 --- a/kotlin/internal/jvm/compile.bzl +++ b/kotlin/internal/jvm/compile.bzl @@ -408,6 +408,7 @@ def _run_ksp_builder_actions( A struct containing KSP outputs """ ksp_generated_java_srcjar = ctx.actions.declare_file(ctx.label.name + "-ksp-kt-gensrc.jar") + ksp_generated_classes_jar = ctx.actions.declare_file(ctx.label.name + "-ksp-kt-genclasses.jar") _run_kt_builder_action( ctx = ctx, @@ -422,12 +423,13 @@ def _run_ksp_builder_actions( plugins = plugins, outputs = { "ksp_generated_java_srcjar": ksp_generated_java_srcjar, + "ksp_generated_classesjar": ksp_generated_classes_jar, }, build_kotlin = False, mnemonic = "KotlinKsp", ) - return struct(ksp_generated_class_jar = ksp_generated_java_srcjar) + return struct(ksp_generated_class_jar = ksp_generated_classes_jar, ksp_generated_src_jar = ksp_generated_java_srcjar) def _run_kt_builder_action( ctx, @@ -759,6 +761,7 @@ def _run_kt_java_builder_actions( # Run KSP ksp_generated_class_jar = None + ksp_generated_src_jar = None if has_kt_sources and ksp_annotation_processors: ksp_outputs = _run_ksp_builder_actions( ctx, @@ -772,7 +775,9 @@ def _run_kt_java_builder_actions( plugins = plugins, ) ksp_generated_class_jar = ksp_outputs.ksp_generated_class_jar - generated_ksp_src_jars.append(ksp_generated_class_jar) + output_jars.append(ksp_generated_class_jar) + ksp_generated_src_jar = ksp_outputs.ksp_generated_src_jar + generated_ksp_src_jars.append(ksp_generated_src_jar) java_infos = [] @@ -897,7 +902,7 @@ def _run_kt_java_builder_actions( if annotation_processors or ksp_annotation_processors: is_ksp = (ksp_annotation_processors != None) processor = ksp_annotation_processors if is_ksp else annotation_processors - gen_jar = ksp_generated_class_jar if is_ksp else ap_generated_src_jar + gen_jar = ksp_generated_src_jar if is_ksp else ap_generated_src_jar outputs_list = [java_info.outputs for java_info in java_infos] annotation_processing = _create_annotation_processing( annotation_processors = processor, diff --git a/kotlin_rules_maven_install.json b/kotlin_rules_maven_install.json index 3b76dbad1..2f91199b0 100755 --- a/kotlin_rules_maven_install.json +++ b/kotlin_rules_maven_install.json @@ -1,11 +1,25 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": -129239194, - "__RESOLVED_ARTIFACTS_HASH": -667872389, + "__INPUT_ARTIFACTS_HASH": 1322467024, + "__RESOLVED_ARTIFACTS_HASH": -838171408, "conflict_resolution": { "com.google.guava:guava:27.1-jre": "com.google.guava:guava:33.2.1-jre" }, "artifacts": { + "com.github.javaparser:javaparser-core": { + "shasums": { + "jar": "a24c4fa7799ffe0c7a9af11d4eecd757098ed4498f86067bf28b46b2bfea1833", + "sources": "892e0fd9e6dd0a8672b09e9a6bb151958e378a35d0d052ae6067d9e70f00899a" + }, + "version": "3.26.3" + }, + "com.github.javaparser:javaparser-symbol-solver-core": { + "shasums": { + "jar": "56b8a20297b940e0554584bea6429a62a424f3385d7eb8040f5a0254d6f715ac", + "sources": "671f407b3962344fe068b5c44d02ed54aae6ae9b778c3c17e685b310e4420391" + }, + "version": "3.26.3" + }, "com.google.auto.service:auto-service": { "shasums": { "jar": "1f48f451503e623daba7d9ed368cca0f81e1e3815653a4560113e12c0129ebd5", @@ -244,6 +258,76 @@ }, "version": "1.2.0" }, + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": { + "shasums": { + "jar": "2987d4cb8d489fcda27153169bc69653b3ff43f6be0a7d9be63d79a23fce6e71", + "sources": "f810824aedb6ab5f9edb1ccdbd860bc9563911259153cfa7bb616e0f33095a39" + }, + "version": "1.6.2" + }, + "io.micronaut.sourcegen:micronaut-sourcegen-model": { + "shasums": { + "jar": "6f874b068dd33687fc6d22845f42fe9592554f323c35888d138a9016d9701dc6", + "sources": "8c55574a7c0cc3c809addf1a1b44894b4448b5e1834c967af635010919df0159" + }, + "version": "1.6.2" + }, + "io.micronaut:micronaut-aop": { + "shasums": { + "jar": "a89ee6bd8a075dc7dbbb3d83c0a8f0392930189fb3c343793649dc4cba6f044c", + "sources": "d73f03beee08516744821adfe4f92bd8f1948279953d03d364461c43c2cdfde0" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-context": { + "shasums": { + "jar": "08c4c14aecd9491750dcc02a0882f5680c9f272075433a3a0f5f123955dd3a3d", + "sources": "b04154fa6d182a332941a741272443cae9c153383186fefea5aa41807e2e907f" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-core": { + "shasums": { + "jar": "00e29a1ae0d6c3f06f23f806156505e45a8c1d8e1c84fd48fbf383efdcf8e805", + "sources": "473bcb3a3e63ed26b7543d0678a00016e7d76a680d00e6f891a4b2f2ca701de8" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-core-processor": { + "shasums": { + "jar": "c93272f3d1068d1551136e3ec02ac1abe5640e8758f5db8547f0f10e3767bbbe", + "sources": "507e0ca8fdfc86d9ca1e77207e2a7e91db715a5d147c6163218a4f63bcaa9db9" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-core-reactive": { + "shasums": { + "jar": "de3cde951bee8f558012d052cedfce6481c444afc762f98a59bbfb21f0c646d6", + "sources": "49718dd56b27618fc72862116f9bc67c3215394f5c0db0bafe46ed29a336b243" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-inject": { + "shasums": { + "jar": "ccb9379218a99084f300c058a6ef75249ee557cf6f832192f6c648fa63492d73", + "sources": "6add85496f6986ba0184be5054ba1917eb76bcb45d31d71ff1f64620b8fc82e7" + }, + "version": "4.8.11" + }, + "io.micronaut:micronaut-inject-kotlin": { + "shasums": { + "jar": "6c9130239245bbcbb6a3c6ff4f117fb5c17dd0581356f9ccd7c8907b5226e79a", + "sources": "e3c01b5f6238f571876b4fd0a2c7fa59a7ff3a91699373d05095aded28fa6249" + }, + "version": "4.8.11" + }, + "jakarta.annotation:jakarta.annotation-api": { + "shasums": { + "jar": "5f65fdaf424eee2b55e1d882ba9bb376be93fb09b37b808be6e22e8851c909fe", + "sources": "4b8abc5d33e33ad0cc53588532dafece90135cc83629429534af1c0900747094" + }, + "version": "2.1.1" + }, "jakarta.inject:jakarta.inject-api": { "shasums": { "jar": "f7dc98062fccf14126abb751b64fab12c312566e8cbdc8483598bffcea93af7c", @@ -442,31 +526,38 @@ }, "org.ow2.asm:asm": { "shasums": { - "jar": "1263369b59e29c943918de11d6d6152e2ec6085ce63e5710516f8c67d368e4bc", - "sources": "5ceb3d0b41a8eb8b416f28778b27c0e290143b6dc29d887b1cf40e2c0727f096" + "jar": "8cadd43ac5eb6d09de05faecca38b917a040bb9139c7edeb4cc81c740b713281", + "sources": "22e9507b0c494daaedb33b8148c30cd618c6dacc3992be8b50eaaafeb6a8ba8d" }, - "version": "9.3" + "version": "9.7.1" }, "org.ow2.asm:asm-analysis": { "shasums": { - "jar": "e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474", - "sources": "57bdf5b407dc122b8f4118e2fbf686719c81f6b7c97598e17ce7a456ea151866" + "jar": "85b29371884ba31bb76edf22323c2c24e172c3267a67152eba3d1ccc2e041ef2", + "sources": "ee0f33502dfabdfce4bd5e44ad91c9b947916433bf48c29f43036c9db9ee3639" }, - "version": "7.0" + "version": "9.7.1" }, "org.ow2.asm:asm-commons": { "shasums": { - "jar": "fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d", - "sources": "7076b9f1cd3fdae003447b9fd546290b9ab76e34f147b2bf0b981ddae86f7053" + "jar": "9a579b54d292ad9be171d4313fd4739c635592c2b5ac3a459bbd1049cddec6a0", + "sources": "a2bd3ba563c5f2e19eea66df99437ef81d69a0dcb3def07028442a273a2da562" }, - "version": "7.0" + "version": "9.7.1" }, "org.ow2.asm:asm-tree": { "shasums": { - "jar": "cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c", - "sources": "8888c88a9889b1b413d90e440b6b9c894e8d31632a473bd70e683645aba382dd" + "jar": "9929881f59eb6b840e86d54570c77b59ce721d104e6dfd7a40978991c2d3b41f", + "sources": "442d32be6106a41b61c2edf05f8ae496c4c54cca6e73d9d59d38e9cb54820c44" }, - "version": "7.0" + "version": "9.7.1" + }, + "org.ow2.asm:asm-util": { + "shasums": { + "jar": "f885be71b5c90556f5f1ad1c4f9276b29b96057c497d46666fe4ddbec3cb43c6", + "sources": "d58055660e99d6b15d8d23303e81cde321cfff06f10537f96dbebdca34b7e342" + }, + "version": "9.7.1" }, "org.pantsbuild:jarjar": { "shasums": { @@ -474,9 +565,26 @@ "sources": "69e0182465b18189294c6a3e3808595ad820b0b5bc2170324b2f6bb37fb1499a" }, "version": "1.7.2" + }, + "org.reactivestreams:reactive-streams": { + "shasums": { + "jar": "f75ca597789b3dac58f61857b9ac2e1034a68fa672db35055a8fb4509e325f28", + "sources": "5a7a36ae9536698c434ebe119feb374d721210fee68eb821a37ef3859b64b708" + }, + "version": "1.0.4" + }, + "org.slf4j:slf4j-api": { + "shasums": { + "jar": "a12578dde1ba00bd9b816d388a0b879928d00bab3c83c240f7013bf4196c579a", + "sources": "d938ad56953d65bd0806f75d17535fa32b1fc5078051212e0b010f69ec43f8cb" + }, + "version": "2.0.16" } }, "dependencies": { + "com.github.javaparser:javaparser-symbol-solver-core": [ + "com.github.javaparser:javaparser-core" + ], "com.google.auto.service:auto-service": [ "com.google.auto.service:auto-service-annotations", "com.google.auto:auto-common", @@ -592,6 +700,55 @@ "com.squareup:kotlinpoet-jvm", "org.jetbrains.kotlin:kotlin-stdlib" ], + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": [ + "io.micronaut.sourcegen:micronaut-sourcegen-model", + "io.micronaut:micronaut-inject", + "org.ow2.asm:asm", + "org.ow2.asm:asm-commons", + "org.ow2.asm:asm-util" + ], + "io.micronaut.sourcegen:micronaut-sourcegen-model": [ + "io.micronaut:micronaut-inject" + ], + "io.micronaut:micronaut-aop": [ + "io.micronaut:micronaut-core", + "io.micronaut:micronaut-inject", + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-context": [ + "io.micronaut:micronaut-aop", + "io.micronaut:micronaut-inject", + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-core": [ + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-core-processor": [ + "com.github.javaparser:javaparser-symbol-solver-core", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", + "io.micronaut:micronaut-aop", + "io.micronaut:micronaut-core-reactive", + "io.micronaut:micronaut-inject", + "org.ow2.asm:asm", + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-core-reactive": [ + "io.micronaut:micronaut-core", + "org.reactivestreams:reactive-streams", + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-inject": [ + "io.micronaut:micronaut-core", + "jakarta.annotation:jakarta.annotation-api", + "jakarta.inject:jakarta.inject-api", + "org.slf4j:slf4j-api" + ], + "io.micronaut:micronaut-inject-kotlin": [ + "com.google.devtools.ksp:symbol-processing-api", + "io.micronaut:micronaut-core-processor", + "org.ow2.asm:asm", + "org.slf4j:slf4j-api" + ], "javax.enterprise:cdi-api": [ "javax.annotation:jsr250-api", "javax.inject:javax.inject" @@ -645,12 +802,16 @@ ], "org.ow2.asm:asm-commons": [ "org.ow2.asm:asm", - "org.ow2.asm:asm-analysis", "org.ow2.asm:asm-tree" ], "org.ow2.asm:asm-tree": [ "org.ow2.asm:asm" ], + "org.ow2.asm:asm-util": [ + "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", + "org.ow2.asm:asm-tree" + ], "org.pantsbuild:jarjar": [ "org.apache.ant:ant", "org.apache.maven:maven-plugin-api", @@ -659,6 +820,67 @@ ] }, "packages": { + "com.github.javaparser:javaparser-core": [ + "com.github.javaparser", + "com.github.javaparser.ast", + "com.github.javaparser.ast.body", + "com.github.javaparser.ast.comments", + "com.github.javaparser.ast.expr", + "com.github.javaparser.ast.modules", + "com.github.javaparser.ast.nodeTypes", + "com.github.javaparser.ast.nodeTypes.modifiers", + "com.github.javaparser.ast.observer", + "com.github.javaparser.ast.stmt", + "com.github.javaparser.ast.type", + "com.github.javaparser.ast.validator", + "com.github.javaparser.ast.validator.language_level_validations", + "com.github.javaparser.ast.validator.language_level_validations.chunks", + "com.github.javaparser.ast.validator.postprocessors", + "com.github.javaparser.ast.visitor", + "com.github.javaparser.javadoc", + "com.github.javaparser.javadoc.description", + "com.github.javaparser.metamodel", + "com.github.javaparser.printer", + "com.github.javaparser.printer.concretesyntaxmodel", + "com.github.javaparser.printer.configuration", + "com.github.javaparser.printer.configuration.imports", + "com.github.javaparser.printer.lexicalpreservation", + "com.github.javaparser.printer.lexicalpreservation.changes", + "com.github.javaparser.quality", + "com.github.javaparser.resolution", + "com.github.javaparser.resolution.cache", + "com.github.javaparser.resolution.declarations", + "com.github.javaparser.resolution.logic", + "com.github.javaparser.resolution.model", + "com.github.javaparser.resolution.model.typesystem", + "com.github.javaparser.resolution.promotion", + "com.github.javaparser.resolution.types", + "com.github.javaparser.resolution.types.parametrization", + "com.github.javaparser.utils" + ], + "com.github.javaparser:javaparser-symbol-solver-core": [ + "com.github.javaparser.symbolsolver", + "com.github.javaparser.symbolsolver.cache", + "com.github.javaparser.symbolsolver.core.resolution", + "com.github.javaparser.symbolsolver.declarations.common", + "com.github.javaparser.symbolsolver.javaparser", + "com.github.javaparser.symbolsolver.javaparsermodel", + "com.github.javaparser.symbolsolver.javaparsermodel.contexts", + "com.github.javaparser.symbolsolver.javaparsermodel.declarations", + "com.github.javaparser.symbolsolver.javaparsermodel.declarators", + "com.github.javaparser.symbolsolver.javassistmodel", + "com.github.javaparser.symbolsolver.logic", + "com.github.javaparser.symbolsolver.reflectionmodel", + "com.github.javaparser.symbolsolver.reflectionmodel.comparators", + "com.github.javaparser.symbolsolver.resolution", + "com.github.javaparser.symbolsolver.resolution.naming", + "com.github.javaparser.symbolsolver.resolution.promotion", + "com.github.javaparser.symbolsolver.resolution.typeinference", + "com.github.javaparser.symbolsolver.resolution.typeinference.bounds", + "com.github.javaparser.symbolsolver.resolution.typeinference.constraintformulas", + "com.github.javaparser.symbolsolver.resolution.typesolvers", + "com.github.javaparser.symbolsolver.utils" + ], "com.google.auto.service:auto-service": [ "com.google.auto.service.processor" ], @@ -1009,6 +1231,174 @@ "dev.zacsweers.autoservice:auto-service-ksp": [ "dev.zacsweers.autoservice.ksp" ], + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": [ + "io.micronaut.sourcegen.bytecode", + "io.micronaut.sourcegen.bytecode.expression", + "io.micronaut.sourcegen.bytecode.statement" + ], + "io.micronaut.sourcegen:micronaut-sourcegen-model": [ + "io.micronaut.sourcegen.model" + ], + "io.micronaut:micronaut-aop": [ + "io.micronaut.aop", + "io.micronaut.aop.chain", + "io.micronaut.aop.exceptions", + "io.micronaut.aop.internal", + "io.micronaut.aop.internal.intercepted", + "io.micronaut.aop.kotlin", + "io.micronaut.aop.util" + ], + "io.micronaut:micronaut-context": [ + "io.micronaut.logging", + "io.micronaut.logging.impl", + "io.micronaut.runtime", + "io.micronaut.runtime.beans", + "io.micronaut.runtime.context", + "io.micronaut.runtime.context.env", + "io.micronaut.runtime.context.scope", + "io.micronaut.runtime.context.scope.refresh", + "io.micronaut.runtime.converters.time", + "io.micronaut.runtime.event", + "io.micronaut.runtime.event.annotation", + "io.micronaut.runtime.exceptions", + "io.micronaut.runtime.server", + "io.micronaut.runtime.server.event", + "io.micronaut.runtime.server.watch.event", + "io.micronaut.scheduling", + "io.micronaut.scheduling.annotation", + "io.micronaut.scheduling.async", + "io.micronaut.scheduling.cron", + "io.micronaut.scheduling.exceptions", + "io.micronaut.scheduling.executor", + "io.micronaut.scheduling.instrument", + "io.micronaut.scheduling.io.watch", + "io.micronaut.scheduling.io.watch.event", + "io.micronaut.scheduling.processor" + ], + "io.micronaut:micronaut-core": [ + "io.micronaut.core.annotation", + "io.micronaut.core.attr", + "io.micronaut.core.beans", + "io.micronaut.core.beans.exceptions", + "io.micronaut.core.bind", + "io.micronaut.core.bind.annotation", + "io.micronaut.core.bind.exceptions", + "io.micronaut.core.cli", + "io.micronaut.core.cli.exceptions", + "io.micronaut.core.convert", + "io.micronaut.core.convert.converters", + "io.micronaut.core.convert.exceptions", + "io.micronaut.core.convert.format", + "io.micronaut.core.convert.value", + "io.micronaut.core.exceptions", + "io.micronaut.core.execution", + "io.micronaut.core.expressions", + "io.micronaut.core.graal", + "io.micronaut.core.io", + "io.micronaut.core.io.buffer", + "io.micronaut.core.io.file", + "io.micronaut.core.io.scan", + "io.micronaut.core.io.service", + "io.micronaut.core.io.socket", + "io.micronaut.core.naming", + "io.micronaut.core.naming.conventions", + "io.micronaut.core.optim", + "io.micronaut.core.order", + "io.micronaut.core.propagation", + "io.micronaut.core.reflect", + "io.micronaut.core.reflect.exception", + "io.micronaut.core.serialize", + "io.micronaut.core.serialize.exceptions", + "io.micronaut.core.type", + "io.micronaut.core.util", + "io.micronaut.core.util.clhm", + "io.micronaut.core.util.functional", + "io.micronaut.core.util.locale", + "io.micronaut.core.value", + "io.micronaut.core.version", + "io.micronaut.core.version.annotation" + ], + "io.micronaut:micronaut-core-processor": [ + "io.micronaut.aop.mapper", + "io.micronaut.aop.writer", + "io.micronaut.context.visitor", + "io.micronaut.expressions", + "io.micronaut.expressions.context", + "io.micronaut.expressions.parser", + "io.micronaut.expressions.parser.ast", + "io.micronaut.expressions.parser.ast.access", + "io.micronaut.expressions.parser.ast.collection", + "io.micronaut.expressions.parser.ast.conditional", + "io.micronaut.expressions.parser.ast.literal", + "io.micronaut.expressions.parser.ast.operator.binary", + "io.micronaut.expressions.parser.ast.operator.unary", + "io.micronaut.expressions.parser.ast.types", + "io.micronaut.expressions.parser.ast.util", + "io.micronaut.expressions.parser.compilation", + "io.micronaut.expressions.parser.exception", + "io.micronaut.expressions.parser.token", + "io.micronaut.expressions.util", + "io.micronaut.inject.annotation", + "io.micronaut.inject.annotation.internal", + "io.micronaut.inject.ast", + "io.micronaut.inject.ast.annotation", + "io.micronaut.inject.ast.beans", + "io.micronaut.inject.ast.utils", + "io.micronaut.inject.beans.visitor", + "io.micronaut.inject.beans.visitor.persistence", + "io.micronaut.inject.configuration", + "io.micronaut.inject.processing", + "io.micronaut.inject.utils", + "io.micronaut.inject.visitor", + "io.micronaut.inject.visitor.util", + "io.micronaut.inject.writer", + "io.micronaut.validation.visitor.async" + ], + "io.micronaut:micronaut-core-reactive": [ + "io.micronaut.core.async", + "io.micronaut.core.async.annotation", + "io.micronaut.core.async.converters", + "io.micronaut.core.async.processor", + "io.micronaut.core.async.propagation", + "io.micronaut.core.async.publisher", + "io.micronaut.core.async.subscriber" + ], + "io.micronaut:micronaut-inject": [ + "io.micronaut.context", + "io.micronaut.context.annotation", + "io.micronaut.context.banner", + "io.micronaut.context.bind", + "io.micronaut.context.condition", + "io.micronaut.context.conditions", + "io.micronaut.context.converters", + "io.micronaut.context.env", + "io.micronaut.context.env.exp", + "io.micronaut.context.env.yaml", + "io.micronaut.context.event", + "io.micronaut.context.exceptions", + "io.micronaut.context.expressions", + "io.micronaut.context.i18n", + "io.micronaut.context.processor", + "io.micronaut.context.scope", + "io.micronaut.inject", + "io.micronaut.inject.annotation", + "io.micronaut.inject.beans", + "io.micronaut.inject.provider", + "io.micronaut.inject.proxy", + "io.micronaut.inject.qualifiers", + "io.micronaut.inject.validation" + ], + "io.micronaut:micronaut-inject-kotlin": [ + "io.micronaut.kotlin.processing", + "io.micronaut.kotlin.processing.annotation", + "io.micronaut.kotlin.processing.beans", + "io.micronaut.kotlin.processing.visitor" + ], + "jakarta.annotation:jakarta.annotation-api": [ + "jakarta.annotation", + "jakarta.annotation.security", + "jakarta.annotation.sql" + ], "jakarta.inject:jakarta.inject-api": [ "jakarta.inject" ], @@ -1445,14 +1835,30 @@ "org.ow2.asm:asm-tree": [ "org.objectweb.asm.tree" ], + "org.ow2.asm:asm-util": [ + "org.objectweb.asm.util" + ], "org.pantsbuild:jarjar": [ "org.pantsbuild.jarjar", "org.pantsbuild.jarjar.misplaced", "org.pantsbuild.jarjar.util" + ], + "org.reactivestreams:reactive-streams": [ + "org.reactivestreams" + ], + "org.slf4j:slf4j-api": [ + "org.slf4j", + "org.slf4j.event", + "org.slf4j.helpers", + "org.slf4j.spi" ] }, "repositories": { "https://maven-central.storage.googleapis.com/repos/central/data/": [ + "com.github.javaparser:javaparser-core", + "com.github.javaparser:javaparser-core:jar:sources", + "com.github.javaparser:javaparser-symbol-solver-core", + "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -1520,6 +1926,26 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-model", + "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", + "io.micronaut:micronaut-aop", + "io.micronaut:micronaut-aop:jar:sources", + "io.micronaut:micronaut-context", + "io.micronaut:micronaut-context:jar:sources", + "io.micronaut:micronaut-core", + "io.micronaut:micronaut-core-processor", + "io.micronaut:micronaut-core-processor:jar:sources", + "io.micronaut:micronaut-core-reactive", + "io.micronaut:micronaut-core-reactive:jar:sources", + "io.micronaut:micronaut-core:jar:sources", + "io.micronaut:micronaut-inject", + "io.micronaut:micronaut-inject-kotlin", + "io.micronaut:micronaut-inject-kotlin:jar:sources", + "io.micronaut:micronaut-inject:jar:sources", + "jakarta.annotation:jakarta.annotation-api", + "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -1583,11 +2009,21 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", + "org.ow2.asm:asm-util", + "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources" + "org.pantsbuild:jarjar:jar:sources", + "org.reactivestreams:reactive-streams", + "org.reactivestreams:reactive-streams:jar:sources", + "org.slf4j:slf4j-api", + "org.slf4j:slf4j-api:jar:sources" ], "https://maven.google.com/": [ + "com.github.javaparser:javaparser-core", + "com.github.javaparser:javaparser-core:jar:sources", + "com.github.javaparser:javaparser-symbol-solver-core", + "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -1655,6 +2091,26 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-model", + "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", + "io.micronaut:micronaut-aop", + "io.micronaut:micronaut-aop:jar:sources", + "io.micronaut:micronaut-context", + "io.micronaut:micronaut-context:jar:sources", + "io.micronaut:micronaut-core", + "io.micronaut:micronaut-core-processor", + "io.micronaut:micronaut-core-processor:jar:sources", + "io.micronaut:micronaut-core-reactive", + "io.micronaut:micronaut-core-reactive:jar:sources", + "io.micronaut:micronaut-core:jar:sources", + "io.micronaut:micronaut-inject", + "io.micronaut:micronaut-inject-kotlin", + "io.micronaut:micronaut-inject-kotlin:jar:sources", + "io.micronaut:micronaut-inject:jar:sources", + "jakarta.annotation:jakarta.annotation-api", + "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -1718,11 +2174,21 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", + "org.ow2.asm:asm-util", + "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources" + "org.pantsbuild:jarjar:jar:sources", + "org.reactivestreams:reactive-streams", + "org.reactivestreams:reactive-streams:jar:sources", + "org.slf4j:slf4j-api", + "org.slf4j:slf4j-api:jar:sources" ], "https://repo1.maven.org/maven2/": [ + "com.github.javaparser:javaparser-core", + "com.github.javaparser:javaparser-core:jar:sources", + "com.github.javaparser:javaparser-symbol-solver-core", + "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -1790,6 +2256,26 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", + "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", + "io.micronaut.sourcegen:micronaut-sourcegen-model", + "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", + "io.micronaut:micronaut-aop", + "io.micronaut:micronaut-aop:jar:sources", + "io.micronaut:micronaut-context", + "io.micronaut:micronaut-context:jar:sources", + "io.micronaut:micronaut-core", + "io.micronaut:micronaut-core-processor", + "io.micronaut:micronaut-core-processor:jar:sources", + "io.micronaut:micronaut-core-reactive", + "io.micronaut:micronaut-core-reactive:jar:sources", + "io.micronaut:micronaut-core:jar:sources", + "io.micronaut:micronaut-inject", + "io.micronaut:micronaut-inject-kotlin", + "io.micronaut:micronaut-inject-kotlin:jar:sources", + "io.micronaut:micronaut-inject:jar:sources", + "jakarta.annotation:jakarta.annotation-api", + "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -1853,9 +2339,15 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", + "org.ow2.asm:asm-util", + "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources" + "org.pantsbuild:jarjar:jar:sources", + "org.reactivestreams:reactive-streams", + "org.reactivestreams:reactive-streams:jar:sources", + "org.slf4j:slf4j-api", + "org.slf4j:slf4j-api:jar:sources" ] }, "services": { @@ -1925,6 +2417,192 @@ "dev.zacsweers.autoservice.ksp.AutoServiceSymbolProcessor$Provider" ] }, + "io.micronaut.sourcegen:micronaut-sourcegen-model": { + "io.micronaut.inject.visitor.TypeElementVisitor": [ + "io.micronaut.sourcegen.example.JavaBuilderTypeElementVisitor", + "io.micronaut.sourcegen.example.KotlinBuilderTypeElementVisitor" + ] + }, + "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources": { + "io.micronaut.inject.visitor.TypeElementVisitor": [ + "io.micronaut.sourcegen.example.JavaBuilderTypeElementVisitor", + "io.micronaut.sourcegen.example.KotlinBuilderTypeElementVisitor" + ] + }, + "io.micronaut:micronaut-context": { + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.logging.LoggingConverterRegistrar", + "io.micronaut.runtime.converters.time.TimeConverterRegistrar" + ] + }, + "io.micronaut:micronaut-context:jar:sources": { + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.logging.LoggingConverterRegistrar", + "io.micronaut.runtime.converters.time.TimeConverterRegistrar" + ] + }, + "io.micronaut:micronaut-core-processor": { + "io.micronaut.inject.annotation.AnnotationMapper": [ + "io.micronaut.aop.mapper.InterceptorBeanMapper", + "io.micronaut.inject.annotation.internal.JakartaPersistenceContextAnnotationMapper", + "io.micronaut.inject.annotation.internal.JavaxPersistenceContextAnnotationMapper", + "io.micronaut.inject.beans.visitor.EntityIntrospectedAnnotationMapper", + "io.micronaut.inject.beans.visitor.EntityReflectiveAccessAnnotationMapper", + "io.micronaut.inject.beans.visitor.JsonCreatorAnnotationMapper", + "io.micronaut.inject.beans.visitor.MappedSuperClassIntrospectionMapper", + "io.micronaut.inject.beans.visitor.MapperAnnotationMapper", + "io.micronaut.inject.beans.visitor.persistence.JakartaEntityIntrospectedAnnotationMapper", + "io.micronaut.inject.beans.visitor.persistence.JakartaMappedSuperClassIntrospectionMapper" + ], + "io.micronaut.inject.annotation.AnnotationRemapper": [ + "io.micronaut.inject.annotation.internal.FindBugsRemapper", + "io.micronaut.inject.annotation.internal.InterceptorBindingMembers", + "io.micronaut.inject.annotation.internal.JavaxRemapper", + "io.micronaut.inject.annotation.internal.QualifierBindingMembers" + ], + "io.micronaut.inject.annotation.AnnotationTransformer": [ + "io.micronaut.inject.annotation.internal.AndroidxNullableTransformer", + "io.micronaut.inject.annotation.internal.CoreNonNullTransformer", + "io.micronaut.inject.annotation.internal.CoreNullableTransformer", + "io.micronaut.inject.annotation.internal.JavaxNonnullTransformer", + "io.micronaut.inject.annotation.internal.JavaxNullableTransformer", + "io.micronaut.inject.annotation.internal.JavaxPostConstructTransformer", + "io.micronaut.inject.annotation.internal.JavaxPreDestroyTransformer", + "io.micronaut.inject.annotation.internal.JdtNullableTransformer", + "io.micronaut.inject.annotation.internal.JspecifyNullableTransformer", + "io.micronaut.inject.annotation.internal.KotlinDeprecatedTransformer", + "io.micronaut.inject.annotation.internal.KotlinNotNullMapper", + "io.micronaut.inject.annotation.internal.KotlinNullableMapper", + "io.micronaut.inject.annotation.internal.ReactivexNullableTransformer", + "io.micronaut.inject.annotation.internal.ReactorNullableTransformer", + "io.micronaut.inject.annotation.internal.Rxjava3NullableTransformer", + "io.micronaut.inject.annotation.internal.SpotbugsNullableTransformer", + "io.micronaut.inject.beans.visitor.IntrospectedToBeanPropertiesTransformer" + ], + "io.micronaut.inject.configuration.ConfigurationMetadataWriter": [ + "io.micronaut.inject.configuration.JsonConfigurationMetadataWriter" + ], + "io.micronaut.inject.visitor.TypeElementVisitor": [ + "io.micronaut.context.visitor.BeanImportVisitor", + "io.micronaut.context.visitor.ConfigurationReaderVisitor", + "io.micronaut.context.visitor.ContextConfigurerVisitor", + "io.micronaut.context.visitor.ExecutableVisitor", + "io.micronaut.context.visitor.InternalApiTypeElementVisitor", + "io.micronaut.inject.beans.visitor.IntrospectedTypeElementVisitor", + "io.micronaut.inject.beans.visitor.MapperVisitor", + "io.micronaut.validation.visitor.async.AsyncTypeElementVisitor" + ] + }, + "io.micronaut:micronaut-core-processor:jar:sources": { + "io.micronaut.inject.annotation.AnnotationMapper": [ + "io.micronaut.aop.mapper.InterceptorBeanMapper", + "io.micronaut.inject.annotation.internal.JakartaPersistenceContextAnnotationMapper", + "io.micronaut.inject.annotation.internal.JavaxPersistenceContextAnnotationMapper", + "io.micronaut.inject.beans.visitor.EntityIntrospectedAnnotationMapper", + "io.micronaut.inject.beans.visitor.EntityReflectiveAccessAnnotationMapper", + "io.micronaut.inject.beans.visitor.JsonCreatorAnnotationMapper", + "io.micronaut.inject.beans.visitor.MappedSuperClassIntrospectionMapper", + "io.micronaut.inject.beans.visitor.MapperAnnotationMapper", + "io.micronaut.inject.beans.visitor.persistence.JakartaEntityIntrospectedAnnotationMapper", + "io.micronaut.inject.beans.visitor.persistence.JakartaMappedSuperClassIntrospectionMapper" + ], + "io.micronaut.inject.annotation.AnnotationRemapper": [ + "io.micronaut.inject.annotation.internal.FindBugsRemapper", + "io.micronaut.inject.annotation.internal.InterceptorBindingMembers", + "io.micronaut.inject.annotation.internal.JavaxRemapper", + "io.micronaut.inject.annotation.internal.QualifierBindingMembers" + ], + "io.micronaut.inject.annotation.AnnotationTransformer": [ + "io.micronaut.inject.annotation.internal.AndroidxNullableTransformer", + "io.micronaut.inject.annotation.internal.CoreNonNullTransformer", + "io.micronaut.inject.annotation.internal.CoreNullableTransformer", + "io.micronaut.inject.annotation.internal.JavaxNonnullTransformer", + "io.micronaut.inject.annotation.internal.JavaxNullableTransformer", + "io.micronaut.inject.annotation.internal.JavaxPostConstructTransformer", + "io.micronaut.inject.annotation.internal.JavaxPreDestroyTransformer", + "io.micronaut.inject.annotation.internal.JdtNullableTransformer", + "io.micronaut.inject.annotation.internal.JspecifyNullableTransformer", + "io.micronaut.inject.annotation.internal.KotlinDeprecatedTransformer", + "io.micronaut.inject.annotation.internal.KotlinNotNullMapper", + "io.micronaut.inject.annotation.internal.KotlinNullableMapper", + "io.micronaut.inject.annotation.internal.ReactivexNullableTransformer", + "io.micronaut.inject.annotation.internal.ReactorNullableTransformer", + "io.micronaut.inject.annotation.internal.Rxjava3NullableTransformer", + "io.micronaut.inject.annotation.internal.SpotbugsNullableTransformer", + "io.micronaut.inject.beans.visitor.IntrospectedToBeanPropertiesTransformer" + ], + "io.micronaut.inject.configuration.ConfigurationMetadataWriter": [ + "io.micronaut.inject.configuration.JsonConfigurationMetadataWriter" + ], + "io.micronaut.inject.visitor.TypeElementVisitor": [ + "io.micronaut.context.visitor.BeanImportVisitor", + "io.micronaut.context.visitor.ConfigurationReaderVisitor", + "io.micronaut.context.visitor.ContextConfigurerVisitor", + "io.micronaut.context.visitor.ExecutableVisitor", + "io.micronaut.context.visitor.InternalApiTypeElementVisitor", + "io.micronaut.inject.beans.visitor.IntrospectedTypeElementVisitor", + "io.micronaut.inject.beans.visitor.MapperVisitor", + "io.micronaut.validation.visitor.async.AsyncTypeElementVisitor" + ] + }, + "io.micronaut:micronaut-core-reactive": { + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar" + ], + "io.micronaut.core.type.TypeInformationProvider": [ + "io.micronaut.core.async.ReactiveStreamsTypeInformationProvider" + ] + }, + "io.micronaut:micronaut-core-reactive:jar:sources": { + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar" + ], + "io.micronaut.core.type.TypeInformationProvider": [ + "io.micronaut.core.async.ReactiveStreamsTypeInformationProvider" + ] + }, + "io.micronaut:micronaut-inject": { + "io.micronaut.context.env.PropertyExpressionResolver": [ + "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" + ], + "io.micronaut.context.env.PropertySourceLoader": [ + "io.micronaut.context.env.PropertiesPropertySourceLoader", + "io.micronaut.context.env.yaml.YamlPropertySourceLoader" + ], + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.inject.annotation.AnnotationConvertersRegistrar" + ], + "io.micronaut.core.type.TypeInformationProvider": [ + "io.micronaut.inject.provider.ProviderTypeInformationProvider" + ] + }, + "io.micronaut:micronaut-inject-kotlin": { + "com.google.devtools.ksp.processing.SymbolProcessorProvider": [ + "io.micronaut.kotlin.processing.beans.BeanDefinitionProcessorProvider", + "io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessorProvider" + ] + }, + "io.micronaut:micronaut-inject-kotlin:jar:sources": { + "com.google.devtools.ksp.processing.SymbolProcessorProvider": [ + "io.micronaut.kotlin.processing.beans.BeanDefinitionProcessorProvider", + "io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessorProvider" + ] + }, + "io.micronaut:micronaut-inject:jar:sources": { + "io.micronaut.context.env.PropertyExpressionResolver": [ + "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" + ], + "io.micronaut.context.env.PropertySourceLoader": [ + "io.micronaut.context.env.PropertiesPropertySourceLoader", + "io.micronaut.context.env.yaml.YamlPropertySourceLoader" + ], + "io.micronaut.core.convert.TypeConverterRegistrar": [ + "io.micronaut.inject.annotation.AnnotationConvertersRegistrar" + ], + "io.micronaut.core.type.TypeInformationProvider": [ + "io.micronaut.inject.provider.ProviderTypeInformationProvider" + ] + }, "org.eclipse.sisu:org.eclipse.sisu.inject": { "javax.annotation.processing.Processor": [ "org.eclipse.sisu.space.SisuIndexAPT6" diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt index 8e2edc497..349d54f92 100644 --- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt +++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt @@ -87,6 +87,7 @@ class KotlinBuilder REDUCED_CLASSPATH_MODE("--reduced_classpath_mode"), INSTRUMENT_COVERAGE("--instrument_coverage"), KSP_GENERATED_JAVA_SRCJAR("--ksp_generated_java_srcjar"), + KSP_GENERATED_CLASSESJAR("--ksp_generated_classesjar"), } } @@ -217,6 +218,9 @@ class KotlinBuilder argMap.optionalSingle(KotlinBuilderFlags.KSP_GENERATED_JAVA_SRCJAR)?.let { generatedKspSrcJar = it } + argMap.optionalSingle(KotlinBuilderFlags.KSP_GENERATED_CLASSESJAR)?.let { + generatedKspClassesJar = it + } } with(root.directoriesBuilder) { diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt index b7ae5661e..563766bbe 100644 --- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt +++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt @@ -422,6 +422,21 @@ internal fun JvmCompilationTask.createGeneratedKspKotlinSrcJar() { } } +/** + * Produce a jar of classes generated by KSP. + */ +internal fun JvmCompilationTask.createdGeneratedKspClassesJar() { + JarCreator( + path = Paths.get(outputs.generatedKspClassesJar), + normalize = true, + verbose = false + ).also { + it.addDirectory(Paths.get(directories.generatedClasses)) + it.setJarOwner(info.label, info.bazelRuleKind) + it.execute() + } +} + /** * Compiles Kotlin sources to classes. Does not compile Java sources. */ diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt index 7250155a7..cc57c0fd9 100644 --- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt +++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/KotlinJvmTaskExecutor.kt @@ -145,6 +145,9 @@ class KotlinJvmTaskExecutor if (outputs.generatedKspSrcJar.isNotEmpty()) { context.execute("creating KSP generated src jar", ::createGeneratedKspKotlinSrcJar) } + if (outputs.generatedKspClassesJar.isNotEmpty()) { + context.execute("creating KSP generated classes jar", ::createdGeneratedKspClassesJar) + } } } } diff --git a/src/main/protobuf/kotlin_model.proto b/src/main/protobuf/kotlin_model.proto index d39548e5f..f3811537a 100644 --- a/src/main/protobuf/kotlin_model.proto +++ b/src/main/protobuf/kotlin_model.proto @@ -126,6 +126,8 @@ message JvmCompilationTask { string generated_class_jar = 7; // Source jar containing the generated KSP sources. string generated_ksp_src_jar = 8; + // The path to the jar containing the generated KSP classes + string generated_ksp_classes_jar = 9; } message Inputs { From 87333c8035bdbe29d3fba8f3c085f9af370fa08b Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sat, 7 Jun 2025 14:12:44 +0530 Subject: [PATCH 2/6] Revert unrelated changes --- MODULE.bazel | 2 - kotlin_rules_maven_install.json | 714 +------------------------------- 2 files changed, 18 insertions(+), 698 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 87e92ebf8..4d9865fc8 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -78,8 +78,6 @@ maven.install( "com.squareup.moshi:moshi-kotlin:1.15.1", "com.squareup.moshi:moshi-kotlin-codegen:1.15.1", "org.codehaus.plexus:plexus-utils:3.0.24", - "io.micronaut:micronaut-inject-kotlin:4.8.11", - "io.micronaut:micronaut-context:4.8.11", ], fail_if_repin_required = True, fetch_sources = True, diff --git a/kotlin_rules_maven_install.json b/kotlin_rules_maven_install.json index 2f91199b0..3b76dbad1 100755 --- a/kotlin_rules_maven_install.json +++ b/kotlin_rules_maven_install.json @@ -1,25 +1,11 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 1322467024, - "__RESOLVED_ARTIFACTS_HASH": -838171408, + "__INPUT_ARTIFACTS_HASH": -129239194, + "__RESOLVED_ARTIFACTS_HASH": -667872389, "conflict_resolution": { "com.google.guava:guava:27.1-jre": "com.google.guava:guava:33.2.1-jre" }, "artifacts": { - "com.github.javaparser:javaparser-core": { - "shasums": { - "jar": "a24c4fa7799ffe0c7a9af11d4eecd757098ed4498f86067bf28b46b2bfea1833", - "sources": "892e0fd9e6dd0a8672b09e9a6bb151958e378a35d0d052ae6067d9e70f00899a" - }, - "version": "3.26.3" - }, - "com.github.javaparser:javaparser-symbol-solver-core": { - "shasums": { - "jar": "56b8a20297b940e0554584bea6429a62a424f3385d7eb8040f5a0254d6f715ac", - "sources": "671f407b3962344fe068b5c44d02ed54aae6ae9b778c3c17e685b310e4420391" - }, - "version": "3.26.3" - }, "com.google.auto.service:auto-service": { "shasums": { "jar": "1f48f451503e623daba7d9ed368cca0f81e1e3815653a4560113e12c0129ebd5", @@ -258,76 +244,6 @@ }, "version": "1.2.0" }, - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": { - "shasums": { - "jar": "2987d4cb8d489fcda27153169bc69653b3ff43f6be0a7d9be63d79a23fce6e71", - "sources": "f810824aedb6ab5f9edb1ccdbd860bc9563911259153cfa7bb616e0f33095a39" - }, - "version": "1.6.2" - }, - "io.micronaut.sourcegen:micronaut-sourcegen-model": { - "shasums": { - "jar": "6f874b068dd33687fc6d22845f42fe9592554f323c35888d138a9016d9701dc6", - "sources": "8c55574a7c0cc3c809addf1a1b44894b4448b5e1834c967af635010919df0159" - }, - "version": "1.6.2" - }, - "io.micronaut:micronaut-aop": { - "shasums": { - "jar": "a89ee6bd8a075dc7dbbb3d83c0a8f0392930189fb3c343793649dc4cba6f044c", - "sources": "d73f03beee08516744821adfe4f92bd8f1948279953d03d364461c43c2cdfde0" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-context": { - "shasums": { - "jar": "08c4c14aecd9491750dcc02a0882f5680c9f272075433a3a0f5f123955dd3a3d", - "sources": "b04154fa6d182a332941a741272443cae9c153383186fefea5aa41807e2e907f" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-core": { - "shasums": { - "jar": "00e29a1ae0d6c3f06f23f806156505e45a8c1d8e1c84fd48fbf383efdcf8e805", - "sources": "473bcb3a3e63ed26b7543d0678a00016e7d76a680d00e6f891a4b2f2ca701de8" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-core-processor": { - "shasums": { - "jar": "c93272f3d1068d1551136e3ec02ac1abe5640e8758f5db8547f0f10e3767bbbe", - "sources": "507e0ca8fdfc86d9ca1e77207e2a7e91db715a5d147c6163218a4f63bcaa9db9" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-core-reactive": { - "shasums": { - "jar": "de3cde951bee8f558012d052cedfce6481c444afc762f98a59bbfb21f0c646d6", - "sources": "49718dd56b27618fc72862116f9bc67c3215394f5c0db0bafe46ed29a336b243" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-inject": { - "shasums": { - "jar": "ccb9379218a99084f300c058a6ef75249ee557cf6f832192f6c648fa63492d73", - "sources": "6add85496f6986ba0184be5054ba1917eb76bcb45d31d71ff1f64620b8fc82e7" - }, - "version": "4.8.11" - }, - "io.micronaut:micronaut-inject-kotlin": { - "shasums": { - "jar": "6c9130239245bbcbb6a3c6ff4f117fb5c17dd0581356f9ccd7c8907b5226e79a", - "sources": "e3c01b5f6238f571876b4fd0a2c7fa59a7ff3a91699373d05095aded28fa6249" - }, - "version": "4.8.11" - }, - "jakarta.annotation:jakarta.annotation-api": { - "shasums": { - "jar": "5f65fdaf424eee2b55e1d882ba9bb376be93fb09b37b808be6e22e8851c909fe", - "sources": "4b8abc5d33e33ad0cc53588532dafece90135cc83629429534af1c0900747094" - }, - "version": "2.1.1" - }, "jakarta.inject:jakarta.inject-api": { "shasums": { "jar": "f7dc98062fccf14126abb751b64fab12c312566e8cbdc8483598bffcea93af7c", @@ -526,38 +442,31 @@ }, "org.ow2.asm:asm": { "shasums": { - "jar": "8cadd43ac5eb6d09de05faecca38b917a040bb9139c7edeb4cc81c740b713281", - "sources": "22e9507b0c494daaedb33b8148c30cd618c6dacc3992be8b50eaaafeb6a8ba8d" + "jar": "1263369b59e29c943918de11d6d6152e2ec6085ce63e5710516f8c67d368e4bc", + "sources": "5ceb3d0b41a8eb8b416f28778b27c0e290143b6dc29d887b1cf40e2c0727f096" }, - "version": "9.7.1" + "version": "9.3" }, "org.ow2.asm:asm-analysis": { "shasums": { - "jar": "85b29371884ba31bb76edf22323c2c24e172c3267a67152eba3d1ccc2e041ef2", - "sources": "ee0f33502dfabdfce4bd5e44ad91c9b947916433bf48c29f43036c9db9ee3639" + "jar": "e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474", + "sources": "57bdf5b407dc122b8f4118e2fbf686719c81f6b7c97598e17ce7a456ea151866" }, - "version": "9.7.1" + "version": "7.0" }, "org.ow2.asm:asm-commons": { "shasums": { - "jar": "9a579b54d292ad9be171d4313fd4739c635592c2b5ac3a459bbd1049cddec6a0", - "sources": "a2bd3ba563c5f2e19eea66df99437ef81d69a0dcb3def07028442a273a2da562" + "jar": "fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d", + "sources": "7076b9f1cd3fdae003447b9fd546290b9ab76e34f147b2bf0b981ddae86f7053" }, - "version": "9.7.1" + "version": "7.0" }, "org.ow2.asm:asm-tree": { "shasums": { - "jar": "9929881f59eb6b840e86d54570c77b59ce721d104e6dfd7a40978991c2d3b41f", - "sources": "442d32be6106a41b61c2edf05f8ae496c4c54cca6e73d9d59d38e9cb54820c44" + "jar": "cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c", + "sources": "8888c88a9889b1b413d90e440b6b9c894e8d31632a473bd70e683645aba382dd" }, - "version": "9.7.1" - }, - "org.ow2.asm:asm-util": { - "shasums": { - "jar": "f885be71b5c90556f5f1ad1c4f9276b29b96057c497d46666fe4ddbec3cb43c6", - "sources": "d58055660e99d6b15d8d23303e81cde321cfff06f10537f96dbebdca34b7e342" - }, - "version": "9.7.1" + "version": "7.0" }, "org.pantsbuild:jarjar": { "shasums": { @@ -565,26 +474,9 @@ "sources": "69e0182465b18189294c6a3e3808595ad820b0b5bc2170324b2f6bb37fb1499a" }, "version": "1.7.2" - }, - "org.reactivestreams:reactive-streams": { - "shasums": { - "jar": "f75ca597789b3dac58f61857b9ac2e1034a68fa672db35055a8fb4509e325f28", - "sources": "5a7a36ae9536698c434ebe119feb374d721210fee68eb821a37ef3859b64b708" - }, - "version": "1.0.4" - }, - "org.slf4j:slf4j-api": { - "shasums": { - "jar": "a12578dde1ba00bd9b816d388a0b879928d00bab3c83c240f7013bf4196c579a", - "sources": "d938ad56953d65bd0806f75d17535fa32b1fc5078051212e0b010f69ec43f8cb" - }, - "version": "2.0.16" } }, "dependencies": { - "com.github.javaparser:javaparser-symbol-solver-core": [ - "com.github.javaparser:javaparser-core" - ], "com.google.auto.service:auto-service": [ "com.google.auto.service:auto-service-annotations", "com.google.auto:auto-common", @@ -700,55 +592,6 @@ "com.squareup:kotlinpoet-jvm", "org.jetbrains.kotlin:kotlin-stdlib" ], - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": [ - "io.micronaut.sourcegen:micronaut-sourcegen-model", - "io.micronaut:micronaut-inject", - "org.ow2.asm:asm", - "org.ow2.asm:asm-commons", - "org.ow2.asm:asm-util" - ], - "io.micronaut.sourcegen:micronaut-sourcegen-model": [ - "io.micronaut:micronaut-inject" - ], - "io.micronaut:micronaut-aop": [ - "io.micronaut:micronaut-core", - "io.micronaut:micronaut-inject", - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-context": [ - "io.micronaut:micronaut-aop", - "io.micronaut:micronaut-inject", - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-core": [ - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-core-processor": [ - "com.github.javaparser:javaparser-symbol-solver-core", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", - "io.micronaut:micronaut-aop", - "io.micronaut:micronaut-core-reactive", - "io.micronaut:micronaut-inject", - "org.ow2.asm:asm", - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-core-reactive": [ - "io.micronaut:micronaut-core", - "org.reactivestreams:reactive-streams", - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-inject": [ - "io.micronaut:micronaut-core", - "jakarta.annotation:jakarta.annotation-api", - "jakarta.inject:jakarta.inject-api", - "org.slf4j:slf4j-api" - ], - "io.micronaut:micronaut-inject-kotlin": [ - "com.google.devtools.ksp:symbol-processing-api", - "io.micronaut:micronaut-core-processor", - "org.ow2.asm:asm", - "org.slf4j:slf4j-api" - ], "javax.enterprise:cdi-api": [ "javax.annotation:jsr250-api", "javax.inject:javax.inject" @@ -802,16 +645,12 @@ ], "org.ow2.asm:asm-commons": [ "org.ow2.asm:asm", + "org.ow2.asm:asm-analysis", "org.ow2.asm:asm-tree" ], "org.ow2.asm:asm-tree": [ "org.ow2.asm:asm" ], - "org.ow2.asm:asm-util": [ - "org.ow2.asm:asm", - "org.ow2.asm:asm-analysis", - "org.ow2.asm:asm-tree" - ], "org.pantsbuild:jarjar": [ "org.apache.ant:ant", "org.apache.maven:maven-plugin-api", @@ -820,67 +659,6 @@ ] }, "packages": { - "com.github.javaparser:javaparser-core": [ - "com.github.javaparser", - "com.github.javaparser.ast", - "com.github.javaparser.ast.body", - "com.github.javaparser.ast.comments", - "com.github.javaparser.ast.expr", - "com.github.javaparser.ast.modules", - "com.github.javaparser.ast.nodeTypes", - "com.github.javaparser.ast.nodeTypes.modifiers", - "com.github.javaparser.ast.observer", - "com.github.javaparser.ast.stmt", - "com.github.javaparser.ast.type", - "com.github.javaparser.ast.validator", - "com.github.javaparser.ast.validator.language_level_validations", - "com.github.javaparser.ast.validator.language_level_validations.chunks", - "com.github.javaparser.ast.validator.postprocessors", - "com.github.javaparser.ast.visitor", - "com.github.javaparser.javadoc", - "com.github.javaparser.javadoc.description", - "com.github.javaparser.metamodel", - "com.github.javaparser.printer", - "com.github.javaparser.printer.concretesyntaxmodel", - "com.github.javaparser.printer.configuration", - "com.github.javaparser.printer.configuration.imports", - "com.github.javaparser.printer.lexicalpreservation", - "com.github.javaparser.printer.lexicalpreservation.changes", - "com.github.javaparser.quality", - "com.github.javaparser.resolution", - "com.github.javaparser.resolution.cache", - "com.github.javaparser.resolution.declarations", - "com.github.javaparser.resolution.logic", - "com.github.javaparser.resolution.model", - "com.github.javaparser.resolution.model.typesystem", - "com.github.javaparser.resolution.promotion", - "com.github.javaparser.resolution.types", - "com.github.javaparser.resolution.types.parametrization", - "com.github.javaparser.utils" - ], - "com.github.javaparser:javaparser-symbol-solver-core": [ - "com.github.javaparser.symbolsolver", - "com.github.javaparser.symbolsolver.cache", - "com.github.javaparser.symbolsolver.core.resolution", - "com.github.javaparser.symbolsolver.declarations.common", - "com.github.javaparser.symbolsolver.javaparser", - "com.github.javaparser.symbolsolver.javaparsermodel", - "com.github.javaparser.symbolsolver.javaparsermodel.contexts", - "com.github.javaparser.symbolsolver.javaparsermodel.declarations", - "com.github.javaparser.symbolsolver.javaparsermodel.declarators", - "com.github.javaparser.symbolsolver.javassistmodel", - "com.github.javaparser.symbolsolver.logic", - "com.github.javaparser.symbolsolver.reflectionmodel", - "com.github.javaparser.symbolsolver.reflectionmodel.comparators", - "com.github.javaparser.symbolsolver.resolution", - "com.github.javaparser.symbolsolver.resolution.naming", - "com.github.javaparser.symbolsolver.resolution.promotion", - "com.github.javaparser.symbolsolver.resolution.typeinference", - "com.github.javaparser.symbolsolver.resolution.typeinference.bounds", - "com.github.javaparser.symbolsolver.resolution.typeinference.constraintformulas", - "com.github.javaparser.symbolsolver.resolution.typesolvers", - "com.github.javaparser.symbolsolver.utils" - ], "com.google.auto.service:auto-service": [ "com.google.auto.service.processor" ], @@ -1231,174 +1009,6 @@ "dev.zacsweers.autoservice:auto-service-ksp": [ "dev.zacsweers.autoservice.ksp" ], - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer": [ - "io.micronaut.sourcegen.bytecode", - "io.micronaut.sourcegen.bytecode.expression", - "io.micronaut.sourcegen.bytecode.statement" - ], - "io.micronaut.sourcegen:micronaut-sourcegen-model": [ - "io.micronaut.sourcegen.model" - ], - "io.micronaut:micronaut-aop": [ - "io.micronaut.aop", - "io.micronaut.aop.chain", - "io.micronaut.aop.exceptions", - "io.micronaut.aop.internal", - "io.micronaut.aop.internal.intercepted", - "io.micronaut.aop.kotlin", - "io.micronaut.aop.util" - ], - "io.micronaut:micronaut-context": [ - "io.micronaut.logging", - "io.micronaut.logging.impl", - "io.micronaut.runtime", - "io.micronaut.runtime.beans", - "io.micronaut.runtime.context", - "io.micronaut.runtime.context.env", - "io.micronaut.runtime.context.scope", - "io.micronaut.runtime.context.scope.refresh", - "io.micronaut.runtime.converters.time", - "io.micronaut.runtime.event", - "io.micronaut.runtime.event.annotation", - "io.micronaut.runtime.exceptions", - "io.micronaut.runtime.server", - "io.micronaut.runtime.server.event", - "io.micronaut.runtime.server.watch.event", - "io.micronaut.scheduling", - "io.micronaut.scheduling.annotation", - "io.micronaut.scheduling.async", - "io.micronaut.scheduling.cron", - "io.micronaut.scheduling.exceptions", - "io.micronaut.scheduling.executor", - "io.micronaut.scheduling.instrument", - "io.micronaut.scheduling.io.watch", - "io.micronaut.scheduling.io.watch.event", - "io.micronaut.scheduling.processor" - ], - "io.micronaut:micronaut-core": [ - "io.micronaut.core.annotation", - "io.micronaut.core.attr", - "io.micronaut.core.beans", - "io.micronaut.core.beans.exceptions", - "io.micronaut.core.bind", - "io.micronaut.core.bind.annotation", - "io.micronaut.core.bind.exceptions", - "io.micronaut.core.cli", - "io.micronaut.core.cli.exceptions", - "io.micronaut.core.convert", - "io.micronaut.core.convert.converters", - "io.micronaut.core.convert.exceptions", - "io.micronaut.core.convert.format", - "io.micronaut.core.convert.value", - "io.micronaut.core.exceptions", - "io.micronaut.core.execution", - "io.micronaut.core.expressions", - "io.micronaut.core.graal", - "io.micronaut.core.io", - "io.micronaut.core.io.buffer", - "io.micronaut.core.io.file", - "io.micronaut.core.io.scan", - "io.micronaut.core.io.service", - "io.micronaut.core.io.socket", - "io.micronaut.core.naming", - "io.micronaut.core.naming.conventions", - "io.micronaut.core.optim", - "io.micronaut.core.order", - "io.micronaut.core.propagation", - "io.micronaut.core.reflect", - "io.micronaut.core.reflect.exception", - "io.micronaut.core.serialize", - "io.micronaut.core.serialize.exceptions", - "io.micronaut.core.type", - "io.micronaut.core.util", - "io.micronaut.core.util.clhm", - "io.micronaut.core.util.functional", - "io.micronaut.core.util.locale", - "io.micronaut.core.value", - "io.micronaut.core.version", - "io.micronaut.core.version.annotation" - ], - "io.micronaut:micronaut-core-processor": [ - "io.micronaut.aop.mapper", - "io.micronaut.aop.writer", - "io.micronaut.context.visitor", - "io.micronaut.expressions", - "io.micronaut.expressions.context", - "io.micronaut.expressions.parser", - "io.micronaut.expressions.parser.ast", - "io.micronaut.expressions.parser.ast.access", - "io.micronaut.expressions.parser.ast.collection", - "io.micronaut.expressions.parser.ast.conditional", - "io.micronaut.expressions.parser.ast.literal", - "io.micronaut.expressions.parser.ast.operator.binary", - "io.micronaut.expressions.parser.ast.operator.unary", - "io.micronaut.expressions.parser.ast.types", - "io.micronaut.expressions.parser.ast.util", - "io.micronaut.expressions.parser.compilation", - "io.micronaut.expressions.parser.exception", - "io.micronaut.expressions.parser.token", - "io.micronaut.expressions.util", - "io.micronaut.inject.annotation", - "io.micronaut.inject.annotation.internal", - "io.micronaut.inject.ast", - "io.micronaut.inject.ast.annotation", - "io.micronaut.inject.ast.beans", - "io.micronaut.inject.ast.utils", - "io.micronaut.inject.beans.visitor", - "io.micronaut.inject.beans.visitor.persistence", - "io.micronaut.inject.configuration", - "io.micronaut.inject.processing", - "io.micronaut.inject.utils", - "io.micronaut.inject.visitor", - "io.micronaut.inject.visitor.util", - "io.micronaut.inject.writer", - "io.micronaut.validation.visitor.async" - ], - "io.micronaut:micronaut-core-reactive": [ - "io.micronaut.core.async", - "io.micronaut.core.async.annotation", - "io.micronaut.core.async.converters", - "io.micronaut.core.async.processor", - "io.micronaut.core.async.propagation", - "io.micronaut.core.async.publisher", - "io.micronaut.core.async.subscriber" - ], - "io.micronaut:micronaut-inject": [ - "io.micronaut.context", - "io.micronaut.context.annotation", - "io.micronaut.context.banner", - "io.micronaut.context.bind", - "io.micronaut.context.condition", - "io.micronaut.context.conditions", - "io.micronaut.context.converters", - "io.micronaut.context.env", - "io.micronaut.context.env.exp", - "io.micronaut.context.env.yaml", - "io.micronaut.context.event", - "io.micronaut.context.exceptions", - "io.micronaut.context.expressions", - "io.micronaut.context.i18n", - "io.micronaut.context.processor", - "io.micronaut.context.scope", - "io.micronaut.inject", - "io.micronaut.inject.annotation", - "io.micronaut.inject.beans", - "io.micronaut.inject.provider", - "io.micronaut.inject.proxy", - "io.micronaut.inject.qualifiers", - "io.micronaut.inject.validation" - ], - "io.micronaut:micronaut-inject-kotlin": [ - "io.micronaut.kotlin.processing", - "io.micronaut.kotlin.processing.annotation", - "io.micronaut.kotlin.processing.beans", - "io.micronaut.kotlin.processing.visitor" - ], - "jakarta.annotation:jakarta.annotation-api": [ - "jakarta.annotation", - "jakarta.annotation.security", - "jakarta.annotation.sql" - ], "jakarta.inject:jakarta.inject-api": [ "jakarta.inject" ], @@ -1835,30 +1445,14 @@ "org.ow2.asm:asm-tree": [ "org.objectweb.asm.tree" ], - "org.ow2.asm:asm-util": [ - "org.objectweb.asm.util" - ], "org.pantsbuild:jarjar": [ "org.pantsbuild.jarjar", "org.pantsbuild.jarjar.misplaced", "org.pantsbuild.jarjar.util" - ], - "org.reactivestreams:reactive-streams": [ - "org.reactivestreams" - ], - "org.slf4j:slf4j-api": [ - "org.slf4j", - "org.slf4j.event", - "org.slf4j.helpers", - "org.slf4j.spi" ] }, "repositories": { "https://maven-central.storage.googleapis.com/repos/central/data/": [ - "com.github.javaparser:javaparser-core", - "com.github.javaparser:javaparser-core:jar:sources", - "com.github.javaparser:javaparser-symbol-solver-core", - "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -1926,26 +1520,6 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-model", - "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", - "io.micronaut:micronaut-aop", - "io.micronaut:micronaut-aop:jar:sources", - "io.micronaut:micronaut-context", - "io.micronaut:micronaut-context:jar:sources", - "io.micronaut:micronaut-core", - "io.micronaut:micronaut-core-processor", - "io.micronaut:micronaut-core-processor:jar:sources", - "io.micronaut:micronaut-core-reactive", - "io.micronaut:micronaut-core-reactive:jar:sources", - "io.micronaut:micronaut-core:jar:sources", - "io.micronaut:micronaut-inject", - "io.micronaut:micronaut-inject-kotlin", - "io.micronaut:micronaut-inject-kotlin:jar:sources", - "io.micronaut:micronaut-inject:jar:sources", - "jakarta.annotation:jakarta.annotation-api", - "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -2009,21 +1583,11 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", - "org.ow2.asm:asm-util", - "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources", - "org.reactivestreams:reactive-streams", - "org.reactivestreams:reactive-streams:jar:sources", - "org.slf4j:slf4j-api", - "org.slf4j:slf4j-api:jar:sources" + "org.pantsbuild:jarjar:jar:sources" ], "https://maven.google.com/": [ - "com.github.javaparser:javaparser-core", - "com.github.javaparser:javaparser-core:jar:sources", - "com.github.javaparser:javaparser-symbol-solver-core", - "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -2091,26 +1655,6 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-model", - "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", - "io.micronaut:micronaut-aop", - "io.micronaut:micronaut-aop:jar:sources", - "io.micronaut:micronaut-context", - "io.micronaut:micronaut-context:jar:sources", - "io.micronaut:micronaut-core", - "io.micronaut:micronaut-core-processor", - "io.micronaut:micronaut-core-processor:jar:sources", - "io.micronaut:micronaut-core-reactive", - "io.micronaut:micronaut-core-reactive:jar:sources", - "io.micronaut:micronaut-core:jar:sources", - "io.micronaut:micronaut-inject", - "io.micronaut:micronaut-inject-kotlin", - "io.micronaut:micronaut-inject-kotlin:jar:sources", - "io.micronaut:micronaut-inject:jar:sources", - "jakarta.annotation:jakarta.annotation-api", - "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -2174,21 +1718,11 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", - "org.ow2.asm:asm-util", - "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources", - "org.reactivestreams:reactive-streams", - "org.reactivestreams:reactive-streams:jar:sources", - "org.slf4j:slf4j-api", - "org.slf4j:slf4j-api:jar:sources" + "org.pantsbuild:jarjar:jar:sources" ], "https://repo1.maven.org/maven2/": [ - "com.github.javaparser:javaparser-core", - "com.github.javaparser:javaparser-core:jar:sources", - "com.github.javaparser:javaparser-symbol-solver-core", - "com.github.javaparser:javaparser-symbol-solver-core:jar:sources", "com.google.auto.service:auto-service", "com.google.auto.service:auto-service-annotations", "com.google.auto.service:auto-service-annotations:jar:sources", @@ -2256,26 +1790,6 @@ "commons-io:commons-io:jar:sources", "dev.zacsweers.autoservice:auto-service-ksp", "dev.zacsweers.autoservice:auto-service-ksp:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer", - "io.micronaut.sourcegen:micronaut-sourcegen-bytecode-writer:jar:sources", - "io.micronaut.sourcegen:micronaut-sourcegen-model", - "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources", - "io.micronaut:micronaut-aop", - "io.micronaut:micronaut-aop:jar:sources", - "io.micronaut:micronaut-context", - "io.micronaut:micronaut-context:jar:sources", - "io.micronaut:micronaut-core", - "io.micronaut:micronaut-core-processor", - "io.micronaut:micronaut-core-processor:jar:sources", - "io.micronaut:micronaut-core-reactive", - "io.micronaut:micronaut-core-reactive:jar:sources", - "io.micronaut:micronaut-core:jar:sources", - "io.micronaut:micronaut-inject", - "io.micronaut:micronaut-inject-kotlin", - "io.micronaut:micronaut-inject-kotlin:jar:sources", - "io.micronaut:micronaut-inject:jar:sources", - "jakarta.annotation:jakarta.annotation-api", - "jakarta.annotation:jakarta.annotation-api:jar:sources", "jakarta.inject:jakarta.inject-api", "jakarta.inject:jakarta.inject-api:jar:sources", "javax.annotation:javax.annotation-api", @@ -2339,15 +1853,9 @@ "org.ow2.asm:asm-commons:jar:sources", "org.ow2.asm:asm-tree", "org.ow2.asm:asm-tree:jar:sources", - "org.ow2.asm:asm-util", - "org.ow2.asm:asm-util:jar:sources", "org.ow2.asm:asm:jar:sources", "org.pantsbuild:jarjar", - "org.pantsbuild:jarjar:jar:sources", - "org.reactivestreams:reactive-streams", - "org.reactivestreams:reactive-streams:jar:sources", - "org.slf4j:slf4j-api", - "org.slf4j:slf4j-api:jar:sources" + "org.pantsbuild:jarjar:jar:sources" ] }, "services": { @@ -2417,192 +1925,6 @@ "dev.zacsweers.autoservice.ksp.AutoServiceSymbolProcessor$Provider" ] }, - "io.micronaut.sourcegen:micronaut-sourcegen-model": { - "io.micronaut.inject.visitor.TypeElementVisitor": [ - "io.micronaut.sourcegen.example.JavaBuilderTypeElementVisitor", - "io.micronaut.sourcegen.example.KotlinBuilderTypeElementVisitor" - ] - }, - "io.micronaut.sourcegen:micronaut-sourcegen-model:jar:sources": { - "io.micronaut.inject.visitor.TypeElementVisitor": [ - "io.micronaut.sourcegen.example.JavaBuilderTypeElementVisitor", - "io.micronaut.sourcegen.example.KotlinBuilderTypeElementVisitor" - ] - }, - "io.micronaut:micronaut-context": { - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.logging.LoggingConverterRegistrar", - "io.micronaut.runtime.converters.time.TimeConverterRegistrar" - ] - }, - "io.micronaut:micronaut-context:jar:sources": { - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.logging.LoggingConverterRegistrar", - "io.micronaut.runtime.converters.time.TimeConverterRegistrar" - ] - }, - "io.micronaut:micronaut-core-processor": { - "io.micronaut.inject.annotation.AnnotationMapper": [ - "io.micronaut.aop.mapper.InterceptorBeanMapper", - "io.micronaut.inject.annotation.internal.JakartaPersistenceContextAnnotationMapper", - "io.micronaut.inject.annotation.internal.JavaxPersistenceContextAnnotationMapper", - "io.micronaut.inject.beans.visitor.EntityIntrospectedAnnotationMapper", - "io.micronaut.inject.beans.visitor.EntityReflectiveAccessAnnotationMapper", - "io.micronaut.inject.beans.visitor.JsonCreatorAnnotationMapper", - "io.micronaut.inject.beans.visitor.MappedSuperClassIntrospectionMapper", - "io.micronaut.inject.beans.visitor.MapperAnnotationMapper", - "io.micronaut.inject.beans.visitor.persistence.JakartaEntityIntrospectedAnnotationMapper", - "io.micronaut.inject.beans.visitor.persistence.JakartaMappedSuperClassIntrospectionMapper" - ], - "io.micronaut.inject.annotation.AnnotationRemapper": [ - "io.micronaut.inject.annotation.internal.FindBugsRemapper", - "io.micronaut.inject.annotation.internal.InterceptorBindingMembers", - "io.micronaut.inject.annotation.internal.JavaxRemapper", - "io.micronaut.inject.annotation.internal.QualifierBindingMembers" - ], - "io.micronaut.inject.annotation.AnnotationTransformer": [ - "io.micronaut.inject.annotation.internal.AndroidxNullableTransformer", - "io.micronaut.inject.annotation.internal.CoreNonNullTransformer", - "io.micronaut.inject.annotation.internal.CoreNullableTransformer", - "io.micronaut.inject.annotation.internal.JavaxNonnullTransformer", - "io.micronaut.inject.annotation.internal.JavaxNullableTransformer", - "io.micronaut.inject.annotation.internal.JavaxPostConstructTransformer", - "io.micronaut.inject.annotation.internal.JavaxPreDestroyTransformer", - "io.micronaut.inject.annotation.internal.JdtNullableTransformer", - "io.micronaut.inject.annotation.internal.JspecifyNullableTransformer", - "io.micronaut.inject.annotation.internal.KotlinDeprecatedTransformer", - "io.micronaut.inject.annotation.internal.KotlinNotNullMapper", - "io.micronaut.inject.annotation.internal.KotlinNullableMapper", - "io.micronaut.inject.annotation.internal.ReactivexNullableTransformer", - "io.micronaut.inject.annotation.internal.ReactorNullableTransformer", - "io.micronaut.inject.annotation.internal.Rxjava3NullableTransformer", - "io.micronaut.inject.annotation.internal.SpotbugsNullableTransformer", - "io.micronaut.inject.beans.visitor.IntrospectedToBeanPropertiesTransformer" - ], - "io.micronaut.inject.configuration.ConfigurationMetadataWriter": [ - "io.micronaut.inject.configuration.JsonConfigurationMetadataWriter" - ], - "io.micronaut.inject.visitor.TypeElementVisitor": [ - "io.micronaut.context.visitor.BeanImportVisitor", - "io.micronaut.context.visitor.ConfigurationReaderVisitor", - "io.micronaut.context.visitor.ContextConfigurerVisitor", - "io.micronaut.context.visitor.ExecutableVisitor", - "io.micronaut.context.visitor.InternalApiTypeElementVisitor", - "io.micronaut.inject.beans.visitor.IntrospectedTypeElementVisitor", - "io.micronaut.inject.beans.visitor.MapperVisitor", - "io.micronaut.validation.visitor.async.AsyncTypeElementVisitor" - ] - }, - "io.micronaut:micronaut-core-processor:jar:sources": { - "io.micronaut.inject.annotation.AnnotationMapper": [ - "io.micronaut.aop.mapper.InterceptorBeanMapper", - "io.micronaut.inject.annotation.internal.JakartaPersistenceContextAnnotationMapper", - "io.micronaut.inject.annotation.internal.JavaxPersistenceContextAnnotationMapper", - "io.micronaut.inject.beans.visitor.EntityIntrospectedAnnotationMapper", - "io.micronaut.inject.beans.visitor.EntityReflectiveAccessAnnotationMapper", - "io.micronaut.inject.beans.visitor.JsonCreatorAnnotationMapper", - "io.micronaut.inject.beans.visitor.MappedSuperClassIntrospectionMapper", - "io.micronaut.inject.beans.visitor.MapperAnnotationMapper", - "io.micronaut.inject.beans.visitor.persistence.JakartaEntityIntrospectedAnnotationMapper", - "io.micronaut.inject.beans.visitor.persistence.JakartaMappedSuperClassIntrospectionMapper" - ], - "io.micronaut.inject.annotation.AnnotationRemapper": [ - "io.micronaut.inject.annotation.internal.FindBugsRemapper", - "io.micronaut.inject.annotation.internal.InterceptorBindingMembers", - "io.micronaut.inject.annotation.internal.JavaxRemapper", - "io.micronaut.inject.annotation.internal.QualifierBindingMembers" - ], - "io.micronaut.inject.annotation.AnnotationTransformer": [ - "io.micronaut.inject.annotation.internal.AndroidxNullableTransformer", - "io.micronaut.inject.annotation.internal.CoreNonNullTransformer", - "io.micronaut.inject.annotation.internal.CoreNullableTransformer", - "io.micronaut.inject.annotation.internal.JavaxNonnullTransformer", - "io.micronaut.inject.annotation.internal.JavaxNullableTransformer", - "io.micronaut.inject.annotation.internal.JavaxPostConstructTransformer", - "io.micronaut.inject.annotation.internal.JavaxPreDestroyTransformer", - "io.micronaut.inject.annotation.internal.JdtNullableTransformer", - "io.micronaut.inject.annotation.internal.JspecifyNullableTransformer", - "io.micronaut.inject.annotation.internal.KotlinDeprecatedTransformer", - "io.micronaut.inject.annotation.internal.KotlinNotNullMapper", - "io.micronaut.inject.annotation.internal.KotlinNullableMapper", - "io.micronaut.inject.annotation.internal.ReactivexNullableTransformer", - "io.micronaut.inject.annotation.internal.ReactorNullableTransformer", - "io.micronaut.inject.annotation.internal.Rxjava3NullableTransformer", - "io.micronaut.inject.annotation.internal.SpotbugsNullableTransformer", - "io.micronaut.inject.beans.visitor.IntrospectedToBeanPropertiesTransformer" - ], - "io.micronaut.inject.configuration.ConfigurationMetadataWriter": [ - "io.micronaut.inject.configuration.JsonConfigurationMetadataWriter" - ], - "io.micronaut.inject.visitor.TypeElementVisitor": [ - "io.micronaut.context.visitor.BeanImportVisitor", - "io.micronaut.context.visitor.ConfigurationReaderVisitor", - "io.micronaut.context.visitor.ContextConfigurerVisitor", - "io.micronaut.context.visitor.ExecutableVisitor", - "io.micronaut.context.visitor.InternalApiTypeElementVisitor", - "io.micronaut.inject.beans.visitor.IntrospectedTypeElementVisitor", - "io.micronaut.inject.beans.visitor.MapperVisitor", - "io.micronaut.validation.visitor.async.AsyncTypeElementVisitor" - ] - }, - "io.micronaut:micronaut-core-reactive": { - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar" - ], - "io.micronaut.core.type.TypeInformationProvider": [ - "io.micronaut.core.async.ReactiveStreamsTypeInformationProvider" - ] - }, - "io.micronaut:micronaut-core-reactive:jar:sources": { - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.core.async.converters.ReactiveTypeConverterRegistrar" - ], - "io.micronaut.core.type.TypeInformationProvider": [ - "io.micronaut.core.async.ReactiveStreamsTypeInformationProvider" - ] - }, - "io.micronaut:micronaut-inject": { - "io.micronaut.context.env.PropertyExpressionResolver": [ - "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" - ], - "io.micronaut.context.env.PropertySourceLoader": [ - "io.micronaut.context.env.PropertiesPropertySourceLoader", - "io.micronaut.context.env.yaml.YamlPropertySourceLoader" - ], - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.inject.annotation.AnnotationConvertersRegistrar" - ], - "io.micronaut.core.type.TypeInformationProvider": [ - "io.micronaut.inject.provider.ProviderTypeInformationProvider" - ] - }, - "io.micronaut:micronaut-inject-kotlin": { - "com.google.devtools.ksp.processing.SymbolProcessorProvider": [ - "io.micronaut.kotlin.processing.beans.BeanDefinitionProcessorProvider", - "io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessorProvider" - ] - }, - "io.micronaut:micronaut-inject-kotlin:jar:sources": { - "com.google.devtools.ksp.processing.SymbolProcessorProvider": [ - "io.micronaut.kotlin.processing.beans.BeanDefinitionProcessorProvider", - "io.micronaut.kotlin.processing.visitor.TypeElementSymbolProcessorProvider" - ] - }, - "io.micronaut:micronaut-inject:jar:sources": { - "io.micronaut.context.env.PropertyExpressionResolver": [ - "io.micronaut.context.env.exp.RandomPropertyExpressionResolver" - ], - "io.micronaut.context.env.PropertySourceLoader": [ - "io.micronaut.context.env.PropertiesPropertySourceLoader", - "io.micronaut.context.env.yaml.YamlPropertySourceLoader" - ], - "io.micronaut.core.convert.TypeConverterRegistrar": [ - "io.micronaut.inject.annotation.AnnotationConvertersRegistrar" - ], - "io.micronaut.core.type.TypeInformationProvider": [ - "io.micronaut.inject.provider.ProviderTypeInformationProvider" - ] - }, "org.eclipse.sisu:org.eclipse.sisu.inject": { "javax.annotation.processing.Processor": [ "org.eclipse.sisu.space.SisuIndexAPT6" From 7c887ebb69fa507c7c81eca89e600b97a1255fd8 Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sat, 7 Jun 2025 14:14:03 +0530 Subject: [PATCH 3/6] rename var for consistency --- kotlin/internal/jvm/compile.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kotlin/internal/jvm/compile.bzl b/kotlin/internal/jvm/compile.bzl index d5a0cefa0..182ed8895 100644 --- a/kotlin/internal/jvm/compile.bzl +++ b/kotlin/internal/jvm/compile.bzl @@ -423,7 +423,7 @@ def _run_ksp_builder_actions( plugins = plugins, outputs = { "ksp_generated_java_srcjar": ksp_generated_java_srcjar, - "ksp_generated_classesjar": ksp_generated_classes_jar, + "ksp_generated_classes_jar": ksp_generated_classes_jar, }, build_kotlin = False, mnemonic = "KotlinKsp", From 29b3594c4c72fe4ec11091da1efc08d7642f63af Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sat, 7 Jun 2025 14:33:20 +0530 Subject: [PATCH 4/6] Attempt to fix tests --- .../kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt index 349d54f92..efa3c1455 100644 --- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt +++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/KotlinBuilder.kt @@ -87,7 +87,7 @@ class KotlinBuilder REDUCED_CLASSPATH_MODE("--reduced_classpath_mode"), INSTRUMENT_COVERAGE("--instrument_coverage"), KSP_GENERATED_JAVA_SRCJAR("--ksp_generated_java_srcjar"), - KSP_GENERATED_CLASSESJAR("--ksp_generated_classesjar"), + KSP_GENERATED_CLASSES_JAR("--ksp_generated_classes_jar"), } } @@ -218,7 +218,7 @@ class KotlinBuilder argMap.optionalSingle(KotlinBuilderFlags.KSP_GENERATED_JAVA_SRCJAR)?.let { generatedKspSrcJar = it } - argMap.optionalSingle(KotlinBuilderFlags.KSP_GENERATED_CLASSESJAR)?.let { + argMap.optionalSingle(KotlinBuilderFlags.KSP_GENERATED_CLASSES_JAR)?.let { generatedKspClassesJar = it } } From 247fa1ad81b68f1ce716c81c1fa78e17a5e2ba00 Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sat, 7 Jun 2025 14:36:21 +0530 Subject: [PATCH 5/6] lint --- .../kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt index 563766bbe..85824a440 100644 --- a/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt +++ b/src/main/kotlin/io/bazel/kotlin/builder/tasks/jvm/CompilationTask.kt @@ -429,7 +429,7 @@ internal fun JvmCompilationTask.createdGeneratedKspClassesJar() { JarCreator( path = Paths.get(outputs.generatedKspClassesJar), normalize = true, - verbose = false + verbose = false, ).also { it.addDirectory(Paths.get(directories.generatedClasses)) it.setJarOwner(info.label, info.bazelRuleKind) From 4c3ef154d7298fcfa81ebdf389df05dacf18be6e Mon Sep 17 00:00:00 2001 From: Sridhar Mocherla Date: Sun, 8 Jun 2025 08:37:02 +0530 Subject: [PATCH 6/6] Add tests --- src/test/data/jvm/ksp/BUILD | 39 ++++++++ src/test/data/jvm/ksp/BytecodeExample.kt | 6 ++ .../bytecodegenerator/annotation/BUILD.bazel | 22 +++++ .../annotation/GenerateBytecode.kt | 5 + .../src/main/com/example/BUILD.bazel | 33 +++++++ .../com/example/BytecodeGeneratorProcessor.kt | 92 +++++++++++++++++++ .../BytecodeGeneratorProcessorProvider.kt | 11 +++ .../processor/src/main/resources/BUILD.bazel | 20 ++++ ...ols.ksp.processing.SymbolProcessorProvider | 1 + .../bazel/kotlin/KotlinJvmKspAssertionTest.kt | 61 ++++++++++++ 10 files changed, 290 insertions(+) create mode 100644 src/test/data/jvm/ksp/BytecodeExample.kt create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/annotation/BUILD.bazel create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/annotation/GenerateBytecode.kt create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BUILD.bazel create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessor.kt create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessorProvider.kt create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/BUILD.bazel create mode 100644 src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider diff --git a/src/test/data/jvm/ksp/BUILD b/src/test/data/jvm/ksp/BUILD index db4e31ef4..706e2386e 100644 --- a/src/test/data/jvm/ksp/BUILD +++ b/src/test/data/jvm/ksp/BUILD @@ -48,6 +48,14 @@ kt_ksp_plugin( ], ) +kt_ksp_plugin( + name = "generate_bytecode_plugin", + processor_class = "com.example.BytecodeGeneratorProcessor", + deps = [ + "//src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example:processor", + ], +) + kt_jvm_library( name = "ksp_kotlin_resources", srcs = ["CoffeeAppModel.kt"], @@ -140,9 +148,40 @@ kt_jvm_library( ], ) +kt_jvm_library( + name = "ksp_generate_bytecode", + srcs = ["BytecodeExample.kt"], + plugins = [":generate_bytecode_plugin"], + deps = [ + "//src/test/data/jvm/ksp/bytecodegenerator/annotation", + ], +) + +kt_jvm_library( + name = "ksp_bytecode_plugin_generates_no_classes_with_other_plugins", + # these files don't have relevant annotations, and don't generate the bytecode/generated classes + # from generate_bytecode_plugin + srcs = [ + "CoffeeApp.kt", + "CoffeeBean.java", + "CoffeeMaker.kt", + "DripCoffeeModule.kt", + ], + plugins = [ + ":generate_bytecode_plugin", + ":dagger", + ], + deps = [ + "@kotlin_rules_maven//:com_google_dagger_dagger", + "@kotlin_rules_maven//:com_google_dagger_dagger_compiler", + ], +) + filegroup( name = "ksp", srcs = [ + ":ksp_bytecode_plugin_generates_no_classes_with_other_plugins.jar", + ":ksp_generate_bytecode.jar", ":ksp_kotlin_resources.jar", ":ksp_kotlin_resources_missing_plugin.jar", ":ksp_kotlin_resources_multiple_plugins.jar", diff --git a/src/test/data/jvm/ksp/BytecodeExample.kt b/src/test/data/jvm/ksp/BytecodeExample.kt new file mode 100644 index 000000000..7a284b961 --- /dev/null +++ b/src/test/data/jvm/ksp/BytecodeExample.kt @@ -0,0 +1,6 @@ +package src.test.data.jvm.ksp + +import src.test.data.jvm.ksp.bytecodegenerator.annotation.GenerateBytecode + +@GenerateBytecode +class BytecodeExample diff --git a/src/test/data/jvm/ksp/bytecodegenerator/annotation/BUILD.bazel b/src/test/data/jvm/ksp/bytecodegenerator/annotation/BUILD.bazel new file mode 100644 index 000000000..97205e309 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/annotation/BUILD.bazel @@ -0,0 +1,22 @@ +load("//kotlin:jvm.bzl", "kt_jvm_library") + +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +package(default_visibility = ["//visibility:private"]) + +kt_jvm_library( + name = "annotation", + srcs = ["GenerateBytecode.kt"], + visibility = ["//src/test:__subpackages__"], +) diff --git a/src/test/data/jvm/ksp/bytecodegenerator/annotation/GenerateBytecode.kt b/src/test/data/jvm/ksp/bytecodegenerator/annotation/GenerateBytecode.kt new file mode 100644 index 000000000..3580f2d82 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/annotation/GenerateBytecode.kt @@ -0,0 +1,5 @@ +package src.test.data.jvm.ksp.bytecodegenerator.annotation + +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.SOURCE) +annotation class GenerateBytecode diff --git a/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BUILD.bazel b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BUILD.bazel new file mode 100644 index 000000000..eb2f04827 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BUILD.bazel @@ -0,0 +1,33 @@ +load("//kotlin:jvm.bzl", "kt_jvm_library") + +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +package(default_visibility = ["//visibility:private"]) + +kt_jvm_library( + name = "processor", + srcs = [ + "BytecodeGeneratorProcessor.kt", + "BytecodeGeneratorProcessorProvider.kt", + ], + resource_strip_prefix = "src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources", + resources = ["//src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources"], + visibility = ["//src/test:__subpackages__"], + deps = [ + "//kotlin/compiler:symbol-processing", + "//kotlin/compiler:symbol-processing-api", + "//src/test/data/jvm/ksp/bytecodegenerator/annotation", + "@kotlin_rules_maven//:org_ow2_asm_asm", + ], +) diff --git a/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessor.kt b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessor.kt new file mode 100644 index 000000000..6fe4022df --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessor.kt @@ -0,0 +1,92 @@ +package com.example + +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSClassDeclaration +import org.objectweb.asm.ClassWriter +import org.objectweb.asm.Opcodes +import src.test.data.jvm.ksp.bytecodegenerator.annotation.GenerateBytecode + +/** + * An example KSP processor that generates bytecode to be used only for tests + */ +class BytecodeGeneratorProcessor( + private val codeGen: CodeGenerator, + private val logger: KSPLogger +) : SymbolProcessor { + override fun process(resolver: Resolver): List { + val annotated = resolver + .getSymbolsWithAnnotation(GenerateBytecode::class.qualifiedName!!) + .filterIsInstance() + .toList() + if (annotated.isEmpty()) return emptyList() + + annotated.forEach { cls -> + val origName = cls.simpleName.asString() + val genName = "${origName}\$GeneratedDefinition\$" + val pkg = cls.packageName.asString() + val internal = pkg.replace('.', '/') + "/" + genName + + // Build class with ASM + val cw = ClassWriter(ClassWriter.COMPUTE_FRAMES or ClassWriter.COMPUTE_MAXS) + cw.visit( + Opcodes.V1_8, + Opcodes.ACC_PUBLIC or Opcodes.ACC_SUPER, + internal, + null, + "java/lang/Object", + null + ) + + // Constructor + cw.visitMethod(Opcodes.ACC_PUBLIC, "", "()V", null, null).apply { + visitCode() + visitVarInsn(Opcodes.ALOAD, 0) + visitMethodInsn( + Opcodes.INVOKESPECIAL, + "java/lang/Object", "", "()V", false + ) + visitInsn(Opcodes.RETURN) + visitMaxs(0, 0) + visitEnd() + } + + // greet() method + cw.visitMethod( + Opcodes.ACC_PUBLIC, + "greet", + "()Ljava/lang/String;", + null, + null + ).apply { + visitCode() + visitLdcInsn("Hello, $origName!") + visitInsn(Opcodes.ARETURN) + visitMaxs(0, 0) + visitEnd() + } + + cw.visitEnd() + val bytecode = cw.toByteArray() + + // Write out .class file + val deps = Dependencies(false, *annotated.mapNotNull { it.containingFile }.toTypedArray()) + val out = codeGen.createNewFile(dependencies = deps, packageName = pkg, fileName = genName, extensionName = "class") + out.use { it.write(bytecode) } + + // Generate service file + val fqcn = "$pkg.$genName" + val serviceFile = codeGen.createNewFile( + dependencies = Dependencies(false), + packageName = "META-INF.services", + fileName = fqcn, + extensionName = "" + ) + serviceFile.bufferedWriter().use { it.appendLine(fqcn) } + + logger.info("Generated $pkg.$genName") + } + + return emptyList() + } +} diff --git a/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessorProvider.kt b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessorProvider.kt new file mode 100644 index 000000000..28e46bac4 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/com/example/BytecodeGeneratorProcessorProvider.kt @@ -0,0 +1,11 @@ +package com.example + +import com.google.devtools.ksp.processing.SymbolProcessor +import com.google.devtools.ksp.processing.SymbolProcessorEnvironment +import com.google.devtools.ksp.processing.SymbolProcessorProvider + +class BytecodeGeneratorProcessorProvider : SymbolProcessorProvider { + override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor { + return BytecodeGeneratorProcessor(environment.codeGenerator, environment.logger) + } +} diff --git a/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/BUILD.bazel b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/BUILD.bazel new file mode 100644 index 000000000..f5e31fe72 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/BUILD.bazel @@ -0,0 +1,20 @@ +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +package(default_visibility = ["//visibility:private"]) + +filegroup( + name = "resources", + srcs = ["META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider"], + visibility = ["//src/test:__subpackages__"], +) diff --git a/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider new file mode 100644 index 000000000..9416bd215 --- /dev/null +++ b/src/test/data/jvm/ksp/bytecodegenerator/processor/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider @@ -0,0 +1 @@ +com.example.BytecodeGeneratorProcessorProvider \ No newline at end of file diff --git a/src/test/kotlin/io/bazel/kotlin/KotlinJvmKspAssertionTest.kt b/src/test/kotlin/io/bazel/kotlin/KotlinJvmKspAssertionTest.kt index e17f61070..8995be912 100644 --- a/src/test/kotlin/io/bazel/kotlin/KotlinJvmKspAssertionTest.kt +++ b/src/test/kotlin/io/bazel/kotlin/KotlinJvmKspAssertionTest.kt @@ -120,4 +120,65 @@ class KotlinJvmKspAssertionTest: KotlinAssertionTestCase("src/test/data/jvm/ksp" ) } } + + @Test + fun testKSPJarIncludesGeneratedClasses() { + jarTestCase( + name = "ksp_generate_bytecode.jar", + description = "KSP should include generated classes from processors", + ) { + // Entries should contain the generated class files + assertContainsEntries( + "META-INF/", + "META-INF/MANIFEST.MF", + "src/", + "src/test/", + "src/test/data/", + "src/test/data/jvm/", + "src/test/data/jvm/ksp/", + "src/test/data/jvm/ksp/BytecodeExample\$GeneratedDefinition\$.class", + "META-INF/services/", + "META-INF/src_test_data_jvm_ksp-ksp_generate_bytecode.kotlin_module", + "src/test/data/jvm/ksp/BytecodeExample.class", + "META-INF/services/src.test.data.jvm.ksp.BytecodeExample\$GeneratedDefinition\$" + ) + } + } + + @Test + fun testKSPJarDoesNotGenerateClasses() { + jarTestCase( + name = "ksp_bytecode_plugin_generates_no_classes_with_other_plugins.jar", + description = "KSP plugin doesn't generate class files from processor when relevant annotation isn't applied in conjunction with other plugins.", + ) { + // Entries should contain no generated class files from KSP itself (e.g the bytecode generator plugin) + assertContainsExactEntries( + "META-INF/", + "META-INF/MANIFEST.MF", + "META-INF/src_test_data_jvm_ksp-ksp_bytecode_plugin_generates_no_classes_with_other_plugins.kotlin_module", + "src/", + "src/test/", + "src/test/data/", + "src/test/data/jvm/", + "src/test/data/jvm/ksp/", + "src/test/data/jvm/ksp/CoffeeBean.class", + "src/test/data/jvm/ksp/CoffeeApp.class", + "src/test/data/jvm/ksp/CoffeeApp\$CoffeeShop.class", + "src/test/data/jvm/ksp/CoffeeApp\$Companion.class", + "src/test/data/jvm/ksp/CoffeeMaker.class", + "src/test/data/jvm/ksp/CoffeeMaker_Factory.class", + "src/test/data/jvm/ksp/DaggerCoffeeApp_CoffeeShop.class", + "src/test/data/jvm/ksp/DaggerCoffeeApp_CoffeeShop\$Builder.class", + "src/test/data/jvm/ksp/DaggerCoffeeApp_CoffeeShop\$CoffeeShopImpl.class", + "src/test/data/jvm/ksp/DripCoffeeModule.class", + "src/test/data/jvm/ksp/DripCoffeeModule_ProvideHeaterFactory.class", + "src/test/data/jvm/ksp/ElectricHeater.class", + "src/test/data/jvm/ksp/Heater.class", + ) + + assertDoesNotContainEntries( + "src/test/data/jvm/ksp/CoffeeApp\$GeneratedDefinition\$.class", + ) + } + } }