Integrate policy-aware item scopes
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user