summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/java.go3
-rw-r--r--java/kotlin.go2
-rw-r--r--java/kotlin_test.go26
3 files changed, 29 insertions, 2 deletions
diff --git a/java/java.go b/java/java.go
index 7014668f4..89b09d10b 100644
--- a/java/java.go
+++ b/java/java.go
@@ -493,7 +493,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) {
// TODO(ccross): move this to a mutator pass that can tell if generated sources contain
// Kotlin files
ctx.AddVariationDependencies(nil, kotlinStdlibTag, "kotlin-stdlib")
- if len(j.properties.Annotation_processors) > 0 {
+ if len(j.properties.Annotation_processors) > 0 || len(j.properties.Plugins) > 0 {
ctx.AddVariationDependencies(nil, kotlinAnnotationsTag, "kotlin-annotations")
}
}
@@ -1017,6 +1017,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
srcJars = append(srcJars, kaptSrcJar)
// Disable annotation processing in javac, it's already been handled by kapt
flags.processorPath = nil
+ flags.processor = ""
}
kotlinJar := android.PathForModuleOut(ctx, "kotlin", jarName)
diff --git a/java/kotlin.go b/java/kotlin.go
index 1b2e6429e..9c47f98a7 100644
--- a/java/kotlin.go
+++ b/java/kotlin.go
@@ -121,7 +121,7 @@ func kotlinKapt(ctx android.ModuleContext, outputFile android.WritablePath,
kaptProcessor := ""
if flags.processor != "" {
- kaptProcessor = "-P plugin:org.jetbrains.kotlin.kapt3:processor=" + flags.processor
+ kaptProcessor = "-P plugin:org.jetbrains.kotlin.kapt3:processors=" + flags.processor
}
encodedJavacFlags := kaptEncodeFlags([][2]string{
diff --git a/java/kotlin_test.go b/java/kotlin_test.go
index 3deea1373..9406ef9d7 100644
--- a/java/kotlin_test.go
+++ b/java/kotlin_test.go
@@ -15,6 +15,7 @@
package java
import (
+ "android/soong/android"
"strconv"
"strings"
"testing"
@@ -92,13 +93,19 @@ func TestKapt(t *testing.T) {
java_plugin {
name: "bar",
+ processor_class: "com.bar",
+ srcs: ["b.java"],
}
`)
+ buildOS := android.BuildOs.String()
+
kapt := ctx.ModuleForTests("foo", "android_common").Rule("kapt")
kotlinc := ctx.ModuleForTests("foo", "android_common").Rule("kotlinc")
javac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
+ bar := ctx.ModuleForTests("bar", 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" {
t.Errorf(`foo kapt inputs %v != ["a.java", "b.kt"]`, kapt.Inputs)
@@ -127,6 +134,25 @@ func TestKapt(t *testing.T) {
if javac.Args["srcJars"] != kapt.Output.String() {
t.Errorf("expected %q in javac srcjars %v", kapt.Output.String(), kotlinc.Args["srcJars"])
}
+
+ // Test that the processors are passed to kapt
+ expectedProcessorPath := "-P plugin:org.jetbrains.kotlin.kapt3:apclasspath=" + bar
+ 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"
+ if kapt.Args["kaptProcessor"] != expectedProcessor {
+ t.Errorf("expected kaptProcessor %q, got %q", expectedProcessor, kapt.Args["kaptProcessor"])
+ }
+
+ // Test that the processors are not passed to javac
+ if javac.Args["processorPath"] != "" {
+ t.Errorf("expected processorPath '', got %q", javac.Args["processorPath"])
+ }
+ // TODO(b/77284273): test for -processor:none
+ if javac.Args["processor"] != "" {
+ t.Errorf("expected processor '', got %q", javac.Args["processor"])
+ }
}
func TestKaptEncodeFlags(t *testing.T) {