Integrate policy-aware item scopes

This commit is contained in:
2026-10-23 18:55:03 +00:00
parent d03e56398b
commit dfeaf90320
7 changed files with 353 additions and 30 deletions

View File

@@ -141,6 +141,7 @@ func (state *sourceVersionState) process(root *document.Node, role sourceVersion
type sourceVersionProcessingResult struct {
payload *document.Node
imports []importDeclarationSpec
sequences []sequenceDeclarationSpec
evidence *sourceVersionEvidence
diagnostics []Diagnostic
}
@@ -188,6 +189,10 @@ type sourceVersionPath struct {
}
func processSourceVersion(root *document.Node, rule *VersionRule, role sourceVersionRole, destination Path, mode sourceVersionMode) sourceVersionProcessingResult {
return processSourceVersionWithDirectiveContext(root, rule, role, destination, mode, rootDirectiveContextImportsOnly)
}
func processSourceVersionWithDirectiveContext(root *document.Node, rule *VersionRule, role sourceVersionRole, destination Path, mode sourceVersionMode, directiveContext rootDirectiveContext) sourceVersionProcessingResult {
if role != sourceVersionMain && role != sourceVersionContribution {
return sourceVersionProcessingResult{diagnostics: []Diagnostic{sourceVersionOptionsDiagnostic("source role is invalid")}}
}
@@ -204,11 +209,14 @@ func processSourceVersion(root *document.Node, rule *VersionRule, role sourceVer
return sourceVersionProcessingResult{}
}
payload, imports, diagnostics := splitImportDirectives(root)
extracted, diagnostics := extractRootDirectives(root, directiveContext)
if len(diagnostics) != 0 {
return sourceVersionProcessingResult{diagnostics: diagnostics}
}
result := sourceVersionProcessingResult{payload: payload, imports: imports}
result := sourceVersionProcessingResult{
payload: extracted.body, imports: extracted.imports,
sequences: cloneSequenceDeclarations(extracted.sequences),
}
if mode == sourceVersionModeDefault {
return result
}