示例#1
0
        public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
        {
            var parameterTokens = node.ParameterList.Parameters.Select(p => p.Identifier);

            _tracker.AddIdentifiers(parameterTokens);
            Visit(node.Body);
            _tracker.RemoveIdentifiers(parameterTokens);
        }
示例#2
0
        public override void VisitBlock(BlockSyntax node)
        {
            var tokens = new List <SyntaxToken>();

            // We want to collect any labels and add them all at once for this scope
            foreach (var statement in node.Statements)
            {
                if (statement.IsKind(SyntaxKind.LabeledStatement, out LabeledStatementSyntax declarationStatement))
                {
                    tokens.Add(declarationStatement.Identifier);
                }
            }

            _tracker.AddIdentifiers(tokens);
            DefaultVisit(node);
            _tracker.RemoveIdentifiers(tokens);
        }