in src/Core/Compiling/Policy/InvokeDarpBindingCompiler.cs [60:113]
private static void HandleMataData(ICompilationContext context, InitializerValue mataDataValue,
XElement parentElement)
{
if (mataDataValue.UnnamedValues is null || mataDataValue.UnnamedValues.Count == 0)
{
return;
}
var element = new XElement("metadata");
foreach (InitializerValue item in mataDataValue.UnnamedValues ?? [])
{
if (!item.TryGetValues<DarpMetaData>(out var mataDataValues))
{
context.Report(Diagnostic.Create(
CompilationErrors.PolicyArgumentIsNotOfRequiredType,
item.Node.GetLocation(),
"invoke-darp-binding.matadata",
nameof(DarpMetaData)
));
continue;
}
XElement mataDataElement = new("item");
if (!mataDataElement.AddAttribute(mataDataValues, nameof(DarpMetaData.Key), "key"))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
item.Node.GetLocation(),
"invoke-darp-binding.matadata.item",
nameof(DarpMetaData.Key)
));
continue;
}
if (!mataDataValues.TryGetValue(nameof(DarpMetaData.Value), out var value))
{
context.Report(Diagnostic.Create(
CompilationErrors.RequiredParameterNotDefined,
item.Node.GetLocation(),
"invoke-darp-binding.matadata.item",
nameof(DarpMetaData.Value)
));
continue;
}
mataDataElement.Value = value.Value!;
element.Add(mataDataElement);
}
parentElement.Add(element);
}