in src/Core/Compiling/Policy/ValidateParametersCompiler.cs [203:245]
private static void AddParameters(ICompilationContext context, InitializerValue parametersValue,
XElement parentElement, string policyPath)
{
foreach (var paramValue in parametersValue.UnnamedValues ?? [])
{
if (!paramValue.TryGetValues<ValidateParameter>(out var paramValues))
{
context.Report(Diagnostic.Create(
CompilationErrors.PolicyArgumentIsNotOfRequiredType,
paramValue.Node.GetLocation(),
$"{policyPath}.parameter",
nameof(ValidateParameter)
));
continue;
}
XElement paramElement = new("parameter");
if (!paramElement.AddAttribute(paramValues, nameof(ValidateParameter.Name), "name"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
paramValue.Node.GetLocation(),
$"{policyPath}.parameter",
nameof(ValidateParameter.Name)
));
continue;
}
if (!paramElement.AddAttribute(paramValues, nameof(ValidateParameter.Action), "action"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
paramValue.Node.GetLocation(),
$"{policyPath}.parameter",
nameof(ValidateParameter.Action)
));
continue;
}
parentElement.Add(paramElement);
}
}