11 instantiations of ValueSet
ILLink.RoslynAnalyzer (11)
DataFlow\FeatureChecksValue.cs (1)
27
EnabledFeatures = new
ValueSet
<string> (enabledFeature);
DataFlow\InterproceduralState.cs (1)
57
Methods = new
ValueSet
<MethodBodyValue> (methodsList);
ISymbolExtensions.cs (1)
87
return featureSet.Count == 0 ? ValueSet<string>.Empty : new
ValueSet
<string> (featureSet);
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSet.cs (6)
29
public static readonly ValueSet<TValue> Unknown =
new
(UnknownSentinel);
160
public static implicit operator ValueSet<TValue> (TValue value) =>
new
(value);
249
return new
ValueSet
<TValue> (values);
271
return new
ValueSet
<TValue> (values);
302
return new
ValueSet
<TValue> (copyValue.DeepCopy ());
307
return new
ValueSet
<TValue> (GetKnownValues ().Select (value => value is IDeepCopyValue<TValue> copyValue ? copyValue.DeepCopy () : value));
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ArrayValue.cs (1)
45
return
new
(input.AsEnumerable ().Select (v => v is ArrayValue ? UnknownValue.Instance : v));
TrimAnalysis\ArrayValue.cs (1)
18
result = MultiValueLattice.Meet (result, new
MultiValue
(new ArrayValue (sizeValue)));
191 references to ValueSet
ILLink.RoslynAnalyzer (191)
DataFlow\FeatureChecksValue.cs (13)
18
public
ValueSet
<string> EnabledFeatures;
19
public
ValueSet
<string> DisabledFeatures;
21
public static readonly FeatureChecksValue All = new FeatureChecksValue (
ValueSet
<string>.Unknown,
ValueSet
<string>.Empty);
23
public static readonly FeatureChecksValue None = new FeatureChecksValue (
ValueSet
<string>.Empty,
ValueSet
<string>.Empty);
28
DisabledFeatures =
ValueSet
<string>.Empty;
31
private FeatureChecksValue (
ValueSet
<string> enabled,
ValueSet
<string> disabled)
40
ValueSet
<string>.Union (EnabledFeatures.DeepCopy (), other.EnabledFeatures.DeepCopy ()),
41
ValueSet
<string>.Union (DisabledFeatures.DeepCopy (), other.DisabledFeatures.DeepCopy ()));
47
ValueSet
<string>.Intersection (EnabledFeatures.DeepCopy (), other.EnabledFeatures.DeepCopy ()),
48
ValueSet
<string>.Intersection (DisabledFeatures.DeepCopy (), other.DisabledFeatures.DeepCopy ()));
DataFlow\FeatureChecksVisitor.cs (1)
15
ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>,
DataFlow\FeatureContextLattice.cs (6)
18
public
ValueSet
<string> EnabledFeatures;
20
public static readonly FeatureContext All = new FeatureContext (
ValueSet
<string>.Unknown);
22
public static readonly FeatureContext None = new FeatureContext (
ValueSet
<string>.Empty);
24
public FeatureContext (
ValueSet
<string> enabled)
48
return new FeatureContext (
ValueSet
<string>.Intersection (EnabledFeatures, other.EnabledFeatures));
53
return new FeatureContext (
ValueSet
<string>.Union (EnabledFeatures, other.EnabledFeatures));
DataFlow\InterproceduralState.cs (2)
18
public
ValueSet
<MethodBodyValue> Methods;
30
ValueSet
<MethodBodyValue> methods,
DataFlow\LocalDataFlowVisitor.cs (2)
399
var
capturedReferences = state.Current.LocalState.CapturedReferences.Get (flowCaptureReference.Id);
528
var
capturedReferences = state.Current.LocalState.CapturedReferences.Get (captureRef.Id);
DataFlow\LocalStateLattice.cs (8)
46
public DefaultValueDictionary<CaptureId,
ValueSet
<CapturedReferenceValue>> CapturedReferences;
50
new DefaultValueDictionary<CaptureId,
ValueSet
<CapturedReferenceValue>> (default (
ValueSet
<CapturedReferenceValue>)))
54
public LocalState (DefaultValueDictionary<LocalKey, TValue> dictionary, DefaultValueDictionary<CaptureId,
ValueSet
<CapturedReferenceValue>> capturedReferences)
61
: this (dictionary, new DefaultValueDictionary<CaptureId,
ValueSet
<CapturedReferenceValue>> (default (
ValueSet
<CapturedReferenceValue>)))
86
public readonly DictionaryLattice<CaptureId,
ValueSet
<CapturedReferenceValue>, ValueSetLattice<CapturedReferenceValue>> CapturedReferenceLattice;
91
CapturedReferenceLattice = new DictionaryLattice<CaptureId,
ValueSet
<CapturedReferenceValue>, ValueSetLattice<CapturedReferenceValue>> (default (ValueSetLattice<CapturedReferenceValue>));
ISymbolExtensions.cs (2)
80
internal static
ValueSet
<string> GetFeatureGuardAnnotations (this IPropertySymbol propertySymbol)
87
return featureSet.Count == 0 ?
ValueSet
<string>.Empty : new ValueSet<string> (featureSet);
RequiresAnalyzerBase.cs (4)
17
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
335
ValueSet
<string> featureCheckAnnotations = propertySymbol.GetFeatureGuardAnnotations ();
369
MultiValue
instance,
370
ImmutableArray<
MultiValue
> arguments
RequiresDynamicCodeAnalyzer.cs (5)
12
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
49
internal override bool IsIntrinsicallyHandled (IMethodSymbol calledMethod,
MultiValue
instance, ImmutableArray<
MultiValue
> arguments) {
88
static bool IsKnownInstantiation(
MultiValue
genericParametersArray) {
107
if (!array.TryGetValueByIndex (i, out
MultiValue
value)) {
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSet.cs (19)
16
public readonly struct ValueSet<TValue> : IEquatable<
ValueSet
<TValue>>, IDeepCopyValue<
ValueSet
<TValue>>
21
public static readonly
ValueSet
<TValue> Empty;
29
public static readonly
ValueSet
<TValue> Unknown = new (UnknownSentinel);
160
public static implicit operator
ValueSet
<TValue> (TValue value) => new (value);
165
public override bool Equals (object? obj) => obj is
ValueSet
<TValue> other && Equals (other);
167
public bool Equals (
ValueSet
<TValue> other)
198
public static bool operator == (
ValueSet
<TValue> left,
ValueSet
<TValue> right) => left.Equals (right);
199
public static bool operator != (
ValueSet
<TValue> left,
ValueSet
<TValue> right) => !(left == right);
204
return typeof (
ValueSet
<TValue>).GetHashCode ();
227
internal static
ValueSet
<TValue> Union (
ValueSet
<TValue> left,
ValueSet
<TValue> right)
252
internal static
ValueSet
<TValue> Intersection (
ValueSet
<TValue> left,
ValueSet
<TValue> right)
291
public
ValueSet
<TValue> DeepCopy ()
src\tools\illink\src\ILLink.Shared\DataFlow\ValueSetLattice.cs (6)
12
public readonly struct ValueSetLattice<TValue> : ILattice<
ValueSet
<TValue>>
15
public
ValueSet
<TValue> Top => default;
17
public
ValueSet
<TValue> Meet (
ValueSet
<TValue> left,
ValueSet
<TValue> right) =>
ValueSet
<TValue>.Union (left, right);
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ArrayValue.cs (4)
6
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
19
public partial bool TryGetValueByIndex (int index, out
MultiValue
value);
21
public static
MultiValue
SanitizeArrayElementValue (
MultiValue
input)
src\tools\illink\src\ILLink.Shared\TrimAnalysis\HandleCallAction.cs (23)
14
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
31
public bool Invoke (MethodProxy calledMethod,
MultiValue
instanceValue, IReadOnlyList<
MultiValue
> argumentValues, IntrinsicId intrinsicId, out
MultiValue
methodReturnValue)
33
MultiValue
? maybeMethodReturnValue;
70
MultiValue
instanceValue,
71
IReadOnlyList<
MultiValue
> argumentValues,
73
out
MultiValue
? methodReturnValue);
77
MultiValue
instanceValue,
78
IReadOnlyList<
MultiValue
> argumentValues,
80
out
MultiValue
? methodReturnValue)
82
MultiValue
? returnValue = methodReturnValue = null;
530
foreach (
var
methodValue in ProcessGetMethodByName (systemTypeValue.RepresentedType, stringValue.Contents, bindingFlags))
661
foreach (
var
methodValue in ProcessGetMethodByName (systemTypeValue.RepresentedType, stringValue.Contents, bindingFlags))
918
if ((argumentValue as ArrayValue)?.TryGetValueByIndex (0, out
var
underlyingMultiValue) == true) {
1287
void AddReturnValue (
MultiValue
value)
1293
private IEnumerable<
MultiValue
> ProcessGetMethodByName (TypeProxy type, string methodName, BindingFlags? bindingFlags)
1310
private bool AnalyzeGenericInstantiationTypeArray (in
MultiValue
arrayParam, ImmutableArray<GenericParameterValue> genericParameters)
1336
if (!array.TryGetValueByIndex (i, out
MultiValue
value) || value.AsSingleValue () is UnknownValue) {
1347
if (array.TryGetValueByIndex (i, out
MultiValue
value)) {
1372
in
MultiValue
genericParametersArray,
1397
private void ProcessCreateInstanceByName (MethodProxy calledMethod, IReadOnlyList<
MultiValue
> argumentValues)
1442
internal static BindingFlags? GetBindingFlagsFromValue (in
MultiValue
parameter) => (BindingFlags?) parameter.AsConstInt ();
src\tools\illink\src\ILLink.Shared\TrimAnalysis\RequireDynamicallyAccessedMembersAction.cs (2)
9
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
21
public void Invoke (in
MultiValue
value, ValueWithDynamicallyAccessedMembers targetValue)
src\tools\illink\src\ILLink.Shared\TrimAnalysis\ValueExtensions.cs (7)
7
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
43
internal static int? AsConstInt (this in
MultiValue
value)
51
internal static SingleValue? AsSingleValue (this in
MultiValue
node)
60
private static
ValueSet
<SingleValue>.Enumerable Unknown = new
ValueSet
<SingleValue>.Enumerable (UnknownValue.Instance);
64
internal static
ValueSet
<SingleValue>.Enumerable AsEnumerable (this
MultiValue
multiValue)
TrimAnalysis\ArrayValue.cs (9)
6
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
12
public readonly Dictionary<int,
MultiValue
> IndexValues;
14
public static
MultiValue
Create (
MultiValue
size)
16
MultiValue
result = MultiValueLattice.Top;
24
public static
MultiValue
Create (int size) => Create (new ConstIntValue (size));
29
IndexValues = new Dictionary<int,
MultiValue
> ();
32
public partial bool TryGetValueByIndex (int index, out
MultiValue
value)
61
if (!otherArr.IndexValues.TryGetValue (kvp.Key, out
MultiValue
value) || !kvp.Value.Equals (value))
TrimAnalysis\FeatureCheckReturnValuePattern.cs (3)
17
public
ValueSet
<string> FeatureCheckAnnotations { get; init; }
23
ValueSet
<string> featureCheckAnnotations,
50
ValueSet
<string> returnValueFeatures = ReturnValue.EnabledFeatures;
TrimAnalysis\HandleCallAction.cs (7)
16
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
49
MultiValue
instanceValue,
50
IReadOnlyList<
MultiValue
> argumentValues,
52
out
MultiValue
? methodReturnValue)
54
MultiValue
? maybeMethodReturnValue = methodReturnValue = null;
158
void AddReturnValue (
MultiValue
value)
160
maybeMethodReturnValue = (maybeMethodReturnValue is null) ? value : multiValueLattice.Meet ((
MultiValue
) maybeMethodReturnValue, value);
TrimAnalysis\TrimAnalysisAssignmentPattern.cs (5)
14
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
20
public
MultiValue
Source { get; init; }
21
public
MultiValue
Target { get; init; }
27
MultiValue
source,
28
MultiValue
target,
TrimAnalysis\TrimAnalysisMethodCallPattern.cs (10)
12
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
19
public
MultiValue
Instance { get; init; }
20
public ImmutableArray<
MultiValue
> Arguments { get; init; }
27
MultiValue
instance,
28
ImmutableArray<
MultiValue
> arguments,
36
Arguments = ImmutableArray<
MultiValue
>.Empty;
38
var builder = ImmutableArray.CreateBuilder<
MultiValue
> ();
39
foreach (
var
argument in arguments) {
59
var argumentsBuilder = ImmutableArray.CreateBuilder<
MultiValue
> ();
80
TrimAnalysisVisitor.HandleCall(Operation, OwningSymbol, CalledMethod, Instance, Arguments, location, reportDiagnostic, default, out
var
_);
TrimAnalysis\TrimAnalysisVisitor.cs (49)
18
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
20
ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>,
29
MultiValue
,
48
LocalStateAndContextLattice<
MultiValue
, FeatureContext, ValueSetLattice<SingleValue>, FeatureContextLattice> lattice,
53
InterproceduralState<
MultiValue
, ValueSetLattice<SingleValue>> interproceduralState,
67
public override void ApplyCondition (FeatureChecksValue featureChecksValue, ref LocalStateAndContext<
MultiValue
, FeatureContext> currentState)
78
public override
MultiValue
DefaultVisit (IOperation operation, StateValue argument)
80
var
returnValue = base.DefaultVisit (operation, argument);
88
if (TryGetConstantValue (operation, out
var
constValue))
97
public override
MultiValue
VisitArrayCreation (IArrayCreationOperation operation, StateValue state)
99
var
value = base.VisitArrayCreation (operation, state);
109
var
arrayValue = ArrayValue.Create (Visit (operation.DimensionSizes[0], state));
110
var elements = operation.Initializer?.ElementValues.Select (val => Visit (val, state)).ToArray () ?? System.Array.Empty<
MultiValue
> ();
120
public override
MultiValue
VisitConversion (IConversionOperation operation, StateValue state)
122
var
value = base.VisitConversion (operation, state);
133
public override
MultiValue
VisitParameterReference (IParameterReferenceOperation paramRef, StateValue state)
139
public override
MultiValue
VisitInstanceReference (IInstanceReferenceOperation instanceRef, StateValue state)
155
public override
MultiValue
VisitFieldReference (IFieldReferenceOperation fieldRef, StateValue state)
171
if (TryGetConstantValue (fieldRef, out
var
constValue))
178
public override
MultiValue
VisitTypeOf (ITypeOfOperation typeOfOperation, StateValue state)
183
public override
MultiValue
VisitBinaryOperator (IBinaryOperation operation, StateValue argument)
189
MultiValue
leftValue = Visit (operation.LeftOperand, argument);
190
MultiValue
rightValue = Visit (operation.RightOperand, argument);
192
MultiValue
result = TopValue;
218
public override
MultiValue
GetFieldTargetValue (IFieldSymbol field, IFieldReferenceOperation fieldReferenceOperation, in FeatureContext featureContext)
229
public override
MultiValue
GetParameterTargetValue (IParameterSymbol parameter)
232
public override void HandleAssignment (
MultiValue
source,
MultiValue
target, IOperation operation, in FeatureContext featureContext)
244
public override
MultiValue
HandleArrayElementRead (
MultiValue
arrayValue,
MultiValue
indexValue, IOperation operation)
253
MultiValue
result = TopValue;
255
if (value is ArrayValue arr && arr.TryGetValueByIndex (index, out
var
elementValue))
263
public override void HandleArrayElementWrite (
MultiValue
arrayValue,
MultiValue
indexValue,
MultiValue
valueToWrite, IOperation operation, bool merge)
272
var
sanitizedValue = ArrayValue.SanitizeArrayElementValue(valueToWrite);
283
public override
MultiValue
HandleMethodCall (
285
MultiValue
instance,
286
ImmutableArray<
MultiValue
> arguments,
300
HandleCall (operation, OwningSymbol, calledMethod, instance, arguments, Location.None, null, _multiValueLattice, out
MultiValue
methodReturnValue);
313
foreach (
var
argument in arguments) {
329
MultiValue
instance,
330
ImmutableArray<
MultiValue
> arguments,
334
out
MultiValue
methodReturnValue)
348
public override void HandleReturnValue (
MultiValue
returnValue, IOperation operation, in FeatureContext featureContext)
376
var
featureCheckAnnotations = propertySymbol.GetFeatureGuardAnnotations ();
386
public override
MultiValue
HandleDelegateCreation (IMethodSymbol method, IOperation operation, in FeatureContext featureContext)
433
static bool TryGetConstantValue (IOperation operation, out
MultiValue
constValue)
TrimAnalysis\TrimDataFlowAnalysis.cs (4)
17
ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>,
20
using MultiValue = ILLink.Shared.DataFlow.
ValueSet
<ILLink.Shared.DataFlow.SingleValue>;
25
MultiValue
,
64
InterproceduralState<
MultiValue
, ValueSetLattice<SingleValue>> interproceduralState)