Treat kotlin-annotations the same as kotlin-stdlib
Upgrading dagger uncovers an issue where java-only modules with kotlin-containing dependencies may see org.jetbrains.annotations.NotNull annotations. Include the kotlin-annotations in the output jar the same way kotlin-stdlib is included. Bug: 227669740 Test: TestKotlin Change-Id: Ifc33a32b121c1b9a9d1911bdec332264b78b571c
This commit is contained in:
@@ -742,9 +742,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) {
|
|||||||
// Kotlin files
|
// Kotlin files
|
||||||
ctx.AddVariationDependencies(nil, kotlinStdlibTag,
|
ctx.AddVariationDependencies(nil, kotlinStdlibTag,
|
||||||
"kotlin-stdlib", "kotlin-stdlib-jdk7", "kotlin-stdlib-jdk8")
|
"kotlin-stdlib", "kotlin-stdlib-jdk7", "kotlin-stdlib-jdk8")
|
||||||
if len(j.properties.Plugins) > 0 {
|
ctx.AddVariationDependencies(nil, kotlinAnnotationsTag, "kotlin-annotations")
|
||||||
ctx.AddVariationDependencies(nil, kotlinAnnotationsTag, "kotlin-annotations")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Framework libraries need special handling in static coverage builds: they should not have
|
// Framework libraries need special handling in static coverage builds: they should not have
|
||||||
@@ -1100,8 +1098,6 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||||||
flags.classpath = append(flags.classpath, deps.kotlinStdlib...)
|
flags.classpath = append(flags.classpath, deps.kotlinStdlib...)
|
||||||
flags.classpath = append(flags.classpath, deps.kotlinAnnotations...)
|
flags.classpath = append(flags.classpath, deps.kotlinAnnotations...)
|
||||||
|
|
||||||
flags.dexClasspath = append(flags.dexClasspath, deps.kotlinAnnotations...)
|
|
||||||
|
|
||||||
flags.kotlincClasspath = append(flags.kotlincClasspath, flags.bootClasspath...)
|
flags.kotlincClasspath = append(flags.kotlincClasspath, flags.bootClasspath...)
|
||||||
flags.kotlincClasspath = append(flags.kotlincClasspath, flags.classpath...)
|
flags.kotlincClasspath = append(flags.kotlincClasspath, flags.classpath...)
|
||||||
|
|
||||||
@@ -1133,9 +1129,12 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||||||
// Jar kotlin classes into the final jar after javac
|
// Jar kotlin classes into the final jar after javac
|
||||||
if BoolDefault(j.properties.Static_kotlin_stdlib, true) {
|
if BoolDefault(j.properties.Static_kotlin_stdlib, true) {
|
||||||
kotlinJars = append(kotlinJars, deps.kotlinStdlib...)
|
kotlinJars = append(kotlinJars, deps.kotlinStdlib...)
|
||||||
|
kotlinJars = append(kotlinJars, deps.kotlinAnnotations...)
|
||||||
kotlinHeaderJars = append(kotlinHeaderJars, deps.kotlinStdlib...)
|
kotlinHeaderJars = append(kotlinHeaderJars, deps.kotlinStdlib...)
|
||||||
|
kotlinHeaderJars = append(kotlinHeaderJars, deps.kotlinAnnotations...)
|
||||||
} else {
|
} else {
|
||||||
flags.dexClasspath = append(flags.dexClasspath, deps.kotlinStdlib...)
|
flags.dexClasspath = append(flags.dexClasspath, deps.kotlinStdlib...)
|
||||||
|
flags.dexClasspath = append(flags.dexClasspath, deps.kotlinAnnotations...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -42,6 +42,11 @@ func TestKotlin(t *testing.T) {
|
|||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
|
kotlinStdlib := ctx.ModuleForTests("kotlin-stdlib", "android_common").
|
||||||
|
Output("turbine-combined/kotlin-stdlib.jar").Output
|
||||||
|
kotlinAnnotations := ctx.ModuleForTests("kotlin-annotations", "android_common").
|
||||||
|
Output("turbine-combined/kotlin-annotations.jar").Output
|
||||||
|
|
||||||
fooKotlinc := ctx.ModuleForTests("foo", "android_common").Rule("kotlinc")
|
fooKotlinc := ctx.ModuleForTests("foo", "android_common").Rule("kotlinc")
|
||||||
fooJavac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
|
fooJavac := ctx.ModuleForTests("foo", "android_common").Rule("javac")
|
||||||
fooJar := ctx.ModuleForTests("foo", "android_common").Output("combined/foo.jar")
|
fooJar := ctx.ModuleForTests("foo", "android_common").Output("combined/foo.jar")
|
||||||
@@ -69,6 +74,16 @@ func TestKotlin(t *testing.T) {
|
|||||||
fooJar.Inputs.Strings(), fooKotlincClasses.String())
|
fooJar.Inputs.Strings(), fooKotlincClasses.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !inList(kotlinStdlib.String(), fooJar.Inputs.Strings()) {
|
||||||
|
t.Errorf("foo jar inputs %v does not contain %v",
|
||||||
|
fooJar.Inputs.Strings(), kotlinStdlib.String())
|
||||||
|
}
|
||||||
|
|
||||||
|
if !inList(kotlinAnnotations.String(), fooJar.Inputs.Strings()) {
|
||||||
|
t.Errorf("foo jar inputs %v does not contain %v",
|
||||||
|
fooJar.Inputs.Strings(), kotlinAnnotations.String())
|
||||||
|
}
|
||||||
|
|
||||||
if !inList(fooKotlincHeaderClasses.String(), fooHeaderJar.Inputs.Strings()) {
|
if !inList(fooKotlincHeaderClasses.String(), fooHeaderJar.Inputs.Strings()) {
|
||||||
t.Errorf("foo header jar inputs %v does not contain %q",
|
t.Errorf("foo header jar inputs %v does not contain %q",
|
||||||
fooHeaderJar.Inputs.Strings(), fooKotlincHeaderClasses.String())
|
fooHeaderJar.Inputs.Strings(), fooKotlincHeaderClasses.String())
|
||||||
|
Reference in New Issue
Block a user