public override void VisitCompoundAssignmentStatement(CompoundAssignmentStatementSyntax node)
 {
     if (!_featureStatisticsBuilder.HasCompoundAssignments)
     {
         _featureStatisticsBuilder.HasCompoundAssignments = true;
     }
     base.VisitCompoundAssignmentStatement(node);
 }
        private static void AnalyzeCompoundAssignmentStatementIdentifier(
            IdentifierNameSyntax identifier,
            Dictionary <string, IdentifierNameSyntax> firstVarInitializerSyntax,
            Dictionary <string, IdentifierNameSyntax> firstVarUsageSyntax)
        {
            // ISSUE: variable of a compiler-generated type
            CompoundAssignmentStatementSyntax parent = (CompoundAssignmentStatementSyntax)identifier.Parent;

            if (parent.Target.IsKind(SyntaxKind.IdentifierName) && SemanticFacts.IsSameName(((SimpleNameSyntax)parent.Target).Identifier.ValueText, identifier.Identifier.ValueText))
            {
                firstVarInitializerSyntax.AddIdentifierIfNotExist(identifier);
            }
            else
            {
                firstVarUsageSyntax.AddIdentifierIfNotExist(identifier);
            }
        }
Exemplo n.º 3
0
            public override void VisitCompoundAssignmentStatement(CompoundAssignmentStatementSyntax node)
            {
                // Visit values first so that we don't end up with circular references.
                Visit(node.Expression);

                if (node.Variable is IdentifierNameSyntax identifierName)
                {
                    var variable = GetVariableOrCreateGlobal(identifierName.Name);
                    _variables[identifierName] = variable;
                    variable.AddWriteLocation(node);
                    variable.AddReferencingScope(Scope);
                    Scope.AddReferencedVariable(variable);
                }
                else
                {
                    Visit(node.Variable);
                }
            }
Exemplo n.º 4
0
            public override void VisitCompoundAssignmentStatement(CompoundAssignmentStatementSyntax node)
            {
                // Visit values first so that we don't end up with circular references.
                Visit(node.Expression);

                if (node.Variable is IdentifierNameSyntax identifierName)
                {
                    if (identifierName.IsMissing || string.IsNullOrWhiteSpace(identifierName.Name))
                    {
                        return;
                    }
                    var variable = GetVariableOrCreateGlobal(identifierName.Name);
                    _variables.Add(identifierName, variable);
                    variable.AddWriteLocation(node);
                    variable.AddReferencingScope(Scope);
                    Scope.AddReferencedVariable(variable);
                }
                else
                {
                    Visit(node.Variable);
                }
            }