public override void VisitVariableDeclarator(VariableDeclaratorSyntax node) { base.VisitVariableDeclarator(node); var symbol = model.GetDeclaredSymbol(node); if (symbol != null && node.Initializer != null) { var context = new RoslynExtensions.ValueContext(); var valueType = node.Initializer.Value.GetTypeOfValue(model, context); if (mode == AnalysisMode.Strict && !context.HasNotNullAttribute) { valueType = ValueType.Null; } Assignments.Add(new Assignment(symbol, node.Initializer.Value, valueType)); } }
public override void VisitAssignmentExpression(AssignmentExpressionSyntax node) { base.VisitAssignmentExpression(node); var symbol = model.GetSymbolInfo(node.Left).Symbol; if (symbol != null) { var context = new RoslynExtensions.ValueContext(); var valueType = node.Right.GetTypeOfValue(model, context); if (mode == AnalysisMode.Strict && !context.HasNotNullAttribute) { valueType = ValueType.Null; } var item = new Assignment(symbol, node, valueType); Assignments.Add(item); } }