in src/Core/Compiling/Policy/TraceCompiler.cs [61:104]
private static IEnumerable<object> HandleMetadata(ICompilationContext context, InitializerValue metadata)
{
List<object> elements = new();
foreach (InitializerValue data in metadata.UnnamedValues ?? [])
{
if (!data.TryGetValues<TraceMetadata>(out IReadOnlyDictionary<string, InitializerValue>? metadataValues))
{
context.Report(Diagnostic.Create(
CompilationErrors.PolicyArgumentIsNotOfRequiredType,
data.Node.GetLocation(),
"trace.metadata",
nameof(TraceMetadata)
));
continue;
}
XElement xMetadata = new("metadata");
if (!xMetadata.AddAttribute(metadataValues, nameof(TraceMetadata.Name), "name"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
data.Node.GetLocation(),
"trace.metadata",
nameof(TraceMetadata.Name)
));
continue;
}
if (!xMetadata.AddAttribute(metadataValues, nameof(TraceMetadata.Value), "value"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
data.Node.GetLocation(),
"trace.metadata",
nameof(TraceMetadata.Value)
));
continue;
}
elements.Add(xMetadata);
}
return elements;
}