Merge "Repeat kapt processor argument for multiple processors"

This commit is contained in:
Treehugger Robot 2020-04-24 15:51:13 +00:00 committed by Gerrit Code Review
commit 52c0b7b35b
4 changed files with 24 additions and 12 deletions

View File

@ -196,7 +196,7 @@ type javaBuilderFlags struct {
classpath classpath
java9Classpath classpath
processorPath classpath
processor string
processors []string
systemModules *systemModules
aidlFlags string
aidlDeps android.Paths
@ -270,8 +270,8 @@ func emitXrefRule(ctx android.ModuleContext, xrefFile android.WritablePath, idx
deps = append(deps, flags.processorPath...)
processor := "-proc:none"
if flags.processor != "" {
processor = "-processor " + flags.processor
if len(flags.processors) > 0 {
processor = "-processor " + strings.Join(flags.processors, ",")
}
intermediatesDir := "xref"
@ -385,8 +385,8 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
deps = append(deps, flags.processorPath...)
processor := "-proc:none"
if flags.processor != "" {
processor = "-processor " + flags.processor
if len(flags.processors) > 0 {
processor = "-processor " + strings.Join(flags.processors, ",")
}
srcJarDir := "srcjars"

View File

@ -1134,7 +1134,8 @@ func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaB
flags.java9Classpath = append(flags.java9Classpath, deps.java9Classpath...)
flags.processorPath = append(flags.processorPath, deps.processorPath...)
flags.processor = strings.Join(deps.processorClasses, ",")
flags.processors = append(flags.processors, deps.processorClasses...)
flags.processors = android.FirstUniqueStrings(flags.processors)
if len(flags.bootClasspath) == 0 && ctx.Host() && !flags.javaVersion.usesJavaModules() &&
decodeSdkDep(ctx, sdkContext(j)).hasStandardLibs() {
@ -1269,7 +1270,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
srcJars = append(srcJars, kaptSrcJar)
// Disable annotation processing in javac, it's already been handled by kapt
flags.processorPath = nil
flags.processor = ""
flags.processors = nil
}
kotlinJar := android.PathForModuleOut(ctx, "kotlin", jarName)

View File

@ -136,8 +136,11 @@ func kotlinKapt(ctx android.ModuleContext, outputFile android.WritablePath,
kaptProcessorPath := flags.processorPath.FormRepeatedClassPath("-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=")
kaptProcessor := ""
if flags.processor != "" {
kaptProcessor = "-P plugin:org.jetbrains.kotlin.kapt3:processors=" + flags.processor
for i, p := range flags.processors {
if i > 0 {
kaptProcessor += " "
}
kaptProcessor += "-P plugin:org.jetbrains.kotlin.kapt3:processors=" + p
}
encodedJavacFlags := kaptEncodeFlags([][2]string{

View File

@ -88,7 +88,7 @@ func TestKapt(t *testing.T) {
java_library {
name: "foo",
srcs: ["a.java", "b.kt"],
plugins: ["bar"],
plugins: ["bar", "baz"],
}
java_plugin {
@ -96,6 +96,12 @@ func TestKapt(t *testing.T) {
processor_class: "com.bar",
srcs: ["b.java"],
}
java_plugin {
name: "baz",
processor_class: "com.baz",
srcs: ["b.java"],
}
`)
buildOS := android.BuildOs.String()
@ -105,6 +111,7 @@ func TestKapt(t *testing.T) {
javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
bar := ctx.ModuleForTests("bar", buildOS+"_common").Rule("javac").Output.String()
baz := ctx.ModuleForTests("baz", buildOS+"_common").Rule("javac").Output.String()
// Test that the kotlin and java sources are passed to kapt and kotlinc
if len(kapt.Inputs) != 2 || kapt.Inputs[0].String() != "a.java" || kapt.Inputs[1].String() != "b.kt" {
@ -136,11 +143,12 @@ func TestKapt(t *testing.T) {
}
// Test that the processors are passed to kapt
expectedProcessorPath := "-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=" + bar
expectedProcessorPath := "-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=" + bar +
" -P plugin:org.jetbrains.kotlin.kapt3:apclasspath=" + baz
if kapt.Args["kaptProcessorPath"] != expectedProcessorPath {
t.Errorf("expected kaptProcessorPath %q, got %q", expectedProcessorPath, kapt.Args["kaptProcessorPath"])
}
expectedProcessor := "-P plugin:org.jetbrains.kotlin.kapt3:processors=com.bar"
expectedProcessor := "-P plugin:org.jetbrains.kotlin.kapt3:processors=com.bar -P plugin:org.jetbrains.kotlin.kapt3:processors=com.baz"
if kapt.Args["kaptProcessor"] != expectedProcessor {
t.Errorf("expected kaptProcessor %q, got %q", expectedProcessor, kapt.Args["kaptProcessor"])
}