diff --git a/java/androidmk.go b/java/androidmk.go index cc0efe9b8..c86dcf4be 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -587,7 +587,7 @@ func (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries { outputFile = android.OptionalPathForPath(dstubs.apiFile) } if !outputFile.Valid() { - outputFile = android.OptionalPathForPath(dstubs.apiVersionsXml) + outputFile = android.OptionalPathForPath(dstubs.everythingArtifacts.apiVersionsXml) } return []android.AndroidMkEntries{android.AndroidMkEntries{ Class: "JAVA_LIBRARIES", @@ -598,14 +598,14 @@ func (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries { if dstubs.Javadoc.stubsSrcJar != nil { entries.SetPath("LOCAL_DROIDDOC_STUBS_SRCJAR", dstubs.Javadoc.stubsSrcJar) } - if dstubs.apiVersionsXml != nil { - entries.SetPath("LOCAL_DROIDDOC_API_VERSIONS_XML", dstubs.apiVersionsXml) + if dstubs.everythingArtifacts.apiVersionsXml != nil { + entries.SetPath("LOCAL_DROIDDOC_API_VERSIONS_XML", dstubs.everythingArtifacts.apiVersionsXml) } - if dstubs.annotationsZip != nil { - entries.SetPath("LOCAL_DROIDDOC_ANNOTATIONS_ZIP", dstubs.annotationsZip) + if dstubs.everythingArtifacts.annotationsZip != nil { + entries.SetPath("LOCAL_DROIDDOC_ANNOTATIONS_ZIP", dstubs.everythingArtifacts.annotationsZip) } - if dstubs.metadataZip != nil { - entries.SetPath("LOCAL_DROIDDOC_METADATA_ZIP", dstubs.metadataZip) + if dstubs.everythingArtifacts.metadataZip != nil { + entries.SetPath("LOCAL_DROIDDOC_METADATA_ZIP", dstubs.everythingArtifacts.metadataZip) } }, }, diff --git a/java/droidstubs.go b/java/droidstubs.go index 06263136e..c2e822df8 100644 --- a/java/droidstubs.go +++ b/java/droidstubs.go @@ -65,15 +65,22 @@ func RegisterStubsBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("prebuilt_stubs_sources", PrebuiltStubsSourcesFactory) } +type stubsArtifacts struct { + nullabilityWarningsFile android.WritablePath + annotationsZip android.WritablePath + apiVersionsXml android.WritablePath + metadataZip android.WritablePath + metadataDir android.WritablePath +} + // Droidstubs type Droidstubs struct { Javadoc embeddableInModuleAndImport - properties DroidstubsProperties - apiFile android.Path - removedApiFile android.Path - nullabilityWarningsFile android.WritablePath + properties DroidstubsProperties + apiFile android.Path + removedApiFile android.Path checkCurrentApiTimestamp android.WritablePath updateCurrentApiTimestamp android.WritablePath @@ -83,22 +90,14 @@ type Droidstubs struct { checkNullabilityWarningsTimestamp android.WritablePath - annotationsZip android.WritablePath - apiVersionsXml android.WritablePath - - metadataZip android.WritablePath - metadataDir android.WritablePath + everythingArtifacts stubsArtifacts + exportableArtifacts stubsArtifacts // Single aconfig "cache file" merged from this module and all dependencies. mergedAconfigFiles map[string]android.Paths - exportableApiFile android.WritablePath - exportableRemovedApiFile android.WritablePath - exportableNullabilityWarningsFile android.WritablePath - exportableAnnotationsZip android.WritablePath - exportableApiVersionsXml android.WritablePath - exportableMetadataZip android.WritablePath - exportableMetadataDir android.WritablePath + exportableApiFile android.WritablePath + exportableRemovedApiFile android.WritablePath } type DroidstubsProperties struct { @@ -192,34 +191,22 @@ type DroidstubsProperties struct { // Used by xsd_config type ApiFilePath interface { - ApiFilePath() android.Path + ApiFilePath(StubsType) (android.Path, error) } type ApiStubsSrcProvider interface { - StubsSrcJar() android.Path -} - -type ExportableApiStubsSrcProvider interface { - ExportableStubsSrcJar() android.Path + StubsSrcJar(StubsType) (android.Path, error) } // Provider of information about API stubs, used by java_sdk_library. type ApiStubsProvider interface { - AnnotationsZip() android.Path + AnnotationsZip(StubsType) (android.Path, error) ApiFilePath - RemovedApiFilePath() android.Path + RemovedApiFilePath(StubsType) (android.Path, error) ApiStubsSrcProvider } -type ExportableApiStubsProvider interface { - ExportableAnnotationsZip() android.Path - ExportableApiFilePath() android.Path - ExportableRemovedApiFilePath() android.Path - - ExportableApiStubsSrcProvider -} - type currentApiTimestampProvider interface { CurrentApiTimestamp() android.Path } @@ -323,112 +310,86 @@ func (d *Droidstubs) OutputFiles(tag string) (android.Paths, error) { } switch prefixRemovedTag { case "": - return d.StubsSrcJarWithStubsType(stubsType) + stubsSrcJar, err := d.StubsSrcJar(stubsType) + return android.Paths{stubsSrcJar}, err case ".docs.zip": - return d.DocZipWithStubsType(stubsType) + docZip, err := d.DocZip(stubsType) + return android.Paths{docZip}, err case ".api.txt", android.DefaultDistTag: // This is the default dist path for dist properties that have no tag property. - return d.ApiFilePathWithStubsType(stubsType) + apiFilePath, err := d.ApiFilePath(stubsType) + return android.Paths{apiFilePath}, err case ".removed-api.txt": - return d.RemovedApiFilePathWithStubsType(stubsType) + removedApiFilePath, err := d.RemovedApiFilePath(stubsType) + return android.Paths{removedApiFilePath}, err case ".annotations.zip": - return d.AnnotationsZipWithStubsType(stubsType) + annotationsZip, err := d.AnnotationsZip(stubsType) + return android.Paths{annotationsZip}, err case ".api_versions.xml": - return d.ApiVersionsXmlFilePathWithStubsType(stubsType) + apiVersionsXmlFilePath, err := d.ApiVersionsXmlFilePath(stubsType) + return android.Paths{apiVersionsXmlFilePath}, err default: return nil, fmt.Errorf("unsupported module reference tag %q", tag) } } -func (d *Droidstubs) AnnotationsZip() android.Path { - return d.annotationsZip -} - -func (d *Droidstubs) ExportableAnnotationsZip() android.Path { - return d.exportableAnnotationsZip -} - -func (d *Droidstubs) AnnotationsZipWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) AnnotationsZip(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.AnnotationsZip()}, nil + return d.everythingArtifacts.annotationsZip, nil case Exportable: - return android.Paths{d.ExportableAnnotationsZip()}, nil + return d.exportableArtifacts.annotationsZip, nil default: return nil, fmt.Errorf("annotations zip not supported for the stub type %s", stubsType.String()) } } -func (d *Droidstubs) ApiFilePath() android.Path { - return d.apiFile -} - -func (d *Droidstubs) ExportableApiFilePath() android.Path { - return d.exportableApiFile -} - -func (d *Droidstubs) ApiFilePathWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) ApiFilePath(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.ApiFilePath()}, nil + return d.apiFile, nil case Exportable: - return android.Paths{d.ExportableApiFilePath()}, nil + return d.exportableApiFile, nil default: return nil, fmt.Errorf("api file path not supported for the stub type %s", stubsType.String()) } } -func (d *Droidstubs) ApiVersionsXmlFilePathWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) ApiVersionsXmlFilePath(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.apiVersionsXml}, nil + return d.everythingArtifacts.apiVersionsXml, nil default: return nil, fmt.Errorf("api versions xml file path not supported for the stub type %s", stubsType.String()) } } -func (d *Droidstubs) DocZipWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) DocZip(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.docZip}, nil + return d.docZip, nil default: return nil, fmt.Errorf("docs zip not supported for the stub type %s", stubsType.String()) } } -func (d *Droidstubs) RemovedApiFilePath() android.Path { - return d.removedApiFile -} - -func (d *Droidstubs) ExportableRemovedApiFilePath() android.Path { - return d.exportableRemovedApiFile -} - -func (d *Droidstubs) RemovedApiFilePathWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) RemovedApiFilePath(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.RemovedApiFilePath()}, nil + return d.removedApiFile, nil case Exportable: - return android.Paths{d.ExportableRemovedApiFilePath()}, nil + return d.exportableRemovedApiFile, nil default: return nil, fmt.Errorf("removed api file path not supported for the stub type %s", stubsType.String()) } } -func (d *Droidstubs) StubsSrcJar() android.Path { - return d.stubsSrcJar -} - -func (d *Droidstubs) ExportableStubsSrcJar() android.Path { - return d.exportableStubsSrcJar -} - -func (d *Droidstubs) StubsSrcJarWithStubsType(stubsType StubsType) (android.Paths, error) { +func (d *Droidstubs) StubsSrcJar(stubsType StubsType) (android.Path, error) { switch stubsType { case Everything: - return android.Paths{d.StubsSrcJar()}, nil + return d.stubsSrcJar, nil case Exportable: - return android.Paths{d.ExportableStubsSrcJar()}, nil + return d.exportableStubsSrcJar, nil default: return nil, fmt.Errorf("stubs srcjar not supported for the stub type %s", stubsType.String()) } @@ -576,11 +537,11 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a var apiVersions android.Path if proptools.Bool(d.properties.Api_levels_annotations_enabled) { d.apiLevelsGenerationFlags(ctx, cmd, stubsType, apiVersionsXml) - apiVersions = d.apiVersionsXml + apiVersions = d.everythingArtifacts.apiVersionsXml } else { ctx.VisitDirectDepsWithTag(metalavaAPILevelsModuleTag, func(m android.Module) { if s, ok := m.(*Droidstubs); ok { - apiVersions = s.apiVersionsXml + apiVersions = s.everythingArtifacts.apiVersionsXml } else { ctx.PropertyErrorf("api_levels_module", "module %q is not a droidstubs module", ctx.OtherModuleName(m)) @@ -839,28 +800,28 @@ func (d *Droidstubs) everythingStubCmd(ctx android.ModuleContext, params stubsCo } if params.writeSdkValues { - d.metadataDir = android.PathForModuleOut(ctx, Everything.String(), "metadata") - d.metadataZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"-metadata.zip") + d.everythingArtifacts.metadataDir = android.PathForModuleOut(ctx, Everything.String(), "metadata") + d.everythingArtifacts.metadataZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"-metadata.zip") } if Bool(d.properties.Annotations_enabled) { if params.validatingNullability { - d.nullabilityWarningsFile = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_nullability_warnings.txt") + d.everythingArtifacts.nullabilityWarningsFile = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_nullability_warnings.txt") } - d.annotationsZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_annotations.zip") + d.everythingArtifacts.annotationsZip = android.PathForModuleOut(ctx, Everything.String(), ctx.ModuleName()+"_annotations.zip") } if Bool(d.properties.Api_levels_annotations_enabled) { - d.apiVersionsXml = android.PathForModuleOut(ctx, Everything.String(), "api-versions.xml") + d.everythingArtifacts.apiVersionsXml = android.PathForModuleOut(ctx, Everything.String(), "api-versions.xml") } commonCmdParams := stubsCommandParams{ srcJarDir: srcJarDir, stubsDir: stubsDir, stubsSrcJar: d.Javadoc.stubsSrcJar, - metadataDir: d.metadataDir, - apiVersionsXml: d.apiVersionsXml, - nullabilityWarningsFile: d.nullabilityWarningsFile, - annotationsZip: d.annotationsZip, + metadataDir: d.everythingArtifacts.metadataDir, + apiVersionsXml: d.everythingArtifacts.apiVersionsXml, + nullabilityWarningsFile: d.everythingArtifacts.nullabilityWarningsFile, + annotationsZip: d.everythingArtifacts.annotationsZip, stubConfig: params, } @@ -883,9 +844,9 @@ func (d *Droidstubs) everythingStubCmd(ctx android.ModuleContext, params stubsCo BuiltTool("soong_zip"). Flag("-write_if_changed"). Flag("-d"). - FlagWithOutput("-o ", d.metadataZip). - FlagWithArg("-C ", d.metadataDir.String()). - FlagWithArg("-D ", d.metadataDir.String()) + FlagWithOutput("-o ", d.everythingArtifacts.metadataZip). + FlagWithArg("-C ", d.everythingArtifacts.metadataDir.String()). + FlagWithArg("-D ", d.everythingArtifacts.metadataDir.String()) } // TODO: We don't really need two separate API files, but this is a reminiscence of how @@ -1018,23 +979,23 @@ func (d *Droidstubs) exportableStubCmd(ctx android.ModuleContext, params stubsCo d.Javadoc.exportableStubsSrcJar = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"-"+"stubs.srcjar") optionalCmdParams.stubsSrcJar = d.Javadoc.exportableStubsSrcJar if params.writeSdkValues { - d.exportableMetadataZip = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"-metadata.zip") - d.exportableMetadataDir = android.PathForModuleOut(ctx, params.stubsType.String(), "metadata") - optionalCmdParams.metadataZip = d.exportableMetadataZip - optionalCmdParams.metadataDir = d.exportableMetadataDir + d.exportableArtifacts.metadataZip = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"-metadata.zip") + d.exportableArtifacts.metadataDir = android.PathForModuleOut(ctx, params.stubsType.String(), "metadata") + optionalCmdParams.metadataZip = d.exportableArtifacts.metadataZip + optionalCmdParams.metadataDir = d.exportableArtifacts.metadataDir } if Bool(d.properties.Annotations_enabled) { if params.validatingNullability { - d.exportableNullabilityWarningsFile = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_nullability_warnings.txt") - optionalCmdParams.nullabilityWarningsFile = d.exportableNullabilityWarningsFile + d.exportableArtifacts.nullabilityWarningsFile = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_nullability_warnings.txt") + optionalCmdParams.nullabilityWarningsFile = d.exportableArtifacts.nullabilityWarningsFile } - d.exportableAnnotationsZip = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_annotations.zip") - optionalCmdParams.annotationsZip = d.exportableAnnotationsZip + d.exportableArtifacts.annotationsZip = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"_annotations.zip") + optionalCmdParams.annotationsZip = d.exportableArtifacts.annotationsZip } if Bool(d.properties.Api_levels_annotations_enabled) { - d.exportableApiVersionsXml = android.PathForModuleOut(ctx, params.stubsType.String(), "api-versions.xml") - optionalCmdParams.apiVersionsXml = d.exportableApiVersionsXml + d.exportableArtifacts.apiVersionsXml = android.PathForModuleOut(ctx, params.stubsType.String(), "api-versions.xml") + optionalCmdParams.apiVersionsXml = d.exportableArtifacts.apiVersionsXml } if params.checkApi || String(d.properties.Api_filename) != "" { @@ -1234,7 +1195,7 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { } if String(d.properties.Check_nullability_warnings) != "" { - if d.nullabilityWarningsFile == nil { + if d.everythingArtifacts.nullabilityWarningsFile == nil { ctx.PropertyErrorf("check_nullability_warnings", "Cannot specify check_nullability_warnings unless validating nullability") } @@ -1251,13 +1212,13 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { ` 2. Update the file of expected warnings by running:\n`+ ` cp %s %s\n`+ ` and submitting the updated file as part of your change.`, - d.nullabilityWarningsFile, checkNullabilityWarnings) + d.everythingArtifacts.nullabilityWarningsFile, checkNullabilityWarnings) rule := android.NewRuleBuilder(pctx, ctx) rule.Command(). Text("("). - Text("diff").Input(checkNullabilityWarnings).Input(d.nullabilityWarningsFile). + Text("diff").Input(checkNullabilityWarnings).Input(d.everythingArtifacts.nullabilityWarningsFile). Text("&&"). Text("touch").Output(d.checkNullabilityWarningsTimestamp). Text(") || ("). @@ -1351,8 +1312,8 @@ func (p *PrebuiltStubsSources) OutputFiles(tag string) (android.Paths, error) { } } -func (d *PrebuiltStubsSources) StubsSrcJar() android.Path { - return d.stubsSrcJar +func (d *PrebuiltStubsSources) StubsSrcJar(_ StubsType) (android.Path, error) { + return d.stubsSrcJar, nil } func (p *PrebuiltStubsSources) GenerateAndroidBuildActions(ctx android.ModuleContext) { diff --git a/java/sdk_library.go b/java/sdk_library.go index 29da28d43..5ee713c15 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -15,6 +15,7 @@ package java import ( + "errors" "fmt" "path" "path/filepath" @@ -752,75 +753,78 @@ func (paths *scopePaths) extractExportableStubsLibraryInfoFromDependency(ctx and } } -func (paths *scopePaths) treatDepAsApiStubsProvider(dep android.Module, action func(provider ApiStubsProvider)) error { +func (paths *scopePaths) treatDepAsApiStubsProvider(dep android.Module, action func(provider ApiStubsProvider) error) error { if apiStubsProvider, ok := dep.(ApiStubsProvider); ok { - action(apiStubsProvider) - return nil - } else { - return fmt.Errorf("expected module that implements ApiStubsProvider, e.g. droidstubs") - } -} - -func (paths *scopePaths) treatDepAsExportableApiStubsProvider(dep android.Module, action func(provider ExportableApiStubsProvider)) error { - if exportableApiStubsProvider, ok := dep.(ExportableApiStubsProvider); ok { - action(exportableApiStubsProvider) + err := action(apiStubsProvider) + if err != nil { + return err + } return nil } else { return fmt.Errorf("expected module that implements ExportableApiStubsSrcProvider, e.g. droidstubs") } } -func (paths *scopePaths) treatDepAsApiStubsSrcProvider(dep android.Module, action func(provider ApiStubsSrcProvider)) error { +func (paths *scopePaths) treatDepAsApiStubsSrcProvider(dep android.Module, action func(provider ApiStubsSrcProvider) error) error { if apiStubsProvider, ok := dep.(ApiStubsSrcProvider); ok { - action(apiStubsProvider) + err := action(apiStubsProvider) + if err != nil { + return err + } return nil } else { return fmt.Errorf("expected module that implements ApiStubsSrcProvider, e.g. droidstubs") } } -func (paths *scopePaths) extractApiInfoFromApiStubsProvider(provider ApiStubsProvider) { - paths.annotationsZip = android.OptionalPathForPath(provider.AnnotationsZip()) - paths.currentApiFilePath = android.OptionalPathForPath(provider.ApiFilePath()) - paths.removedApiFilePath = android.OptionalPathForPath(provider.RemovedApiFilePath()) -} +func (paths *scopePaths) extractApiInfoFromApiStubsProvider(provider ApiStubsProvider, stubsType StubsType) error { + var annotationsZip, currentApiFilePath, removedApiFilePath android.Path + annotationsZip, annotationsZipErr := provider.AnnotationsZip(stubsType) + currentApiFilePath, currentApiFilePathErr := provider.ApiFilePath(stubsType) + removedApiFilePath, removedApiFilePathErr := provider.RemovedApiFilePath(stubsType) -func (paths *scopePaths) extractApiInfoFromExportableApiStubsProvider(provider ExportableApiStubsProvider) { - paths.annotationsZip = android.OptionalPathForPath(provider.ExportableAnnotationsZip()) - paths.currentApiFilePath = android.OptionalPathForPath(provider.ExportableApiFilePath()) - paths.removedApiFilePath = android.OptionalPathForPath(provider.ExportableRemovedApiFilePath()) + combinedError := errors.Join(annotationsZipErr, currentApiFilePathErr, removedApiFilePathErr) + + if combinedError == nil { + paths.annotationsZip = android.OptionalPathForPath(annotationsZip) + paths.currentApiFilePath = android.OptionalPathForPath(currentApiFilePath) + paths.removedApiFilePath = android.OptionalPathForPath(removedApiFilePath) + } + return combinedError } func (paths *scopePaths) extractApiInfoFromDep(ctx android.ModuleContext, dep android.Module) error { - return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { - paths.extractApiInfoFromApiStubsProvider(provider) + return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) error { + return paths.extractApiInfoFromApiStubsProvider(provider, Everything) }) } -func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsSrcProvider) { - paths.stubsSrcJar = android.OptionalPathForPath(provider.StubsSrcJar()) -} - -func (paths *scopePaths) extractStubsSourceInfoFromExportableApiStubsProviders(provider ExportableApiStubsSrcProvider) { - paths.stubsSrcJar = android.OptionalPathForPath(provider.ExportableStubsSrcJar()) +func (paths *scopePaths) extractStubsSourceInfoFromApiStubsProviders(provider ApiStubsSrcProvider, stubsType StubsType) error { + stubsSrcJar, err := provider.StubsSrcJar(stubsType) + if err == nil { + paths.stubsSrcJar = android.OptionalPathForPath(stubsSrcJar) + } + return err } func (paths *scopePaths) extractStubsSourceInfoFromDep(ctx android.ModuleContext, dep android.Module) error { - return paths.treatDepAsApiStubsSrcProvider(dep, func(provider ApiStubsSrcProvider) { - paths.extractStubsSourceInfoFromApiStubsProviders(provider) + return paths.treatDepAsApiStubsSrcProvider(dep, func(provider ApiStubsSrcProvider) error { + return paths.extractStubsSourceInfoFromApiStubsProviders(provider, Everything) }) } func (paths *scopePaths) extractStubsSourceAndApiInfoFromApiStubsProvider(ctx android.ModuleContext, dep android.Module) error { if ctx.Config().ReleaseHiddenApiExportableStubs() { - return paths.treatDepAsExportableApiStubsProvider(dep, func(provider ExportableApiStubsProvider) { - paths.extractApiInfoFromExportableApiStubsProvider(provider) - paths.extractStubsSourceInfoFromExportableApiStubsProviders(provider) + return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) error { + extractApiInfoErr := paths.extractApiInfoFromApiStubsProvider(provider, Exportable) + extractStubsSourceInfoErr := paths.extractStubsSourceInfoFromApiStubsProviders(provider, Exportable) + return errors.Join(extractApiInfoErr, extractStubsSourceInfoErr) }) } - return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) { - paths.extractApiInfoFromApiStubsProvider(provider) - paths.extractStubsSourceInfoFromApiStubsProviders(provider) + return paths.treatDepAsApiStubsProvider(dep, func(provider ApiStubsProvider) error { + extractApiInfoErr := paths.extractApiInfoFromApiStubsProvider(provider, Everything) + extractStubsSourceInfoErr := paths.extractStubsSourceInfoFromApiStubsProviders(provider, Everything) + return errors.Join(extractApiInfoErr, extractStubsSourceInfoErr) }) }