Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67df651c authored by Pete Gillin's avatar Pete Gillin Committed by Gerrit Code Review
Browse files

Merge "Add support for nullability validation to droidstubs."

parents 63c6361f a262c059
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -1390,15 +1390,23 @@ func (d *Droidstubs) collectAnnotationsFlags(ctx android.ModuleContext,
	implicits *android.Paths, implicitOutputs *android.WritablePaths) string {
	var flags string
	if Bool(d.properties.Annotations_enabled) {
		if String(d.properties.Previous_api) == "" {
			ctx.PropertyErrorf("metalava_previous_api",
				"has to be non-empty if annotations was enabled!")
		}
		previousApi := ctx.ExpandSource(String(d.properties.Previous_api),
			"metalava_previous_api")
		flags += " --include-annotations"
		validatingNullability := strings.Contains(d.Javadoc.args, "--validate-nullability-from-merged-stubs")
		migratingNullability := String(d.properties.Previous_api) != ""
		if !(migratingNullability || validatingNullability) {
			ctx.PropertyErrorf("previous_api",
				"has to be non-empty if annotations was enabled (unless validating nullability)")
		}
		if migratingNullability {
			previousApi := ctx.ExpandSource(String(d.properties.Previous_api), "previous_api")
			*implicits = append(*implicits, previousApi)

		flags += " --include-annotations --migrate-nullness " + previousApi.String()
			flags += " --migrate-nullness " + previousApi.String()
		}
		if validatingNullability {
			nullabilityWarningsTxt := android.PathForModuleOut(ctx, ctx.ModuleName()+"_nullability_warnings.txt")
			*implicitOutputs = append(*implicitOutputs, nullabilityWarningsTxt)
			flags += " --nullability-warnings-txt " + nullabilityWarningsTxt.String()
		}

		d.annotationsZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"_annotations.zip")
		*implicitOutputs = append(*implicitOutputs, d.annotationsZip)