Beispiel #1
0
 public static InvocationExpressionSyntax ToNameof(this string name)
 {
     return(SF.InvocationExpression(
                SF.IdentifierName("nameof"))
            .WithArgumentList(
                SF.ArgumentList(
                    SF.SingletonSeparatedList <ArgumentSyntax>(
                        SF.Argument(
                            SF.IdentifierName("C"))))));
 }
Beispiel #2
0
        public static LocalDeclarationStatementSyntax LocalVairableDeclaration(
            this TypeSyntax type,
            string name,
            ExpressionSyntax value = null)
        {
            var declarator = SF.VariableDeclarator(SF.Identifier(name));

            if (value != null)
            {
                declarator = declarator.WithInitializer(SF.EqualsValueClause(value));
            }

            var delaration = SF.LocalDeclarationStatement(
                SF.VariableDeclaration(type)
                .WithVariables(SF.SingletonSeparatedList(declarator)));

            return(delaration);
        }
Beispiel #3
0
        private LocalFunctionStatementSyntax ConvertLambda(LambdaExpressionSyntax node)
        {
            LambdaExpressionSyntax visited;
            ParameterListSyntax    parameterList;

            switch (node)
            {
            case ParenthesizedLambdaExpressionSyntax parLambda: {
                var v = (ParenthesizedLambdaExpressionSyntax)base.VisitParenthesizedLambdaExpression(parLambda);
                parameterList = v.ParameterList;
                visited       = v;
                break;
            }

            case SimpleLambdaExpressionSyntax simpleLambda: {
                var v = (SimpleLambdaExpressionSyntax)base.VisitSimpleLambdaExpression(simpleLambda);
                parameterList = SyntaxFactory.ParameterList(
                    SyntaxFactory.SingletonSeparatedList(v.Parameter)
                    );
                visited = v;
                break;
            }

            default:
                throw new NotImplementedException();
            }
            if (_lambdaNumbersDict.TryGetValue(node, out var index))
            {
                return(SyntaxFactory.LocalFunctionStatement(GetDummyMethodReturnType(), $"lambda__{index}")
                       .NormalizeWhitespace()
                       .WithParameterList(parameterList)
                       .WithBody((BlockSyntax)visited.Body));
            }
            else
            {
                throw new Exception();
            }
        }
Beispiel #4
0
 public FieldDeclarationSyntax Build()
 => SF.FieldDeclaration(SF.VariableDeclaration(ParseType(_type), SF.SingletonSeparatedList(SF.VariableDeclarator(_name))))
 .AddModifiers(_modifiers.Build().ToArray());