private static void HandleStatusCodes()

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);
        }
    }