390 references to FlowAnalysisAnnotations
Microsoft.CodeAnalysis.CSharp (367)
FlowAnalysis\NullableWalker.cs (173)
803if ((annotations & FlowAnalysisAnnotations.AllowNull) != 0) 821var badState = symbolType.Type.IsPossiblyNullableReferenceTypeTypeParameter() && (annotations & FlowAnalysisAnnotations.NotNull) == 0 1060var symbolAnnotations = property is SourcePropertySymbolBase { UsesFieldKeyword: true, BackingField: { } field } 1069var overriddenAnnotations = overriddenProperty.GetFlowAnalysisAnnotations(); 1317var annotations = parameter.FlowAnalysisAnnotations; 1318var hasNotNull = (annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull; 1379FlowAnalysisAnnotations annotations = parameter.FlowAnalysisAnnotations; 1382bool hasNotNullWhenTrue = (annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNullWhenTrue; 1383bool hasMaybeNullWhenFalse = (annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNullWhenFalse; 1390bool hasNotNullWhenFalse = (annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNullWhenFalse; 1391bool hasMaybeNullWhenTrue = (annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNullWhenTrue; 1434((method.FlowAnalysisAnnotations & FlowAnalysisAnnotations.DoesNotReturn) == FlowAnalysisAnnotations.DoesNotReturn) && 2382/// This should often be checked together with <seealso cref="IsDisallowedNullAssignment(TypeWithState, FlowAnalysisAnnotations)"/> 2495FlowAnalysisAnnotations overriddenAnnotations, 2497FlowAnalysisAnnotations overridingAnnotations, 2523bool overridingHasNotNull = (overridingAnnotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull; 2524bool overriddenHasNotNull = (overriddenAnnotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull; 2531bool overridingHasMaybeNull = (overridingAnnotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNull; 2532bool overriddenHasMaybeNull = (overriddenAnnotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNull; 2557var destAnnotationsWhen = ToInwardAnnotations(makeUnconditionalAnnotation(overriddenAnnotations, sense)); 2567static bool isBadAssignment(TypeWithState valueState, TypeWithAnnotations destinationType, FlowAnalysisAnnotations destinationAnnotations) 2585static FlowAnalysisAnnotations makeUnconditionalAnnotation(FlowAnalysisAnnotations annotations, bool sense) 2589var unconditionalAnnotationWhenTrue = makeUnconditionalAnnotationCore(annotations, FlowAnalysisAnnotations.NotNullWhenTrue, FlowAnalysisAnnotations.NotNull); 2590return makeUnconditionalAnnotationCore(unconditionalAnnotationWhenTrue, FlowAnalysisAnnotations.MaybeNullWhenTrue, FlowAnalysisAnnotations.MaybeNull); 2593var unconditionalAnnotationWhenFalse = makeUnconditionalAnnotationCore(annotations, FlowAnalysisAnnotations.NotNullWhenFalse, FlowAnalysisAnnotations.NotNull); 2594return makeUnconditionalAnnotationCore(unconditionalAnnotationWhenFalse, FlowAnalysisAnnotations.MaybeNullWhenFalse, FlowAnalysisAnnotations.MaybeNull); 2598static FlowAnalysisAnnotations makeUnconditionalAnnotationCore(FlowAnalysisAnnotations annotations, FlowAnalysisAnnotations conditionalAnnotation, FlowAnalysisAnnotations replacementAnnotation) 3028var parameterAnnotations = GetParameterAnnotations(parameter); 3045internal static TypeWithState GetParameterState(TypeWithAnnotations parameterType, FlowAnalysisAnnotations parameterAnnotations) 3047if ((parameterAnnotations & FlowAnalysisAnnotations.AllowNull) != 0) 3052if ((parameterAnnotations & FlowAnalysisAnnotations.DisallowNull) != 0) 3075TryGetReturnType(out TypeWithAnnotations returnType, out FlowAnalysisAnnotations returnAnnotations)) 3156private bool TryGetReturnType(out TypeWithAnnotations type, out FlowAnalysisAnnotations annotations) 3162annotations = FlowAnalysisAnnotations.None; 3173annotations = FlowAnalysisAnnotations.None; 3187annotations = FlowAnalysisAnnotations.None; 3192annotations = FlowAnalysisAnnotations.None; 4161var annotations = createMethod.GetFlowAnalysisAnnotations(); 5660out FlowAnalysisAnnotations parameterAnnotations) 5685FlowAnalysisAnnotations parameterAnnotations; 6735FlowAnalysisAnnotations annotations; 7259private FlowAnalysisAnnotations GetRValueAnnotations(Symbol? symbol) 7265return FlowAnalysisAnnotations.None; 7268var annotations = symbol.GetFlowAnalysisAnnotations(); 7269return annotations & (FlowAnalysisAnnotations.MaybeNull | FlowAnalysisAnnotations.NotNull); 7272private FlowAnalysisAnnotations GetParameterAnnotations(ParameterSymbol parameter) 7277return FlowAnalysisAnnotations.None; 7279var annotations = parameter.FlowAnalysisAnnotations; 7286bool hasNotNullWhenTrue = (annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNullWhenTrue; 7287bool hasNotNullWhenFalse = (annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNullWhenFalse; 7290annotations &= ~FlowAnalysisAnnotations.NotNull; 7294bool hasMaybeNullWhenTrue = (annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNullWhenTrue; 7295bool hasMaybeNullWhenFalse = (annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNullWhenFalse; 7298annotations &= ~FlowAnalysisAnnotations.MaybeNull; 7309private static TypeWithAnnotations ApplyLValueAnnotations(TypeWithAnnotations declaredType, FlowAnalysisAnnotations flowAnalysisAnnotations) 7311if ((flowAnalysisAnnotations & FlowAnalysisAnnotations.DisallowNull) == FlowAnalysisAnnotations.DisallowNull) 7315else if ((flowAnalysisAnnotations & FlowAnalysisAnnotations.AllowNull) == FlowAnalysisAnnotations.AllowNull) 7326private static TypeWithState ApplyUnconditionalAnnotations(TypeWithState typeWithState, FlowAnalysisAnnotations annotations) 7328if ((annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull) 7333if ((annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNull) 7341private static TypeWithAnnotations ApplyUnconditionalAnnotations(TypeWithAnnotations declaredType, FlowAnalysisAnnotations annotations) 7343if ((annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNull) 7348if ((annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull) 7552(ParameterSymbol? parameter, TypeWithAnnotations parameterType, FlowAnalysisAnnotations parameterAnnotations, bool isExpandedParamsArgument) = 7628(ParameterSymbol? parameter, TypeWithAnnotations parameterType, FlowAnalysisAnnotations parameterAnnotations, _) = 7659if (!IsAnalyzingAttribute && method is not null && (method.FlowAnalysisAnnotations & FlowAnalysisAnnotations.DoesNotReturn) == FlowAnalysisAnnotations.DoesNotReturn) 7927ImmutableArray<FlowAnalysisAnnotations> parameterAnnotationsOpt, 7959private ImmutableArray<FlowAnalysisAnnotations> GetParametersAnnotations(ImmutableArray<BoundExpression> arguments, ImmutableArray<ParameterSymbol> parametersOpt, ImmutableArray<int> argsToParamsOpt, bool expanded) 7961ImmutableArray<FlowAnalysisAnnotations> parameterAnnotationsOpt = default; 7987private VisitResult VisitArgumentEvaluate(BoundExpression argument, RefKind refKind, FlowAnalysisAnnotations annotations) 7999private VisitResult VisitArgumentEvaluateEpilogue(BoundExpression argument, RefKind refKind, FlowAnalysisAnnotations annotations) 8010switch (annotations & (FlowAnalysisAnnotations.DoesNotReturnIfTrue | FlowAnalysisAnnotations.DoesNotReturnIfFalse)) 8012case FlowAnalysisAnnotations.DoesNotReturnIfTrue: 8019case FlowAnalysisAnnotations.DoesNotReturnIfFalse: 8057FlowAnalysisAnnotations parameterAnnotations, 8139private bool CheckDisallowedNullAssignment(TypeWithState state, FlowAnalysisAnnotations annotations, SyntaxNode node, BoundExpression? boundValueOpt = null) 8157private static bool IsDisallowedNullAssignment(TypeWithState valueState, FlowAnalysisAnnotations targetAnnotations) 8159return ((targetAnnotations & FlowAnalysisAnnotations.DisallowNull) != 0) && 8194FlowAnalysisAnnotations parameterAnnotations, 8229var leftAnnotations = GetLValueAnnotations(argument); 8248var leftAnnotations = GetLValueAnnotations(argument); 8287FlowAnalysisAnnotations notNullBasedOnParameters(FlowAnalysisAnnotations parameterAnnotations, ArrayBuilder<ParameterSymbol>? notNullParametersOpt, ParameterSymbol parameter) 8298return FlowAnalysisAnnotations.NotNull; 8306void trackNullableStateForAssignment(BoundExpression parameterValue, TypeWithAnnotations lValueType, int targetSlot, TypeWithState parameterWithState, bool isSuppressed, FlowAnalysisAnnotations parameterAnnotations) 8331static bool hasConditionalPostCondition(FlowAnalysisAnnotations annotations) 8333return (((annotations & FlowAnalysisAnnotations.MaybeNullWhenTrue) != 0) ^ ((annotations & FlowAnalysisAnnotations.MaybeNullWhenFalse) != 0)) || 8334(((annotations & FlowAnalysisAnnotations.NotNullWhenTrue) != 0) ^ ((annotations & FlowAnalysisAnnotations.NotNullWhenFalse) != 0)); 8337static TypeWithState applyPostConditionsUnconditionally(TypeWithState typeWithState, FlowAnalysisAnnotations annotations) 8339if ((annotations & FlowAnalysisAnnotations.MaybeNull) != 0) 8345if ((annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull) 8354static TypeWithState applyPostConditionsWhenTrue(TypeWithState typeWithState, FlowAnalysisAnnotations annotations) 8356bool notNullWhenTrue = (annotations & FlowAnalysisAnnotations.NotNullWhenTrue) != 0; 8357bool maybeNullWhenTrue = (annotations & FlowAnalysisAnnotations.MaybeNullWhenTrue) != 0; 8358bool maybeNullWhenFalse = (annotations & FlowAnalysisAnnotations.MaybeNullWhenFalse) != 0; 8373static TypeWithState applyPostConditionsWhenFalse(TypeWithState typeWithState, FlowAnalysisAnnotations annotations) 8375bool notNullWhenFalse = (annotations & FlowAnalysisAnnotations.NotNullWhenFalse) != 0; 8376bool maybeNullWhenTrue = (annotations & FlowAnalysisAnnotations.MaybeNullWhenTrue) != 0; 8377bool maybeNullWhenFalse = (annotations & FlowAnalysisAnnotations.MaybeNullWhenFalse) != 0; 8396private void LearnFromPostConditions(BoundExpression argument, FlowAnalysisAnnotations parameterAnnotations) 8399bool notNullWhenTrue = (parameterAnnotations & FlowAnalysisAnnotations.NotNullWhenTrue) != 0; 8400bool notNullWhenFalse = (parameterAnnotations & FlowAnalysisAnnotations.NotNullWhenFalse) != 0; 8403bool maybeNullWhenTrue = (parameterAnnotations & FlowAnalysisAnnotations.MaybeNullWhenTrue) != 0; 8404bool maybeNullWhenFalse = (parameterAnnotations & FlowAnalysisAnnotations.MaybeNullWhenFalse) != 0; 8489private (ParameterSymbol? Parameter, TypeWithAnnotations Type, FlowAnalysisAnnotations Annotations, bool isExpandedParamsArgument) GetCorrespondingParameter( 8517return (parameter, paramsIterationType, FlowAnalysisAnnotations.None, isExpandedParamsArgument: true); 10193var parameterAnnotations = GetParameterAnnotations(parameter); 10770FlowAnalysisAnnotations leftAnnotations; 10829var annotations = IsAnalyzingAttribute ? FlowAnalysisAnnotations.None : property.GetFlowAnalysisAnnotations(); 10860private FlowAnalysisAnnotations GetLValueAnnotations(BoundExpression expr) 10868return FlowAnalysisAnnotations.None; 10871var annotations = expr switch 10877=> ToInwardAnnotations(GetParameterAnnotations(parameter) & ~FlowAnalysisAnnotations.NotNull), // NotNull is enforced upon method exit 10878_ => FlowAnalysisAnnotations.None 10881return annotations & (FlowAnalysisAnnotations.DisallowNull | FlowAnalysisAnnotations.AllowNull); 10884private static FlowAnalysisAnnotations GetFieldAnnotations(FieldSymbol field) 10891private FlowAnalysisAnnotations GetObjectInitializerMemberLValueAnnotations(Symbol memberSymbol) 10897return FlowAnalysisAnnotations.None; 10900var annotations = memberSymbol switch { PropertySymbol prop => prop.GetFlowAnalysisAnnotations(), FieldSymbol field => GetFieldAnnotations(field), _ => FlowAnalysisAnnotations.None }; 10902return annotations & (FlowAnalysisAnnotations.DisallowNull | FlowAnalysisAnnotations.AllowNull); 10905private static FlowAnalysisAnnotations ToInwardAnnotations(FlowAnalysisAnnotations outwardAnnotations) 10907var annotations = FlowAnalysisAnnotations.None; 10908if ((outwardAnnotations & FlowAnalysisAnnotations.MaybeNull) != 0) 10911annotations |= FlowAnalysisAnnotations.AllowNull; 10913if ((outwardAnnotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull) 10916annotations |= FlowAnalysisAnnotations.DisallowNull; 11102var leftAnnotations = GetLValueAnnotations(variable.Expression); 11539var leftArgumentAnnotations = GetLValueAnnotations(node.Left); 11678FlowAnalysisAnnotations memberAnnotations = GetRValueAnnotations(updatedProperty); 11800var memberAnnotations = GetRValueAnnotations(member);
Lowering\IteratorRewriter\IteratorFinallyMethodSymbol.cs (2)
150public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Lowering\SynthesizedMethodBaseSymbol.cs (3)
201public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => BaseMethod.ReturnTypeFlowAnalysisAnnotations; 205public sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.FieldSymbol.cs (2)
44public override FlowAnalysisAnnotations FlowAnalysisAnnotations 45=> FlowAnalysisAnnotations.None;
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.SynthesizedMethodBase.cs (2)
104public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\ErrorMethodSymbol.cs (4)
175public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 179public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\FieldSymbol.cs (1)
70public abstract FlowAnalysisAnnotations FlowAnalysisAnnotations { get; }
Symbols\FunctionPointers\FunctionPointerMethodSymbol.cs (4)
845public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 847public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\FunctionPointers\FunctionPointerParameterSymbol.cs (2)
91internal override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Metadata\PE\PEFieldSymbol.cs (24)
54public bool SetFlowAnalysisAnnotations(FlowAnalysisAnnotations value) 56Debug.Assert((value & ~(FlowAnalysisAnnotations.DisallowNull | FlowAnalysisAnnotations.AllowNull | FlowAnalysisAnnotations.MaybeNull | FlowAnalysisAnnotations.NotNull)) == 0); 59if ((value & FlowAnalysisAnnotations.DisallowNull) != 0) bitsToSet |= PackedFlags.HasDisallowNullAttribute; 60if ((value & FlowAnalysisAnnotations.AllowNull) != 0) bitsToSet |= PackedFlags.HasAllowNullAttribute; 61if ((value & FlowAnalysisAnnotations.MaybeNull) != 0) bitsToSet |= PackedFlags.HasMaybeNullAttribute; 62if ((value & FlowAnalysisAnnotations.NotNull) != 0) bitsToSet |= PackedFlags.HasNotNullAttribute; 67public bool TryGetFlowAnalysisAnnotations(out FlowAnalysisAnnotations value) 70value = FlowAnalysisAnnotations.None; 71if ((theBits & PackedFlags.HasDisallowNullAttribute) != 0) value |= FlowAnalysisAnnotations.DisallowNull; 72if ((theBits & PackedFlags.HasAllowNullAttribute) != 0) value |= FlowAnalysisAnnotations.AllowNull; 73if ((theBits & PackedFlags.HasMaybeNullAttribute) != 0) value |= FlowAnalysisAnnotations.MaybeNull; 74if ((theBits & PackedFlags.HasNotNullAttribute) != 0) value |= FlowAnalysisAnnotations.NotNull; 402public override FlowAnalysisAnnotations FlowAnalysisAnnotations 406FlowAnalysisAnnotations value; 416private static FlowAnalysisAnnotations DecodeFlowAnalysisAttributes(PEModule module, FieldDefinitionHandle handle) 418FlowAnalysisAnnotations annotations = FlowAnalysisAnnotations.None; 419if (module.HasAttribute(handle, AttributeDescription.AllowNullAttribute)) annotations |= FlowAnalysisAnnotations.AllowNull; 420if (module.HasAttribute(handle, AttributeDescription.DisallowNullAttribute)) annotations |= FlowAnalysisAnnotations.DisallowNull; 421if (module.HasAttribute(handle, AttributeDescription.MaybeNullAttribute)) annotations |= FlowAnalysisAnnotations.MaybeNull; 422if (module.HasAttribute(handle, AttributeDescription.NotNullAttribute)) annotations |= FlowAnalysisAnnotations.NotNull;
Symbols\Metadata\PE\PEMethodSymbol.cs (4)
671public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => Signature.ReturnParam.FlowAnalysisAnnotations; 675public override FlowAnalysisAnnotations FlowAnalysisAnnotations 686return _packedFlags.DoesNotReturn ? FlowAnalysisAnnotations.DoesNotReturn : FlowAnalysisAnnotations.None;
Symbols\Metadata\PE\PEParameterSymbol.cs (19)
100Debug.Assert(EnumUtilities.ContainsAllValues<FlowAnalysisAnnotations>(FlowAnalysisAnnotationsMask)); 137public bool SetFlowAnalysisAnnotations(FlowAnalysisAnnotations value) 143public bool TryGetFlowAnalysisAnnotations(out FlowAnalysisAnnotations value) 146value = (FlowAnalysisAnnotations)((theBits >> FlowAnalysisAnnotationsOffset) & FlowAnalysisAnnotationsMask); 793internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 797FlowAnalysisAnnotations value; 807private static FlowAnalysisAnnotations DecodeFlowAnalysisAttributes(PEModule module, ParameterHandle handle) 809FlowAnalysisAnnotations annotations = FlowAnalysisAnnotations.None; 810if (module.HasAttribute(handle, AttributeDescription.AllowNullAttribute)) annotations |= FlowAnalysisAnnotations.AllowNull; 811if (module.HasAttribute(handle, AttributeDescription.DisallowNullAttribute)) annotations |= FlowAnalysisAnnotations.DisallowNull; 815annotations |= FlowAnalysisAnnotations.MaybeNull; 819annotations |= (when ? FlowAnalysisAnnotations.MaybeNullWhenTrue : FlowAnalysisAnnotations.MaybeNullWhenFalse); 824annotations |= FlowAnalysisAnnotations.NotNull; 828annotations |= (when ? FlowAnalysisAnnotations.NotNullWhenTrue : FlowAnalysisAnnotations.NotNullWhenFalse); 833annotations |= (condition ? FlowAnalysisAnnotations.DoesNotReturnIfTrue : FlowAnalysisAnnotations.DoesNotReturnIfFalse);
Symbols\MethodSymbol.cs (2)
251public abstract FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations { get; } 258public abstract FlowAnalysisAnnotations FlowAnalysisAnnotations { get; }
Symbols\ParameterSymbol.cs (1)
418internal abstract FlowAnalysisAnnotations FlowAnalysisAnnotations { get; }
Symbols\ReducedExtensionMethodSymbol.cs (2)
500public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => _reducedFrom.ReturnTypeFlowAnalysisAnnotations; 504public override FlowAnalysisAnnotations FlowAnalysisAnnotations => _reducedFrom.FlowAnalysisAnnotations;
Symbols\SignatureOnlyMethodSymbol.cs (4)
79public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 83public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\SignatureOnlyParameterSymbol.cs (1)
95internal override FlowAnalysisAnnotations FlowAnalysisAnnotations { get { throw ExceptionUtilities.Unreachable(); } }
Symbols\Source\FieldSymbolWithAttributesAndModifiers.cs (8)
245public override FlowAnalysisAnnotations FlowAnalysisAnnotations 248private static FlowAnalysisAnnotations DecodeFlowAnalysisAttributes(FieldWellKnownAttributeData attributeData) 250var annotations = FlowAnalysisAnnotations.None; 253if (attributeData.HasAllowNullAttribute) annotations |= FlowAnalysisAnnotations.AllowNull; 254if (attributeData.HasDisallowNullAttribute) annotations |= FlowAnalysisAnnotations.DisallowNull; 255if (attributeData.HasMaybeNullAttribute) annotations |= FlowAnalysisAnnotations.MaybeNull; 256if (attributeData.HasNotNullAttribute) annotations |= FlowAnalysisAnnotations.NotNull;
Symbols\Source\SourceClonedParameterSymbol.cs (2)
152internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 154get { return FlowAnalysisAnnotations.None; }
Symbols\Source\SourceComplexParameterSymbol.cs (15)
148internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 156private static FlowAnalysisAnnotations DecodeFlowAnalysisAttributes(ParameterWellKnownAttributeData attributeData) 160return FlowAnalysisAnnotations.None; 162FlowAnalysisAnnotations annotations = FlowAnalysisAnnotations.None; 163if (attributeData.HasAllowNullAttribute) annotations |= FlowAnalysisAnnotations.AllowNull; 164if (attributeData.HasDisallowNullAttribute) annotations |= FlowAnalysisAnnotations.DisallowNull; 168annotations |= FlowAnalysisAnnotations.MaybeNull; 174annotations |= (when ? FlowAnalysisAnnotations.MaybeNullWhenTrue : FlowAnalysisAnnotations.MaybeNullWhenFalse); 180annotations |= FlowAnalysisAnnotations.NotNull; 186annotations |= (when ? FlowAnalysisAnnotations.NotNullWhenTrue : FlowAnalysisAnnotations.NotNullWhenFalse); 192annotations |= (condition ? FlowAnalysisAnnotations.DoesNotReturnIfTrue : FlowAnalysisAnnotations.DoesNotReturnIfFalse);
Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs (4)
1270if ((baseMethod.FlowAnalysisAnnotations & FlowAnalysisAnnotations.DoesNotReturn) == FlowAnalysisAnnotations.DoesNotReturn && 1271(overrideMethod.FlowAnalysisAnnotations & FlowAnalysisAnnotations.DoesNotReturn) != FlowAnalysisAnnotations.DoesNotReturn)
Symbols\Source\SourceMethodSymbolWithAttributes.cs (10)
108public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => 683public override FlowAnalysisAnnotations FlowAnalysisAnnotations 691private static FlowAnalysisAnnotations DecodeFlowAnalysisAttributes(MethodWellKnownAttributeData attributeData) 692=> attributeData?.HasDoesNotReturnAttribute == true ? FlowAnalysisAnnotations.DoesNotReturn : FlowAnalysisAnnotations.None; 1626private static FlowAnalysisAnnotations DecodeReturnTypeAnnotationAttributes(ReturnTypeWellKnownAttributeData attributeData) 1628FlowAnalysisAnnotations annotations = FlowAnalysisAnnotations.None; 1633annotations |= FlowAnalysisAnnotations.MaybeNull; 1637annotations |= FlowAnalysisAnnotations.NotNull;
Symbols\Source\SourcePropertyAccessorSymbol.cs (9)
355public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations 361return FlowAnalysisAnnotations.None; 364var result = FlowAnalysisAnnotations.None; 367result |= FlowAnalysisAnnotations.MaybeNull; 371result |= FlowAnalysisAnnotations.NotNull; 805var annotations = ReturnTypeFlowAnalysisAnnotations; 806if ((annotations & FlowAnalysisAnnotations.MaybeNull) != 0) 810if ((annotations & FlowAnalysisAnnotations.NotNull) != 0)
Symbols\Source\SourceSimpleParameterSymbol.cs (2)
132internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 134get { return FlowAnalysisAnnotations.None; }
Symbols\Source\ThisParameterSymbol.cs (2)
78internal sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations 80get { return FlowAnalysisAnnotations.None; }
Symbols\SymbolExtensions.cs (7)
438internal static FlowAnalysisAnnotations GetFlowAnalysisAnnotations(this PropertySymbol property) 440var annotations = property.GetOwnOrInheritedGetMethod()?.ReturnTypeFlowAnalysisAnnotations ?? FlowAnalysisAnnotations.None; 452annotations |= FlowAnalysisAnnotations.AllowNull; 456annotations |= FlowAnalysisAnnotations.DisallowNull; 463internal static FlowAnalysisAnnotations GetFlowAnalysisAnnotations(this Symbol? symbol) 471_ => FlowAnalysisAnnotations.None
Symbols\Synthesized\SynthesizedAccessorValueParameterSymbol.cs (8)
34internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 38var result = FlowAnalysisAnnotations.None; 43result |= FlowAnalysisAnnotations.DisallowNull; 47result |= FlowAnalysisAnnotations.AllowNull; 91var annotations = FlowAnalysisAnnotations; 92if ((annotations & FlowAnalysisAnnotations.DisallowNull) != 0) 96if ((annotations & FlowAnalysisAnnotations.AllowNull) != 0)
Symbols\Synthesized\SynthesizedBackingFieldSymbol.cs (1)
134if (FlowAnalysisAnnotations != FlowAnalysisAnnotations.None)
Symbols\Synthesized\SynthesizedDelegateSymbol.cs (2)
172public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedEmbeddedExtensionMarkerNameAttributeSymbol.cs (2)
170public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedEntryPointSymbol.cs (4)
145public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 149public sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedFieldSymbolBase.cs (2)
91public override FlowAnalysisAnnotations FlowAnalysisAnnotations 92=> FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedGlobalMethodSymbol.cs (4)
120public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 216public sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations 218get { return FlowAnalysisAnnotations.None; }
Symbols\Synthesized\SynthesizedImplementationMethod.cs (2)
106public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedInstanceConstructor.cs (2)
159public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedInteractiveInitializerMethod.cs (2)
149public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedIntrinsicOperatorSymbol.cs (4)
233public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 237public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedMethodSymbol.cs (2)
92public sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedParameterSymbol.cs (3)
118internal override FlowAnalysisAnnotations FlowAnalysisAnnotations 120get { return FlowAnalysisAnnotations.None; } 421internal override FlowAnalysisAnnotations FlowAnalysisAnnotations
Symbols\Synthesized\SynthesizedSealedPropertyAccessor.cs (2)
197public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedSimpleProgramEntryPointSymbol.cs (4)
168public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 172public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\Synthesized\SynthesizedStaticConstructor.cs (4)
143public override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => FlowAnalysisAnnotations.None; 147public override FlowAnalysisAnnotations FlowAnalysisAnnotations => FlowAnalysisAnnotations.None;
Symbols\TypeWithState.cs (6)
40public static TypeWithState Create(TypeWithAnnotations typeWithAnnotations, FlowAnalysisAnnotations annotations = FlowAnalysisAnnotations.None) 48if ((annotations & FlowAnalysisAnnotations.MaybeNull) == FlowAnalysisAnnotations.MaybeNull) 52else if ((annotations & FlowAnalysisAnnotations.NotNull) == FlowAnalysisAnnotations.NotNull)
Symbols\Wrapped\WrappedFieldSymbol.cs (1)
49public override FlowAnalysisAnnotations FlowAnalysisAnnotations
Symbols\Wrapped\WrappedMethodSymbol.cs (2)
324public sealed override FlowAnalysisAnnotations ReturnTypeFlowAnalysisAnnotations => UnderlyingMethod.ReturnTypeFlowAnalysisAnnotations; 328public sealed override FlowAnalysisAnnotations FlowAnalysisAnnotations => UnderlyingMethod.FlowAnalysisAnnotations;
Symbols\Wrapped\WrappedParameterSymbol.cs (1)
146internal override FlowAnalysisAnnotations FlowAnalysisAnnotations
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (20)
Semantics\LambdaTests.cs (7)
4209Assert.Equal(FlowAnalysisAnnotations.MaybeNull | FlowAnalysisAnnotations.NotNull, lambdas[0].ReturnTypeFlowAnalysisAnnotations); 4784Assert.Equal(FlowAnalysisAnnotations.DoesNotReturn, lambdas[0].FlowAnalysisAnnotations); 4785Assert.Equal(FlowAnalysisAnnotations.DoesNotReturn, lambdas[1].FlowAnalysisAnnotations); 4979Assert.Equal(FlowAnalysisAnnotations.AllowNull | FlowAnalysisAnnotations.MaybeNullWhenFalse, lambdas[0].Parameters[0].FlowAnalysisAnnotations); 5024Assert.Equal(FlowAnalysisAnnotations.NotNullWhenTrue, lambda.Parameters[0].FlowAnalysisAnnotations);
Semantics\NullableReferenceTypesTests.cs (13)
22using static Microsoft.CodeAnalysis.CSharp.Symbols.FlowAnalysisAnnotations; 30234Assert.Equal(FlowAnalysisAnnotations.MaybeNull, getter.ReturnTypeFlowAnalysisAnnotations); 30255Assert.Equal(FlowAnalysisAnnotations.None, setter.ReturnTypeFlowAnalysisAnnotations); 30337Assert.Equal(FlowAnalysisAnnotations.MaybeNull | FlowAnalysisAnnotations.NotNull, getter.ReturnTypeFlowAnalysisAnnotations); 38093private static void VerifyAnnotations(CSharpCompilation compilation, string memberName, params FlowAnalysisAnnotations[] expected) 38101private void VerifyAnnotationsAndMetadata(CSharpCompilation compilation, string memberName, params FlowAnalysisAnnotations[] expected) 41015Assert.Equal(FlowAnalysisAnnotations.AllowNull, setter.Parameters.Last().FlowAnalysisAnnotations); 41025Assert.Equal(FlowAnalysisAnnotations.None, setter.ReturnTypeFlowAnalysisAnnotations); 41076Assert.Equal(FlowAnalysisAnnotations.AllowNull | FlowAnalysisAnnotations.DisallowNull, setter.Parameters.Last().FlowAnalysisAnnotations); 44703Assert.Equal(FlowAnalysisAnnotations.DisallowNull, setter.Parameters.Last().FlowAnalysisAnnotations); 48031Assert.Equal(FlowAnalysisAnnotations.NotNull, getter.ReturnTypeFlowAnalysisAnnotations);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (3)
FunctionPointerUtilities.cs (3)
63Assert.Equal(FlowAnalysisAnnotations.None, symbol.ReturnTypeFlowAnalysisAnnotations); 64Assert.Equal(FlowAnalysisAnnotations.None, symbol.FlowAnalysisAnnotations); 110Assert.Equal(FlowAnalysisAnnotations.None, symbol.FlowAnalysisAnnotations);