Handle companion imports without a filesystem base

This commit is contained in:
2026-11-09 20:38:55 +00:00
parent e47960d377
commit b93cbb0639
5 changed files with 187 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ type tierAcquisitionState struct {
type inputAcquisitionRequest struct {
input loadInput
resolved *resolvedFilesystemContext
withoutBase bool
role sourceVersionRole
directiveContext rootDirectiveContext
protectionRule *VersionRule
@@ -34,6 +35,9 @@ type importAcquisitionRequest struct {
}
func acquireInput(request inputAcquisitionRequest, policy acquisitionPolicy, state *acquisitionState, tier *tierAcquisitionState) (assembledInput, []Diagnostic) {
if request.withoutBase && request.input.mainRelative.RequireBase {
return assembledInput{}, []Diagnostic{optionDiagnostic(CodeOptionsInvalid, "main-relative input requires a filesystem base")}
}
source := request.input.source
destination := request.input.destination
accounting := state.accounting
@@ -102,7 +106,12 @@ func acquireInput(request inputAcquisitionRequest, policy acquisitionPolicy, sta
return input, diagnostics
}
request.input.source = selectedSource
if request.input.imports && selectedSource.kind != sourceNone {
if request.input.imports && selectedSource.kind != sourceNone && request.withoutBase {
input, diagnostics = acquireContextlessInput(input, request, versionProcessing, policy)
if len(diagnostics) != 0 {
return input, diagnostics
}
} else if request.input.imports && selectedSource.kind != sourceNone {
importRequest := importAcquisitionRequest{input: request, main: parsed, processing: versionProcessing}
input.composition, input.sources, input.resolvedFilesystem, diagnostics = acquireImportedInput(importRequest, &policy, state, tier)
if len(diagnostics) != 0 {