131 references to NullAbstractValue
Microsoft.CodeAnalysis.AnalyzerUtilities (131)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (2)
465if (GetNullAbstractValue(operation.RightOperand) == NullAbstractValue.Null) 470else if (GetNullAbstractValue(operation.LeftOperand) == NullAbstractValue.Null)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ParameterValidationAnalysis\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (9)
136if (TryGetNullAbstractValueAtCurrentBlockEntry(analysisEntity, out NullAbstractValue nullAbstractValue) && 137nullAbstractValue == NullAbstractValue.NotNull && 138TryGetMergedNullAbstractValueAtUnhandledThrowOperationsInGraph(analysisEntity, out NullAbstractValue mergedValueAtUnhandledThrowOperations) && 139mergedValueAtUnhandledThrowOperations != NullAbstractValue.NotNull) 178if (GetNullAbstractValue(operation) == NullAbstractValue.NotNull) 408if (GetNullAbstractValue(operation.RightOperand) == NullAbstractValue.Null) 413else if (GetNullAbstractValue(operation.LeftOperand) == NullAbstractValue.Null) 441GetNullAbstractValue(operation.Pattern) == NullAbstractValue.Null) 448GetNullAbstractValue(operation.Pattern) == NullAbstractValue.NotNull)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAbstractValue.cs (26)
23public static PointsToAbstractValue Undefined { get; } = new PointsToAbstractValue(PointsToAbstractValueKind.Undefined, NullAbstractValue.Undefined); 24public static PointsToAbstractValue Invalid { get; } = new PointsToAbstractValue(PointsToAbstractValueKind.Invalid, NullAbstractValue.Invalid); 25public static PointsToAbstractValue Unknown { get; } = new PointsToAbstractValue(PointsToAbstractValueKind.Unknown, NullAbstractValue.MaybeNull); 26public static PointsToAbstractValue UnknownNull { get; } = new PointsToAbstractValue(PointsToAbstractValueKind.UnknownNull, NullAbstractValue.Null); 27public static PointsToAbstractValue UnknownNotNull { get; } = new PointsToAbstractValue(PointsToAbstractValueKind.UnknownNotNull, NullAbstractValue.NotNull); 28public static PointsToAbstractValue NoLocation { get; } = new PointsToAbstractValue(ImmutableHashSet.Create(AbstractLocation.NoLocation), NullAbstractValue.NotNull); 29public static PointsToAbstractValue NullLocation { get; } = new PointsToAbstractValue(ImmutableHashSet.Create(AbstractLocation.Null), NullAbstractValue.Null); 31private PointsToAbstractValue(ImmutableHashSet<AbstractLocation> locations, NullAbstractValue nullState) 34Debug.Assert(locations.All(location => !location.IsNull) || nullState != NullAbstractValue.NotNull); 35Debug.Assert(nullState != NullAbstractValue.Undefined); 36Debug.Assert(nullState != NullAbstractValue.Invalid); 53NullState = NullAbstractValue.NotNull; 56private PointsToAbstractValue(PointsToAbstractValueKind kind, NullAbstractValue nullState) 72return new PointsToAbstractValue(ImmutableHashSet.Create(location), mayBeNull ? NullAbstractValue.MaybeNull : NullAbstractValue.NotNull); 80internal static PointsToAbstractValue Create(ImmutableHashSet<AbstractLocation> locations, NullAbstractValue nullState) 101NullAbstractValue.Null => UnknownNull, 103NullAbstractValue.NotNull => UnknownNotNull, 122if (NullState == NullAbstractValue.NotNull) 142return new PointsToAbstractValue(locations, NullAbstractValue.NotNull); 149if (NullState == NullAbstractValue.Null) 159return new PointsToAbstractValue(Locations, NullAbstractValue.Null); 165Debug.Assert(NullState != NullAbstractValue.Null); 167if (NullState == NullAbstractValue.MaybeNull) 178return new PointsToAbstractValue(Locations, NullAbstractValue.MaybeNull); 184public NullAbstractValue NullState { get; }
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.CorePointsToAnalysisDataDomain.cs (3)
73case NullAbstractValue.MaybeNull: 77case NullAbstractValue.NotNull: 80if (forwardEdgeValue.NullState == NullAbstractValue.NotNull)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.NullAbstractValueDomain.cs (21)
12/// Abstract value domain to merge and compare <see cref="NullAbstractValue"/> values. 14private sealed class NullAbstractValueDomain : AbstractValueDomain<NullAbstractValue> 20public override NullAbstractValue Bottom => NullAbstractValue.Undefined; 22public override NullAbstractValue UnknownOrMayBeValue => NullAbstractValue.MaybeNull; 24public override int Compare(NullAbstractValue oldValue, NullAbstractValue newValue, bool assertMonotonicity) 26return Comparer<NullAbstractValue>.Default.Compare(oldValue, newValue); 29public override NullAbstractValue Merge(NullAbstractValue value1, NullAbstractValue value2) 31NullAbstractValue result; 33if (value1 == NullAbstractValue.MaybeNull || 34value2 == NullAbstractValue.MaybeNull) 36result = NullAbstractValue.MaybeNull; 38else if (value1 is NullAbstractValue.Invalid or NullAbstractValue.Undefined) 42else if (value2 is NullAbstractValue.Invalid or NullAbstractValue.Undefined) 49result = NullAbstractValue.MaybeNull;
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToAbstractValueDomain.cs (5)
103return value2.NullState == NullAbstractValue.Null ? 109return value1.NullState == NullAbstractValue.Null ? 115return value2.NullState == NullAbstractValue.NotNull ? 121return value1.NullState == NullAbstractValue.NotNull ? 137var mergedNullState = NullAbstractValueDomain.Default.Merge(value1.NullState, value2.NullState);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (45)
350private static bool IsValidValueForPredicateAnalysis(NullAbstractValue value) 354NullAbstractValue.Null 355or NullAbstractValue.NotNull => true, 383SetValueForNullCompare(leftOperand, value: NullAbstractValue.Null, equals: equals, predicateValueKind: ref predicateValueKind, targetAnalysisData: targetAnalysisData); 394NullAbstractValue value = GetNullAbstractValue(assignedValueOperation); 400NullAbstractValue value, 411bool inferInTargetAnalysisData = !(value == NullAbstractValue.NotNull && !equals); 438NullAbstractValue value, 457NullAbstractValue negatedValue = NegatePredicateValue(value); 464NullAbstractValue existingNullValue = existingPointsToValue.NullState; 466(existingNullValue == NullAbstractValue.Null || value == NullAbstractValue.Null)) 472negatedValue = NullAbstractValue.Invalid; 480value = NullAbstractValue.Invalid; 488if (value != NullAbstractValue.Invalid && negatedValue != NullAbstractValue.Invalid) 504NullAbstractValue nullState, 514Debug.Assert(IsValidValueForPredicateAnalysis(nullState) || nullState == NullAbstractValue.Invalid); 532if (nullState == NullAbstractValue.Null && conversion.IsImplicit || 533nullState == NullAbstractValue.NotNull && !conversion.IsImplicit) 547NullAbstractValue.Null => existingValue.MakeNull(), 549NullAbstractValue.NotNull => existingValue.MakeNonNull(), 551NullAbstractValue.Invalid => PointsToAbstractValue.Invalid, 561private static NullAbstractValue NegatePredicateValue(NullAbstractValue value) 567NullAbstractValue.Null => NullAbstractValue.NotNull, 569NullAbstractValue.NotNull => NullAbstractValue.Null, 791Debug.Assert(value.NullState == NullAbstractValue.NotNull || DataFlowAnalysisContext.InterproceduralAnalysisData != null); 1052private NullAbstractValue GetNullStateBasedOnInstanceOrReferenceValue(IOperation? referenceOrInstance, ITypeSymbol? operationType, NullAbstractValue defaultValue) 1056return NullAbstractValue.NotNull; 1059NullAbstractValue referenceOrInstanceValue = referenceOrInstance != null ? GetNullAbstractValue(referenceOrInstance) : NullAbstractValue.NotNull; 1062NullAbstractValue.Invalid 1063or NullAbstractValue.Null => referenceOrInstanceValue, 1070NullAbstractValue nullState = GetNullStateBasedOnInstanceOrReferenceValue(referenceOrInstance, operation.Type, defaultValue.NullState); 1073NullAbstractValue.NotNull => defaultValue.MakeNonNull(), 1075NullAbstractValue.Null => defaultValue.MakeNull(), 1077NullAbstractValue.Invalid => PointsToAbstractValue.Invalid, 1089value.NullState != NullAbstractValue.Null) 1103value.NullState != NullAbstractValue.Null) 1153if (value.NullState == NullAbstractValue.NotNull) 1174if (operandValue.NullState == NullAbstractValue.NotNull &&
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\ConstructorMapper.cs (1)
63/// Initializes a <see cref="ConstructorMapper"/> that maps a constructor invocation's arguments' <see cref="NullAbstractValue"/>s to <see cref="PropertySetAbstractValueKind"/>s for the properties being tracked by PropertySetAnalysis.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\PropertyMapper.cs (2)
62/// Initializes a <see cref="PropertyMapper"/> that maps a property's assigned value's <see cref="NullAbstractValue"/> to a <see cref="PropertySetAbstractValueKind"/>. 73/// Initializes a <see cref="PropertyMapper"/> that maps a property's assigned value's <see cref="NullAbstractValue"/> to a <see cref="PropertySetAbstractValueKind"/>.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\PropertySetAnalysis.PropertySetDataFlowOperationVisitor.cs (2)
265else if (pointsToAbstractValue.NullState == NullAbstractValue.Null) 434else if (pointsToAbstractValue.NullState == NullAbstractValue.Null)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\PropertySetCallbacks.cs (3)
28NullAbstractValue.Null => PropertySetAbstractValueKind.Flagged, 30NullAbstractValue.NotNull => PropertySetAbstractValueKind.Unflagged, 32NullAbstractValue.MaybeNull => PropertySetAbstractValueKind.MaybeFlagged,
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ValueContentAnalysis\ValueContentAnalysis.ValueContentDataFlowOperationVisitor.cs (2)
206PointsToAnalysis.NullAbstractValue.Invalid => ValueContentAbstractValue.InvalidState, 208PointsToAnalysis.NullAbstractValue.Null => ValueContentAbstractValue.ContainsNullLiteralState,
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (2)
502NullAbstractValue.Null => PointsToAbstractValue.UnknownNull, 503NullAbstractValue.NotNull => PointsToAbstractValue.UnknownNotNull,
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (8)
907GetNullAbstractValue(instance) != NullAbstractValue.NotNull; 1089protected NullAbstractValue GetNullAbstractValue(IOperation operation) => GetPointsToAbstractValue(operation).NullState; 1161protected bool TryGetNullAbstractValueAtCurrentBlockEntry(AnalysisEntity analysisEntity, out NullAbstractValue nullAbstractValue) 1171nullAbstractValue = NullAbstractValue.MaybeNull; 1175protected bool TryGetMergedNullAbstractValueAtUnhandledThrowOperationsInGraph(AnalysisEntity analysisEntity, out NullAbstractValue nullAbstractValue) 1181nullAbstractValue = NullAbstractValue.MaybeNull; 1287case NullAbstractValue.Null: 1291case NullAbstractValue.NotNull: