in src/Core/Compiling/Policy/ValidateStatusCodeCompiler.cs [47:88]
private static void HandleStatusCodes(ICompilationContext context, InitializerValue statusCodesValue,
XElement parentElement)
{
foreach (var statusCodeValue in statusCodesValue.UnnamedValues ?? [])
{
if (!statusCodeValue.TryGetValues<ValidateStatusCode>(out var validateStatusCodeValues))
{
context.Report(Diagnostic.Create(
CompilationErrors.PolicyArgumentIsNotOfRequiredType,
statusCodeValue.Node.GetLocation(),
"validate-status-code.status-code",
nameof(ValidateStatusCode)
));
continue;
}
XElement statusCodeElement = new("status-code");
if (!statusCodeElement.AddAttribute(validateStatusCodeValues, nameof(ValidateStatusCode.Code), "code"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
statusCodeValue.Node.GetLocation(),
"validate-status-code.status-code",
nameof(ValidateStatusCode.Code)
));
continue;
}
if (!statusCodeElement.AddAttribute(validateStatusCodeValues, nameof(ValidateStatusCode.Action), "action"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
statusCodeValue.Node.GetLocation(),
"validate-status-code.status-code",
nameof(ValidateStatusCode.Action)
));
continue;
}
parentElement.Add(statusCodeElement);
}
}