74 references to ValueUsageInfo
Microsoft.CodeAnalysis.CodeStyle (74)
src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (1)
242
var
result = operation.GetValueUsageInfo(owningSymbol);
src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (23)
89
protected virtual void HandleNamedTypeSymbolStart(SymbolStartAnalysisContext context, Action<ISymbol,
ValueUsageInfo
> onSymbolUsageFound)
123
private readonly Dictionary<ISymbol,
ValueUsageInfo
> _symbolValueUsageStateMap_doNotAccessDirectly = new(OriginalDefinitionSymbolEqualityComparer.Instance);
230
Action<ISymbol,
ValueUsageInfo
> onSymbolUsageFound = OnSymbolUsage;
311
AddSymbolUsage(symbol,
ValueUsageInfo
.None);
315
private void AddSymbolUsage(ISymbol? symbol,
ValueUsageInfo
info)
326
private void UpdateSymbolUsage(ISymbol? symbol,
ValueUsageInfo
info)
333
if (_symbolValueUsageStateMap_doNotAccessDirectly.TryGetValue(symbol, out
var
currentUsageInfo))
340
private bool TryGetAndRemoveSymbolUsage(ISymbol memberSymbol, out
ValueUsageInfo
valueUsageInfo)
359
OnSymbolUsage(method,
ValueUsageInfo
.Read);
375
OnSymbolUsage(field,
ValueUsageInfo
.Write);
380
private void OnSymbolUsage(ISymbol? memberSymbol,
ValueUsageInfo
usageInfo)
395
var
valueUsageInfo = memberReference.GetValueUsageInfo(operationContext.ContainingSymbol);
397
if (valueUsageInfo ==
ValueUsageInfo
.ReadWrite)
426
valueUsageInfo =
ValueUsageInfo
.Write;
452
OnSymbolUsage(symbols.CurrentProperty,
ValueUsageInfo
.Read);
453
OnSymbolUsage(symbols.GetEnumeratorMethod,
ValueUsageInfo
.Read);
454
OnSymbolUsage(symbols.MoveNextMethod,
ValueUsageInfo
.Read);
463
OnSymbolUsage(targetMethod,
ValueUsageInfo
.Read);
468
OnSymbolUsage(targetMethod.ReducedFrom,
ValueUsageInfo
.Read);
482
OnSymbolUsage(memberReference.Member,
ValueUsageInfo
.ReadWrite);
491
OnSymbolUsage(symbol,
ValueUsageInfo
.ReadWrite);
500
OnSymbolUsage(constructor,
ValueUsageInfo
.Read);
537
if (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.
34
public static
ValueUsageInfo
GetValueUsageInfo(this IOperation operation, ISymbol containingSymbol)
62
return
ValueUsageInfo
.Write;
79
return
ValueUsageInfo
.Write;
90
return
ValueUsageInfo
.Write;
100
return
ValueUsageInfo
.Write;
108
return
ValueUsageInfo
.Write;
116
return
ValueUsageInfo
.Write;
122
return
ValueUsageInfo
.ReadWrite;
127
return
ValueUsageInfo
.Write;
134
?
ValueUsageInfo
.ReadWrite
135
:
ValueUsageInfo
.Write;
140
return
ValueUsageInfo
.ReadableWritableReference;
144
return
ValueUsageInfo
.ReadWrite;
148
return
ValueUsageInfo
.ReadWrite;
156
~(
ValueUsageInfo
.Write |
ValueUsageInfo
.Reference);
160
return
ValueUsageInfo
.Name;
167
return
ValueUsageInfo
.ReadableReference;
170
return
ValueUsageInfo
.WritableReference;
173
return
ValueUsageInfo
.ReadableWritableReference;
176
return
ValueUsageInfo
.Read;
183
RefKind.RefReadOnly =>
ValueUsageInfo
.ReadableReference,
184
RefKind.Ref =>
ValueUsageInfo
.ReadableWritableReference,
185
_ =>
ValueUsageInfo
.Read,
197
return
ValueUsageInfo
.Read;
204
?
ValueUsageInfo
.ReadWrite
205
:
ValueUsageInfo
.Write;
213
return
ValueUsageInfo
.Write;
222
return
ValueUsageInfo
.ReadableWritableReference;
225
return
ValueUsageInfo
.ReadableReference;
230
return
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
"/>.
20
public static readonly SymbolUsageInfo None = Create(
ValueUsageInfo
.None);
23
public
ValueUsageInfo
? ValueUsageInfoOpt { get; }
29
public SymbolUsageInfo(
ValueUsageInfo
? valueUsageInfoOpt, TypeOrNamespaceUsageInfo? typeOrNamespaceUsageInfoOpt)
37
public static SymbolUsageInfo Create(
ValueUsageInfo
valueUsageInfo)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ValueUsageInfo.cs (8)
69
public static bool IsReadFrom(this
ValueUsageInfo
valueUsageInfo)
70
=> (valueUsageInfo &
ValueUsageInfo
.Read) != 0;
72
public static bool IsWrittenTo(this
ValueUsageInfo
valueUsageInfo)
73
=> (valueUsageInfo &
ValueUsageInfo
.Write) != 0;
75
public static bool IsNameOnly(this
ValueUsageInfo
valueUsageInfo)
76
=> (valueUsageInfo &
ValueUsageInfo
.Name) != 0;
78
public static bool IsReference(this
ValueUsageInfo
valueUsageInfo)
79
=> (valueUsageInfo &
ValueUsageInfo
.Reference) != 0;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (5)
93
private void OnWriteReferenceFound(ISymbol symbol, IOperation operation,
ValueUsageInfo
valueUsageInfo)
96
var isRef = valueUsageInfo ==
ValueUsageInfo
.ReadableWritableReference;
111
var
valueUsageInfo = operation.GetValueUsageInfo(_currentContainingSymbol);
198
OnWriteReferenceFound(symbolOpt, write,
ValueUsageInfo
.Write);
274
OnWriteReferenceFound(operation.Symbol, operation,
ValueUsageInfo
.Write);