74 references to ValueUsageInfo
Microsoft.CodeAnalysis.CodeStyle (74)
src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (1)
240var valueUsageInfo = fieldReference.GetValueUsageInfo(owningSymbol);
src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (23)
89protected virtual void HandleNamedTypeSymbolStart(SymbolStartAnalysisContext context, Action<ISymbol, ValueUsageInfo> onSymbolUsageFound) 123private readonly Dictionary<ISymbol, ValueUsageInfo> _symbolValueUsageStateMap_doNotAccessDirectly = new(OriginalDefinitionSymbolEqualityComparer.Instance); 230Action<ISymbol, ValueUsageInfo> onSymbolUsageFound = OnSymbolUsage; 311AddSymbolUsage(symbol, ValueUsageInfo.None); 315private void AddSymbolUsage(ISymbol? symbol, ValueUsageInfo info) 326private void UpdateSymbolUsage(ISymbol? symbol, ValueUsageInfo info) 333if (_symbolValueUsageStateMap_doNotAccessDirectly.TryGetValue(symbol, out var currentUsageInfo)) 340private bool TryGetAndRemoveSymbolUsage(ISymbol memberSymbol, out ValueUsageInfo valueUsageInfo) 359OnSymbolUsage(method, ValueUsageInfo.Read); 375OnSymbolUsage(field, ValueUsageInfo.Write); 380private void OnSymbolUsage(ISymbol? memberSymbol, ValueUsageInfo usageInfo) 395var valueUsageInfo = memberReference.GetValueUsageInfo(operationContext.ContainingSymbol); 397if (valueUsageInfo == ValueUsageInfo.ReadWrite) 426valueUsageInfo = ValueUsageInfo.Write; 452OnSymbolUsage(symbols.CurrentProperty, ValueUsageInfo.Read); 453OnSymbolUsage(symbols.GetEnumeratorMethod, ValueUsageInfo.Read); 454OnSymbolUsage(symbols.MoveNextMethod, ValueUsageInfo.Read); 463OnSymbolUsage(targetMethod, ValueUsageInfo.Read); 468OnSymbolUsage(targetMethod.ReducedFrom, ValueUsageInfo.Read); 482OnSymbolUsage(memberReference.Member, ValueUsageInfo.ReadWrite); 491OnSymbolUsage(symbol, ValueUsageInfo.ReadWrite); 500OnSymbolUsage(constructor, ValueUsageInfo.Read); 537if (TryGetAndRemoveSymbolUsage(member, out var valueUsageInfo) && !valueUsageInfo.IsReadFrom())
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (32)
24/// Returns the <see cref="ValueUsageInfo"/> for the given operation. 27public static ValueUsageInfo GetValueUsageInfo(this IOperation operation, ISymbol containingSymbol) 55return ValueUsageInfo.Write; 72return ValueUsageInfo.Write; 83return ValueUsageInfo.Write; 93return ValueUsageInfo.Write; 101return ValueUsageInfo.Write; 109return ValueUsageInfo.Write; 115return ValueUsageInfo.ReadWrite; 120return ValueUsageInfo.Write; 127? ValueUsageInfo.ReadWrite 128: ValueUsageInfo.Write; 133return ValueUsageInfo.ReadableWritableReference; 137return ValueUsageInfo.ReadWrite; 141return ValueUsageInfo.ReadWrite; 149~(ValueUsageInfo.Write | ValueUsageInfo.Reference); 153return ValueUsageInfo.Name; 160return ValueUsageInfo.ReadableReference; 163return ValueUsageInfo.WritableReference; 166return ValueUsageInfo.ReadableWritableReference; 169return ValueUsageInfo.Read; 176RefKind.RefReadOnly => ValueUsageInfo.ReadableReference, 177RefKind.Ref => ValueUsageInfo.ReadableWritableReference, 178_ => ValueUsageInfo.Read, 190return ValueUsageInfo.Read; 197? ValueUsageInfo.ReadWrite 198: ValueUsageInfo.Write; 206return ValueUsageInfo.Write; 221return ValueUsageInfo.ReadableWritableReference; 224return ValueUsageInfo.ReadableReference; 229return ValueUsageInfo.Read;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (5)
15/// For methods, fields, properties, events, locals and parameters, this corresponds to values from <see cref="ValueUsageInfo"/>. 20public static readonly SymbolUsageInfo None = Create(ValueUsageInfo.None); 23public ValueUsageInfo? ValueUsageInfoOpt { get; } 29public SymbolUsageInfo(ValueUsageInfo? valueUsageInfoOpt, TypeOrNamespaceUsageInfo? typeOrNamespaceUsageInfoOpt) 37public static SymbolUsageInfo Create(ValueUsageInfo valueUsageInfo)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ValueUsageInfo.cs (8)
69public static bool IsReadFrom(this ValueUsageInfo valueUsageInfo) 70=> (valueUsageInfo & ValueUsageInfo.Read) != 0; 72public static bool IsWrittenTo(this ValueUsageInfo valueUsageInfo) 73=> (valueUsageInfo & ValueUsageInfo.Write) != 0; 75public static bool IsNameOnly(this ValueUsageInfo valueUsageInfo) 76=> (valueUsageInfo & ValueUsageInfo.Name) != 0; 78public static bool IsReference(this ValueUsageInfo valueUsageInfo) 79=> (valueUsageInfo & ValueUsageInfo.Reference) != 0;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (5)
94private void OnWriteReferenceFound(ISymbol symbol, IOperation operation, ValueUsageInfo valueUsageInfo) 97var isRef = valueUsageInfo == ValueUsageInfo.ReadableWritableReference; 112var valueUsageInfo = operation.GetValueUsageInfo(_currentContainingSymbol); 199OnWriteReferenceFound(symbolOpt, write, ValueUsageInfo.Write); 275OnWriteReferenceFound(operation.Symbol, operation, ValueUsageInfo.Write);