Пример #1
0
        private MethodDeclarationSyntax ReplaceParameterUsages(MethodDeclarationSyntax methodDeclaration,
                                                               IParameterSymbol parameterSymbol, SyntaxNode replaceWith, SemanticModel semanticModel)
        {
            var rewriter = new ParameterUsagesRewriter(parameterSymbol, replaceWith, semanticModel);

            return((MethodDeclarationSyntax)methodDeclaration.Accept(rewriter));
        }
Пример #2
0
        public static bool HasYield(MethodDeclarationSyntax method)
        {
            var yieldChecker = new YieldChecker(true);

            method.Accept(yieldChecker);
            return(yieldChecker.isSpecial);
        }
Пример #3
0
        public void GenerateStates()
        {
            var lastState = new State(this);

            lastState.Statements.Add(Cs.Return(Cs.False()));

            currentState = new State(this)
            {
                NextState = lastState
            };
            node.Accept(this);

            // Post-process goto statements
            if (labelStates.Any())
            {
                var gotoSubstituter = new GotoSubstituter(compilation, labelStates);
                foreach (var state in states)
                {
                    state.Statements = state.Statements.Select(x => (StatementSyntax)x.Accept(gotoSubstituter)).ToList();
                }
            }

            if (!states.Last().Statements.Any())
            {
                states.Last().Statements.Add(Cs.Break());
            }
        }
Пример #4
0
        public static bool HasYield(MethodDeclarationSyntax method)
        {
            if (method.IsAsync())
            {
                return(false);
            }

            var yieldChecker = new YieldChecker(true);

            method.Accept(yieldChecker);
            return(yieldChecker.isSpecial);
        }