using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis.PooledObjects; namespace Microsoft.CodeAnalysis.CSharp.Symbols; internal sealed class SynthesizedEmbeddedAttributeConstructorWithBodySymbol : SynthesizedInstanceConstructor { private readonly ImmutableArray _parameters; private readonly Action, ImmutableArray> _getConstructorBody; public override ImmutableArray Parameters => _parameters; internal SynthesizedEmbeddedAttributeConstructorWithBodySymbol(NamedTypeSymbol containingType, Func> getParameters, Action, ImmutableArray> getConstructorBody) : base(containingType) { _parameters = getParameters(this); _getConstructorBody = getConstructorBody; } internal override void GenerateMethodBody(TypeCompilationState compilationState, BindingDiagnosticBag diagnostics) { GenerateMethodBodyCore(compilationState, diagnostics); } internal override void GenerateMethodBodyStatements(SyntheticBoundNodeFactory factory, ArrayBuilder statements, BindingDiagnosticBag diagnostics) { _getConstructorBody(factory, statements, _parameters); } }