private static void HandleMataData()

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