public override TDeclarationNode AddParameters <TDeclarationNode>( TDeclarationNode destination, IEnumerable <IParameterSymbol> parameters, CodeGenerationOptions options, CancellationToken cancellationToken) { var currentParameterList = CSharpSyntaxGenerator.GetParameterList(destination); if (currentParameterList == null) { return(destination); } var currentParamsCount = currentParameterList.Parameters.Count; var seenOptional = currentParamsCount > 0 && currentParameterList.Parameters[currentParamsCount - 1].Default != null; var isFirstParam = currentParamsCount == 0; var newParams = ArrayBuilder <SyntaxNode> .GetInstance(); foreach (var parameter in parameters) { var parameterSyntax = ParameterGenerator.GetParameter(parameter, options, isExplicit: false, isFirstParam: isFirstParam, seenOptional: seenOptional); isFirstParam = false; seenOptional = seenOptional || parameterSyntax.Default != null; newParams.Add(parameterSyntax); } var finalMember = CSharpSyntaxGenerator.Instance.AddParameters(destination, newParams.ToImmutableAndFree()); return(Cast <TDeclarationNode>(finalMember)); }
protected override BaseParameterListSyntax TryGetApplicableList(SyntaxNode node) => CSharpSyntaxGenerator.GetParameterList(node);