Esempio n. 1
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();
            }
        }