private async Task <Document> SwapMethodCalls(Document document, InvocationExpressionSyntax typeDecl, CancellationToken cancellationToken)
        {
            IEnumerable <SyntaxNode> children = typeDecl.ChildNodes();

            Debug.Assert(children.Count() > 0);
            MemberAccessExpressionSyntax sliceAccess = children.ElementAt(0) as MemberAccessExpressionSyntax;

            IEnumerable <SyntaxNode> grandChildren = sliceAccess.ChildNodes();

            Debug.Assert(grandChildren.Count() > 0);
            SyntaxNode target = grandChildren.ElementAt(0);

            MemberAccessExpressionSyntax parent = typeDecl.Parent as MemberAccessExpressionSyntax;

            MemberAccessExpressionSyntax newLocal       = parent.ReplaceNode(typeDecl, target);
            MemberAccessExpressionSyntax formattedLocal = newLocal.WithAdditionalAnnotations(Formatter.Annotation);

            InvocationExpressionSyntax replacement = typeDecl.ReplaceNode(target, formattedLocal).WithAdditionalAnnotations(Formatter.Annotation);

            SyntaxNode oldRoot = await document.GetSyntaxRootAsync(cancellationToken);

            SyntaxNode newRoot = oldRoot.ReplaceNode(parent, replacement);

            // Return document with transformed tree.
            return(document.WithSyntaxRoot(newRoot));
        }
Exemplo n.º 2
0
        private SyntaxNode GetRoleMethodInvocation(MemberAccessExpressionSyntax node)
        {
            var expression = Visit(node.Expression);

            if (node.Expression != expression)
            {
                node = node.ReplaceNode(node.Expression, expression);
            }
            if (IsRoleMethodInvocation(node))
            {
                var methodName = ((SimpleNameSyntax)node.Name).Identifier.ValueText;
                return(Syntax.IdentifierName("self__" + GetRoleName(node.Expression) + "__" + methodName).WithLeadingTrivia(node.GetLeadingTrivia()));
            }
            return(node);
        }
Exemplo n.º 3
0
        private SyntaxNode GetRoleMethodInvocation(MemberAccessExpressionSyntax node)
        {
            var expression = Visit(node.Expression);
            if (node.Expression != expression)
            {
                node = node.ReplaceNode(node.Expression, expression);
            }
            if (IsRoleMethodInvocation(node))
            {
                var methodName = ((SimpleNameSyntax)node.Name).Identifier.ValueText;
                return Syntax.IdentifierName("self__" + GetRoleName(node.Expression) + "__" + methodName).WithLeadingTrivia(node.GetLeadingTrivia());

            }
            return node;
        }