private static LocalFunctionStatementSyntax GetNewNode(
            LocalFunctionStatementSyntax localFunctionStatement,
            TypeParameterConstraintSyntax constraint,
            SemanticModel semanticModel,
            CancellationToken cancellationToken)
        {
            string name = GetMethodTypeParameterName(semanticModel, localFunctionStatement.BodyOrExpressionBody().SpanStart, cancellationToken);

            LocalFunctionStatementSyntax newNode = localFunctionStatement.AddTypeParameterListParameters(TypeParameter(Identifier(name).WithRenameAnnotation()));

            if (constraint != null)
            {
                newNode = newNode.AddConstraintClauses(TypeParameterConstraintClause(name, constraint));
            }

            return(newNode);
        }
        public static ParametersInfo Create(LocalFunctionStatementSyntax localFunction, bool allowMissing = false)
        {
            ParameterListSyntax parameterList = localFunction.ParameterList;

            if (!Check(parameterList, allowMissing))
            {
                return(Default);
            }

            SeparatedSyntaxList <ParameterSyntax> parameters = parameterList.Parameters;

            if (!CheckParameters(parameters, allowMissing))
            {
                return(Default);
            }

            TypeParameterListSyntax typeParameterList = localFunction.TypeParameterList;
            SeparatedSyntaxList <TypeParameterSyntax> typeParameters = typeParameterList?.Parameters ?? default(SeparatedSyntaxList <TypeParameterSyntax>);

            if (!CheckTypeParameters(typeParameters, allowMissing))
            {
                return(Default);
            }

            if (!parameters.Any() &&
                !typeParameters.Any())
            {
                return(Default);
            }

            CSharpSyntaxNode body = localFunction.BodyOrExpressionBody();

            if (!Check(body, allowMissing))
            {
                return(Default);
            }

            return(new ParametersInfo(typeParameterList, parameterList, body));
        }
Exemple #3
0
 protected override CSharpSyntaxNode GetBody(LocalFunctionStatementSyntax node)
 {
     return(node.BodyOrExpressionBody());
 }