Exemple #1
0
 public override SyntaxNode VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
 {
     if (node.IsKind(SK.PostIncrementExpression) ||
         node.IsKind(SK.PostDecrementExpression))
     {
         var identifier = ((IdentifierNameSyntax)node.Operand).Identifier.Text;
         SMS.Update(identifier, node);
     }
     else
     {
         throw new NotImplementedException("Unsupported PostfixUnaryExpression: " + node.Kind());
     }
     return(base.VisitPostfixUnaryExpression(node));
 }
Exemple #2
0
 public override void VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
 {
     base.VisitPostfixUnaryExpression(node);
     if (node.IsKind(SyntaxKind.PostDecrementExpression) || node.IsKind(SyntaxKind.PostIncrementExpression))
     {
         var variables = GetAllKnownVariablesInSyntaxTree(node.Operand).ToList();
         if (variables.Count == 0)
         {
             Console.WriteLine("Could not determine written variable in assignment '{0}'", node);
             return;
         }
         var writtenVar = variables.First();
         RecordFlow(_varToLastWritesStack.Peek(), writtenVar.Item1, writtenVar.Item2, SourceGraphEdge.LastWrite);
     }
 }
Exemple #3
0
 public override void VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
 {
     if (node.IsKind(SyntaxKind.PostDecrementExpression))
     {
         ProcessPrefixPostfixOperators(node.Operand, OpCodes.Sub, false);
     }
     else if (node.IsKind(SyntaxKind.PostIncrementExpression))
     {
         ProcessPrefixPostfixOperators(node.Operand, OpCodes.Add, false);
     }
     else
     {
         LogUnsupportedSyntax(node);
     }
 }
        public override SyntaxNode VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
        {
            if (node.IsKind(SyntaxKind.PostIncrementExpression) && node.Parent?.Kind() != SyntaxKind.ForStatement)
            {
                var newNode = SyntaxFactory.PostfixUnaryExpression(SyntaxKind.PostDecrementExpression, node.Operand).NormalizeWhitespace();
                CreateReplacer(node, newNode);
            }

            if (node.IsKind(SyntaxKind.PostDecrementExpression) && node.Parent?.Kind() != SyntaxKind.ForStatement)
            {
                var newNode = SyntaxFactory.PostfixUnaryExpression(SyntaxKind.PostIncrementExpression, node.Operand).NormalizeWhitespace();
                CreateReplacer(node, newNode);
            }

            return(base.VisitPostfixUnaryExpression(node));
        }
 public override void VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
 {
     if (node.IsKind(SyntaxKind.PostIncrementExpression, SyntaxKind.PostDecrementExpression) &&
         FieldSymbol.Type.TypeKind == TypeKind.Struct &&
         IsAssigned(node.Operand))
     {
         Success = false;
     }
     else
     {
         base.VisitPostfixUnaryExpression(node);
     }
 }
        public override void VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
        {
            if (node.IsKind(SyntaxKind.PostIncrementExpression, SyntaxKind.PostDecrementExpression))
            {
                ExpressionSyntax operand = node.Operand;

                VisitAssignedExpression(operand);
                Visit(operand);
            }
            else
            {
                base.VisitPostfixUnaryExpression(node);
            }
        }
            public override void VisitPostfixUnaryExpression(PostfixUnaryExpressionSyntax node)
            {
                base.VisitPostfixUnaryExpression(node);

                if (node.IsKind(SyntaxKind.PostDecrementExpression) || node.IsKind(SyntaxKind.PostIncrementExpression))
                {
                    var postfixed = node.Operand;

                    if (postfixed.IsKind(SyntaxKind.IdentifierName))
                    {
                        var identifier = (IdentifierNameSyntax)postfixed;

                        if (identifier.Identifier.Text == _testee.Name)
                        {
                            _isAssigned = true;
                        }
                    }
                }
            }