src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.CorePointsToAnalysisDataDomain.cs (11)
13using CorePointsToAnalysisData = DictionaryAnalysisData<AnalysisEntity, PointsToAbstractValue>;
15public partial class PointsToAnalysis : ForwardDataFlowAnalysis<PointsToAnalysisData, PointsToAnalysisContext, PointsToAnalysisResult, PointsToBlockAnalysisResult, PointsToAbstractValue>
20private sealed class CorePointsToAnalysisDataDomain : AnalysisEntityMapAbstractDomain<PointsToAbstractValue>
26AbstractValueDomain<PointsToAbstractValue> valueDomain,
36protected override PointsToAbstractValue GetDefaultValue(AnalysisEntity analysisEntity) => DefaultPointsToValueGenerator.GetOrCreateDefaultValue(analysisEntity);
38protected override bool CanSkipNewEntry(AnalysisEntity analysisEntity, PointsToAbstractValue value)
42protected override void OnNewMergedValue(PointsToAbstractValue value)
45protected override void AssertValidEntryForMergedMap(AnalysisEntity analysisEntity, PointsToAbstractValue value)
58Func<PointsToAbstractValue, ImmutableHashSet<AnalysisEntity>> getChildAnalysisEntities,
67var forwardEdgeValue = forwardEdgeAnalysisData[key];
68if (backEdgeAnalysisData.TryGetValue(key, out var backEdgeValue) &&
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (146)
20public partial class PointsToAnalysis : ForwardDataFlowAnalysis<PointsToAnalysisData, PointsToAnalysisContext, PointsToAnalysisResult, PointsToBlockAnalysisResult, PointsToAbstractValue>
26PredicateAnalysisEntityDataFlowOperationVisitor<PointsToAnalysisData, PointsToAnalysisContext, PointsToAnalysisResult, PointsToAbstractValue>
89private PointsToAbstractValue GetValueForEntityThatShouldNotBeTracked(AnalysisEntity analysisEntity)
92Debug.Assert(!CurrentAnalysisData.TryGetValue(analysisEntity, out var existingValue) || existingValue == PointsToAbstractValue.NoLocation);
95PointsToAbstractValue.NoLocation :
154protected override PointsToAbstractValue GetAbstractValue(AnalysisEntity analysisEntity)
161if (!CurrentAnalysisData.TryGetValue(analysisEntity, out var value))
169protected override PointsToAbstractValue GetPointsToAbstractValue(IOperation operation) => base.GetCachedAbstractValue(operation);
171protected override PointsToAbstractValue GetAbstractDefaultValue(ITypeSymbol? type) => !PointsToAnalysis.ShouldBeTracked(type, IsDisposable) ? PointsToAbstractValue.NoLocation : PointsToAbstractValue.NullLocation;
175protected override void SetAbstractValue(AnalysisEntity analysisEntity, PointsToAbstractValue value)
184Debug.Assert(!CurrentAnalysisData.TryGetValue(analysisEntity, out var currentValue) ||
209private static void SetAbstractValueCore(PointsToAnalysisData pointsToAnalysisData, AnalysisEntity analysisEntity, PointsToAbstractValue value)
212protected override void SetAbstractValueForTupleElementAssignment(AnalysisEntity tupleElementEntity, IOperation assignedValueOperation, PointsToAbstractValue assignedValue)
214if (assignedValue == PointsToAbstractValue.Undefined)
230SetAbstractValue(analysisEntity, PointsToAbstractValue.Unknown);
235if (pointsToAnalysisData.TryGetValue(analysisEntity, out var currentValue))
242protected override PointsToAbstractValue GetDefaultValueForParameterOnEntry(IParameterSymbol parameter, AnalysisEntity analysisEntity)
244PointsToAbstractValue.Create(
247PointsToAbstractValue.NoLocation;
255var pointsToValue = GetAbstractValue(analysisEntity);
260private static PointsToAbstractValue GetResetValue(AnalysisEntity analysisEntity, PointsToAbstractValue currentValue)
268return PointsToAbstractValue.Unknown;
273protected override PointsToAbstractValue ComputeAnalysisValueForReferenceOperation(IOperation operation, PointsToAbstractValue defaultValue)
282Debug.Assert(operation.Type == null || !operation.Type.IsNonNullableValueType() || defaultValue == PointsToAbstractValue.NoLocation);
287protected override PointsToAbstractValue ComputeAnalysisValueForEscapedRefOrOutArgument(AnalysisEntity analysisEntity, IArgumentOperation operation, PointsToAbstractValue defaultValue)
297return PointsToAbstractValue.Create(location, mayBeNull: true);
344private protected override PointsToAbstractValue GetAbstractValueForImplicitWrappingTaskCreation(IOperation returnValueOperation, PointsToAbstractValue returnValue, PointsToAbstractValue implicitTaskPointsToValue)
462if (sourceAnalysisData.TryGetValue(key, out var existingPointsToValue))
540if (!sourceAnalysisData.TryGetValue(analysisEntity, out var existingValue))
545var newPointsToValue = nullState switch
551NullAbstractValue.Invalid => PointsToAbstractValue.Invalid,
610(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? invocationInstance,
611(AnalysisEntity Instance, PointsToAbstractValue PointsToValue)? thisOrMeInstanceForCaller,
612ImmutableDictionary<IParameterSymbol, ArgumentInfo<PointsToAbstractValue>> argumentValuesMap,
613IDictionary<AnalysisEntity, PointsToAbstractValue>? pointsToValues,
634PointsToAbstractValue escapedInstancePointsToValue = GetPointsToAbstractValue(escapedInstance);
653PointsToAbstractValue escapedInstancePointsToValue)
674PointsToAbstractValue pointsToValueOfEscapedInstance)
678pointsToValueOfEscapedInstance == PointsToAbstractValue.NoLocation ||
679pointsToValueOfEscapedInstance == PointsToAbstractValue.NullLocation)
693var pointsToValueOfEscapedChild = GetAbstractValue(childEntity);
697if (TryGetTaskWrappedValue(pointsToValueOfEscapedInstance, out var wrappedValue))
703private void HandleEscapingLocations(PointsToAbstractValue pointsToValueOfEscapedInstance, ImmutableHashSet<AbstractLocation>.Builder builder)
730protected override void SetAbstractValueForAssignment(IOperation target, IOperation? assignedValueOperation, PointsToAbstractValue assignedValue, bool mayBeAssignment = false)
740protected override void SetAbstractValueForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, IOperation initializer, PointsToAbstractValue value)
751public override PointsToAbstractValue DefaultVisit(IOperation operation, object? argument)
763return PointsToAbstractValue.NullLocation;
767return PointsToAbstractValue.NoLocation;
772return PointsToAbstractValue.NoLocation;
778public override PointsToAbstractValue VisitIsType(IIsTypeOperation operation, object? argument)
781return PointsToAbstractValue.NoLocation;
784public override PointsToAbstractValue VisitInstanceReference(IInstanceReferenceOperation operation, object? argument)
788var value = currentInstanceOperation != null ?
795private PointsToAbstractValue VisitTypeCreationWithArgumentsAndInitializer<TOperation>(
798Func<TOperation, object?, PointsToAbstractValue?> baseVisit)
802var pointsToAbstractValue = PointsToAbstractValue.Create(location, mayBeNull: false);
810public override PointsToAbstractValue VisitObjectCreation(IObjectCreationOperation operation, object? argument)
815public override PointsToAbstractValue VisitDynamicObjectCreation(IDynamicObjectCreationOperation operation, object? argument)
820public override PointsToAbstractValue VisitAnonymousObjectCreation(IAnonymousObjectCreationOperation operation, object? argument)
825public override PointsToAbstractValue VisitReDimClause(IReDimClauseOperation operation, object? argument)
833var pointsToAbstractValue = PointsToAbstractValue.Create(location, mayBeNull: false);
841public override PointsToAbstractValue VisitTuple(ITupleOperation operation, object? argument)
843PointsToAbstractValue pointsToAbstractValue;
847pointsToAbstractValue = PointsToAbstractValue.Create(location, mayBeNull: false);
851pointsToAbstractValue = PointsToAbstractValue.Unknown;
859public override PointsToAbstractValue VisitDelegateCreation(IDelegateCreationOperation operation, object? argument)
863return PointsToAbstractValue.Unknown;
866return PointsToAbstractValue.Create(location, mayBeNull: false);
869public override PointsToAbstractValue VisitTypeParameterObjectCreation(ITypeParameterObjectCreationOperation operation, object? argument)
874public override PointsToAbstractValue VisitArrayInitializer(IArrayInitializerOperation operation, object? argument)
884public override PointsToAbstractValue VisitArrayCreation(IArrayCreationOperation operation, object? argument)
886var pointsToAbstractValue = operation.Type != null
887? PointsToAbstractValue.Create(AbstractLocation.CreateAllocationLocation(operation, operation.Type, DataFlowAnalysisContext), mayBeNull: false)
888: PointsToAbstractValue.Unknown;
892var initializerValue = Visit(operation.Initializer, argument);
897public override PointsToAbstractValue VisitInterpolatedString(IInterpolatedStringOperation operation, object? argument)
900return PointsToAbstractValue.NoLocation;
903public override PointsToAbstractValue VisitBinaryOperatorCore(IBinaryOperation operation, object? argument)
906return PointsToAbstractValue.Unknown;
909public override PointsToAbstractValue VisitSizeOf(ISizeOfOperation operation, object? argument)
912return PointsToAbstractValue.NoLocation;
915public override PointsToAbstractValue VisitTypeOf(ITypeOfOperation operation, object? argument)
918return PointsToAbstractValue.NoLocation;
921private PointsToAbstractValue VisitInvocationCommon(IOperation operation, IOperation? instance)
931var pointsToAbstractValue = PointsToAbstractValue.Create(location, mayBeNull: true);
936return PointsToAbstractValue.NoLocation;
940public override PointsToAbstractValue VisitInvocation_NonLambdaOrDelegateOrLocalFunction(
946PointsToAbstractValue defaultValue)
960var value = VisitInvocationCommon(originalOperation, visitedInstance);
1026public override PointsToAbstractValue VisitInvocation_LocalFunction(
1030PointsToAbstractValue defaultValue)
1036public override PointsToAbstractValue VisitInvocation_Lambda(
1040PointsToAbstractValue defaultValue)
1046public override PointsToAbstractValue VisitDynamicInvocation(IDynamicInvocationOperation operation, object? argument)
1068private PointsToAbstractValue GetValueBasedOnInstanceOrReferenceValue(IOperation? referenceOrInstance, IOperation operation, PointsToAbstractValue defaultValue)
1077NullAbstractValue.Invalid => PointsToAbstractValue.Invalid,
1083public override PointsToAbstractValue VisitFieldReference(IFieldReferenceOperation operation, object? argument)
1085var value = base.VisitFieldReference(operation, argument);
1097public override PointsToAbstractValue VisitPropertyReference(IPropertyReferenceOperation operation, object? argument)
1099var value = base.VisitPropertyReference(operation, argument);
1111public override PointsToAbstractValue VisitDynamicMemberReference(IDynamicMemberReferenceOperation operation, object? argument)
1113var value = base.VisitDynamicMemberReference(operation, argument);
1117public override PointsToAbstractValue VisitMethodReference(IMethodReferenceOperation operation, object? argument)
1119var value = base.VisitMethodReference(operation, argument);
1123public override PointsToAbstractValue VisitEventReference(IEventReferenceOperation operation, object? argument)
1125var value = base.VisitEventReference(operation, argument);
1129public override PointsToAbstractValue VisitArrayElementReference(IArrayElementReferenceOperation operation, object? argument)
1131var value = base.VisitArrayElementReference(operation, argument);
1135public override PointsToAbstractValue VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation, object? argument)
1137var value = base.VisitDynamicIndexerAccess(operation, argument)!;
1141public override PointsToAbstractValue VisitConversion(IConversionOperation operation, object? argument)
1143var value = base.VisitConversion(operation, argument);
1169public override PointsToAbstractValue GetAssignedValueForPattern(IIsPatternOperation operation, PointsToAbstractValue operandValue)
1171var value = base.GetAssignedValueForPattern(operation, operandValue);
1191private static PointsToAbstractValue InferConversionCommon(ConversionInference inference, PointsToAbstractValue operandValue)
1207private PointsToAbstractValue HandleBoxingUnboxing(
1208PointsToAbstractValue value,
1216return PointsToAbstractValue.Create(location, mayBeNull: false);
1220return PointsToAbstractValue.NoLocation;
1228public override PointsToAbstractValue VisitFlowCapture(IFlowCaptureOperation operation, object? argument)
1230var value = base.VisitFlowCapture(operation, argument);
1234value = PointsToAbstractValue.Create(operation.Value);
1241public override PointsToAbstractValue VisitFlowCaptureReference(IFlowCaptureReferenceOperation operation, object? argument)
1243var value = base.VisitFlowCaptureReference(operation, argument);
1253public override PointsToAbstractValue ComputeValueForCompoundAssignment(ICompoundAssignmentOperation operation, PointsToAbstractValue targetValue, PointsToAbstractValue assignedValue, ITypeSymbol? targetType, ITypeSymbol? assignedValueType)
1264protected override PointsToAbstractValue VisitAssignmentOperation(IAssignmentOperation operation, object? argument)
1266var value = base.VisitAssignmentOperation(operation, argument);
1271public override PointsToAbstractValue VisitDeclarationExpression(IDeclarationExpressionOperation operation, object? argument)
1276public override PointsToAbstractValue VisitCaughtException(ICaughtExceptionOperation operation, object? argument)
1279return PointsToAbstractValue.UnknownNotNull;
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysisContext.cs (5)
15using InterproceduralPointsToAnalysisData = InterproceduralAnalysisData<PointsToAnalysisData, PointsToAnalysisContext, PointsToAbstractValue>;
21public sealed class PointsToAnalysisContext : AbstractDataFlowAnalysisContext<PointsToAnalysisData, PointsToAnalysisContext, PointsToAnalysisResult, PointsToAbstractValue>
24AbstractValueDomain<PointsToAbstractValue> valueDomain,
50AbstractValueDomain<PointsToAbstractValue> valueDomain,
89protected override bool ComputeEqualsByHashCodeParts(AbstractDataFlowAnalysisContext<PointsToAnalysisData, PointsToAnalysisContext, PointsToAnalysisResult, PointsToAbstractValue> obj)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysisData.cs (19)
11using CorePointsToAnalysisData = DictionaryAnalysisData<AnalysisEntity, PointsToAbstractValue>;
18public sealed class PointsToAnalysisData : AnalysisEntityBasedPredicateAnalysisData<PointsToAbstractValue>
27internal PointsToAnalysisData(IDictionary<AnalysisEntity, PointsToAbstractValue> fromData, Func<ITypeSymbol?, bool> isDisposable)
37PredicatedAnalysisData<AnalysisEntity, PointsToAbstractValue> predicatedData1,
38PredicatedAnalysisData<AnalysisEntity, PointsToAbstractValue> predicatedData2,
40MapAbstractDomain<AnalysisEntity, PointsToAbstractValue> coreDataAnalysisDomain,
58private PointsToAnalysisData(PointsToAnalysisData data1, PointsToAnalysisData data2, MapAbstractDomain<AnalysisEntity, PointsToAbstractValue> coreDataAnalysisDomain)
68protected override AbstractValueDomain<PointsToAbstractValue> ValueDomain => PointsToAnalysis.ValueDomainInstance;
69public override AnalysisEntityBasedPredicateAnalysisData<PointsToAbstractValue> Clone() => new PointsToAnalysisData(this);
71public override int Compare(AnalysisEntityBasedPredicateAnalysisData<PointsToAbstractValue> other, MapAbstractDomain<AnalysisEntity, PointsToAbstractValue> coreDataAnalysisDomain)
74public override AnalysisEntityBasedPredicateAnalysisData<PointsToAbstractValue> WithMergedData(AnalysisEntityBasedPredicateAnalysisData<PointsToAbstractValue> data, MapAbstractDomain<AnalysisEntity, PointsToAbstractValue> coreDataAnalysisDomain)
82public override void SetAbstractValue(AnalysisEntity key, PointsToAbstractValue value)
88public override void Reset(Func<AnalysisEntity, PointsToAbstractValue, PointsToAbstractValue> getResetValue)
122internal static void AssertValidPointsToAnalysisData(IDictionary<AnalysisEntity, PointsToAbstractValue> map, Func<ITypeSymbol?, bool> isDisposable)
138PointsToAbstractValue value,
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntity.cs (11)
43PointsToAbstractValue location,
69private AnalysisEntity(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, PointsToAbstractValue location, ITypeSymbol type, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
75private AnalysisEntity(IInstanceReferenceOperation instanceReferenceOperation, PointsToAbstractValue location)
82private AnalysisEntity(InterproceduralCaptureId captureId, ITypeSymbol capturedType, PointsToAbstractValue location)
88private AnalysisEntity(INamedTypeSymbol namedType, PointsToAbstractValue location, bool isThisOrMeInstance)
95ITypeSymbol type, PointsToAbstractValue instanceLocation, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
104public static AnalysisEntity Create(IInstanceReferenceOperation instanceReferenceOperation, PointsToAbstractValue instanceLocation)
112PointsToAbstractValue instanceLocation)
117public static AnalysisEntity CreateThisOrMeInstance(INamedTypeSymbol typeSymbol, PointsToAbstractValue instanceLocation)
131var mergedInstanceLocation = PointsToAnalysis.PointsToAnalysis.ValueDomainInstance.Merge(InstanceLocation, analysisEntityToMerge.InstanceLocation);
200public PointsToAbstractValue InstanceLocation { get; }
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityDataFlowOperationVisitor.cs (17)
335protected override void ResetReferenceTypeInstanceAnalysisData(PointsToAbstractValue pointsToAbstractValue)
380PointsToAbstractValue newValueLocation = GetPointsToAbstractValue(assignedValueOperation);
428protected ImmutableHashSet<AnalysisEntity> GetChildAnalysisEntities(PointsToAbstractValue? instanceLocation)
433private ImmutableHashSet<AnalysisEntity> GetChildAnalysisEntities(PointsToAbstractValue? instanceLocation, Func<AnalysisEntity, bool>? predicate)
446protected static bool IsChildAnalysisEntity(AnalysisEntity entity, PointsToAbstractValue instanceLocation)
448return instanceLocation != PointsToAbstractValue.NoLocation &&
466(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? invocationInstance,
467(AnalysisEntity Instance, PointsToAbstractValue PointsToValue)? thisOrMeInstanceForCaller,
469IDictionary<AnalysisEntity, PointsToAbstractValue>? pointsToValues,
493using var _4 = PooledHashSet<PointsToAbstractValue>.GetInstance(out var worklistPointsToValues);
494using var _5 = PooledHashSet<PointsToAbstractValue>.GetInstance(out var processedPointsToValues);
569foreach (var pointsToValue in worklistPointsToValues)
611if (pointsToValues.TryGetValue(analysisEntity, out var pointsToValue))
622void AddWorklistPointsToValue(PointsToAbstractValue pointsToValue)
631static bool ShouldProcessPointsToValue(PointsToAbstractValue pointsToValue)
633pointsToValue != PointsToAbstractValue.NoLocation;
754var assignedInstance = GetPointsToAbstractValue(operation.Value);
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (20)
34private readonly Dictionary<ISymbol, PointsToAbstractValue> _instanceLocationsForSymbols;
35private readonly Func<IOperation, PointsToAbstractValue>? _getPointsToAbstractValue;
46Func<IOperation, PointsToAbstractValue>? getPointsToAbstractValue,
53ImmutableDictionary<ISymbol, PointsToAbstractValue>? interproceduralCapturedVariablesMap,
85var instanceLocation = PointsToAbstractValue.Create(thisOrMeInstanceLocation, mayBeNull: false);
185var instanceLocation = _getPointsToAbstractValue(instanceReference);
345PointsToAbstractValue instanceLocation = _getPointsToAbstractValue(tupleOperation);
429var instanceLocation = PointsToAbstractValue.Create(
454PointsToAbstractValue? instanceLocation = null;
470var instancePointsToValue = _getPointsToAbstractValue!(instance);
471if (!ReferenceEquals(instancePointsToValue, PointsToAbstractValue.NoLocation))
502NullAbstractValue.Null => PointsToAbstractValue.UnknownNull,
503NullAbstractValue.NotNull => PointsToAbstractValue.UnknownNotNull,
504_ => PointsToAbstractValue.Unknown,
515private PointsToAbstractValue? EnsureLocation(PointsToAbstractValue? instanceLocation, ISymbol? symbol, AnalysisEntity? parent)
544instanceLocation = PointsToAbstractValue.Create(location, mayBeNull: false);
554private AnalysisEntity Create(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, ITypeSymbol type, PointsToAbstractValue? instanceLocation, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (42)
161internal Dictionary<PointsToAbstractValue, TAbstractAnalysisValue>? TaskWrappedValuesMap { get; private set; }
197protected PointsToAbstractValue ThisOrMePointsToAbstractValue { get; }
401private static PointsToAbstractValue GetThisOrMeInstancePointsToValue(TAnalysisContext analysisContext)
408return PointsToAbstractValue.Create(thisOrMeLocation, mayBeNull: false);
412return PointsToAbstractValue.NoLocation;
808PointsToAbstractValue implicitTaskPointsToValue)
820_ = GetAbstractValueForReturnOperation(returnValue, out var implicitTaskPointsToValueOpt);
829private TAbstractAnalysisValue GetAbstractValueForReturnOperation(IOperation returnValueOperation, out PointsToAbstractValue? implicitTaskPointsToValue)
843implicitTaskPointsToValue = PointsToAbstractValue.Create(location, mayBeNull: false);
1103protected virtual PointsToAbstractValue GetPointsToAbstractValue(IOperation operation)
1107return PointsToAbstractValue.Unknown;
1152protected bool TryGetPointsToAbstractValueAtEntryBlockEnd(AnalysisEntity analysisEntity, [NotNullWhen(true)] out PointsToAbstractValue? pointsToAbstractValue)
1165if (inputData.TryGetValue(analysisEntity, out PointsToAbstractValue? pointsToAbstractValue))
1179if (inputData == null || !inputData.TryGetValue(analysisEntity, out PointsToAbstractValue? pointsToAbstractValue))
1189private protected void SetTaskWrappedValue(PointsToAbstractValue pointsToValueForTask, TAbstractAnalysisValue wrappedValue)
1200private protected bool TryGetTaskWrappedValue(PointsToAbstractValue pointsToAbstractValue, out TAbstractAnalysisValue wrappedValue)
1262var pointsToValue = GetPointsToAbstractValue(sourceOperand);
1953var pointsToValue = GetPointsToAbstractValue(flowCaptureReference);
2022protected abstract void ResetReferenceTypeInstanceAnalysisData(PointsToAbstractValue pointsToAbstractValue);
2048var pointsToValue = GetPointsToAbstractValue(operation);
2128(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? invocationInstance,
2129(AnalysisEntity Instance, PointsToAbstractValue PointsToValue)? thisOrMeInstanceForCaller,
2131IDictionary<AnalysisEntity, PointsToAbstractValue>? pointsToValues,
2321if (analysisResult.TaskWrappedValuesMap is Dictionary<PointsToAbstractValue, TAbstractAnalysisValue> taskWrappedValuesMap)
2421var pointsToValue = GetPointsToAbstractValue(argument);
2459(AnalysisEntity?, PointsToAbstractValue)? GetInvocationInstance()
2472var instancePointsToValue = GetPointsToAbstractValue(instanceReceiver);
2477instancePointsToValue = PointsToAbstractValue.Unknown;
2489var instancePointsToValue = GetPointsToAbstractValue(originalOperation);
2496(AnalysisEntity, PointsToAbstractValue)? GetThisOrMeInstance()
2499ImmutableDictionary<IParameterSymbol, ArgumentInfo<TAbstractAnalysisValue>> GetArgumentValues(ref (AnalysisEntity? entity, PointsToAbstractValue pointsToValue)? invocationInstance)
2509instanceLocation: invocationInstance?.pointsToValue ?? PointsToAbstractValue.Unknown,
2521PointsToAbstractValue instanceLocation;
2594private ImmutableDictionary<ISymbol, PointsToAbstractValue> GetCapturedVariablesMap(
2603return ImmutableDictionary<ISymbol, PointsToAbstractValue>.Empty;
2609return ImmutableDictionary<ISymbol, PointsToAbstractValue>.Empty;
2613var builder = ImmutableDictionary.CreateBuilder<ISymbol, PointsToAbstractValue>();
3204var pointsToValueOfTask = GetPointsToAbstractValue(operation);
3282private protected bool MarkEscapedLambdasAndLocalFunctions(PointsToAbstractValue pointsToAbstractValue)
3311PointsToAbstractValue invocationTarget,
3324PointsToAbstractValue? invocationTarget,
3868var pointsToValue = GetPointsToAbstractValue(operation.Operation);
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\InterproceduralAnalysisData.cs (9)
31(AnalysisEntity?, PointsToAbstractValue)? invocationInstance,
32(AnalysisEntity, PointsToAbstractValue)? thisOrMeInstanceForCaller,
34ImmutableDictionary<ISymbol, PointsToAbstractValue> capturedVariablesMap,
58public (AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? InvocationInstance { get; }
59public (AnalysisEntity Instance, PointsToAbstractValue PointsToValue)? ThisOrMeInstanceForCaller { get; }
61public ImmutableDictionary<ISymbol, PointsToAbstractValue> CapturedVariablesMap { get; }
96(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? instanceAndPointsToValue,
111(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? left,
112(AnalysisEntity? Instance, PointsToAbstractValue PointsToValue)? right)