public void Handle()

in src/Core/Compiling/Policy/TraceCompiler.cs [18:59]


    public void Handle(ICompilationContext context, InvocationExpressionSyntax node)
    {
        if (!node.TryExtractingConfigParameter<TraceConfig>(context, "trace",
                out IReadOnlyDictionary<string, InitializerValue>? values))
        {
            return;
        }

        XElement element = new("trace");
        if (!element.AddAttribute(values, nameof(TraceConfig.Source), "source"))
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.RequiredParameterNotDefined,
                node.GetLocation(),
                "trace",
                nameof(TraceConfig.Source)
            ));
            return;
        }

        if (!values.TryGetValue(nameof(TraceConfig.Message), out InitializerValue? message) || message.Value is null)
        {
            context.Report(Diagnostic.Create(
                CompilationErrors.RequiredParameterNotDefined,
                node.GetLocation(),
                "trace",
                nameof(TraceConfig.Message)
            ));
            return;
        }

        element.Add(new XElement("message", message.Value));

        element.AddAttribute(values, nameof(TraceConfig.Severity), "severity");

        if (values.TryGetValue(nameof(TraceConfig.Metadata), out InitializerValue? metadata))
        {
            element.Add(HandleMetadata(context, metadata).ToArray());
        }

        context.AddPolicy(element);
    }