1 write to NullableAnnotation
Microsoft.CodeAnalysis.CSharp (1)
Symbols\TypeWithAnnotations.cs (1)
56NullableAnnotation = nullableAnnotation;
220 references to NullableAnnotation
Microsoft.CodeAnalysis.CSharp (122)
Binder\Binder_Constraints.cs (1)
514if (typeWithAnnotations.NullableAnnotation == NullableAnnotation.Annotated && performOnlyCycleSafeValidation &&
Binder\Binder_Deconstruct.cs (1)
856return new BoundDiscardExpression(syntax, declTypeWithAnnotations.NullableAnnotation, isInferred: type is null, type);
Binder\Binder_Expressions.cs (5)
1198return new BoundRefValueOperator(node, typeWithAnnotations.NullableAnnotation, argument, typeWithAnnotations.Type, hasErrors); 1349else if (typeWithAnnotations.NullableAnnotation.IsAnnotated() && type.IsReferenceType) 1368|| (typeWithAnnotations.NullableAnnotation.IsAnnotated() && !type.IsValueType) 2916return new BoundDiscardExpression(declarationExpression, declType.NullableAnnotation, isInferred: type is null, type); 4435if (typeWithAnnotations.NullableAnnotation.IsAnnotated() && !type.IsNullableType())
Binder\Binder_Operators.cs (2)
3219if (targetType.IsReferenceType && targetTypeWithAnnotations.NullableAnnotation.IsAnnotated()) 3662if (targetType.IsReferenceType && targetTypeWithAnnotations.NullableAnnotation.IsAnnotated())
Binder\Semantics\BestTypeInferrer.cs (1)
30result = result.Join(type.NullableAnnotation);
Binder\Semantics\Conversions\ConversionsBase.cs (12)
1693if (source.NullableAnnotation.IsOblivious() || destination.NullableAnnotation.IsOblivious()) 1702return destination.NullableAnnotation.IsAnnotated(); 1707return source.NullableAnnotation.IsAnnotated(); 1710return source.NullableAnnotation.IsAnnotated() == destination.NullableAnnotation.IsAnnotated(); 1725if (source.NullableAnnotation.IsOblivious() || destination.NullableAnnotation.IsOblivious() || destination.NullableAnnotation.IsAnnotated()) 1735return !source.NullableAnnotation.IsAnnotated(); 2464if (source.NullableAnnotation != destination.NullableAnnotation &&
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (6)
621else if (IsUnfixedTypeParameter(target) && !target.NullableAnnotation.IsAnnotated() && kind is ExactOrBoundsKind.LowerBound) 624_nullableAnnotationLowerBounds[ordinal] = _nullableAnnotationLowerBounds[ordinal].Join(argumentType.NullableAnnotation); 1644=> type.NullableAnnotation.IsAnnotated(); 2770best = TypeWithAnnotations.Create(resultType, best.NullableAnnotation); 3176var oldAnnotation = oldBound.NullableAnnotation; 3177var newAnnotation = oldAnnotation.MergeNullableAnnotation(candidate.NullableAnnotation, variance);
BoundTree\BoundDiscardExpression.cs (1)
16return this.Update(type.NullableAnnotation, isInferred: true, type.Type);
Compilation\CSharpSemanticModel.cs (1)
2089nullability = local.LocalSymbol.TypeWithAnnotations.NullableAnnotation.ToNullabilityInfo(type);
Emitter\Model\TypeParameterSymbolAdapter.cs (1)
259Debug.Assert(!type.NullableAnnotation.IsAnnotated());
FlowAnalysis\NullableWalker.cs (15)
737if (!symbolType.NullableAnnotation.IsNotAnnotated()) 907if (!type.NullableAnnotation.IsOblivious()) 2198switch (type.NullableAnnotation) 2958type = TypeWithAnnotations.Create(node.Type, type.NullableAnnotation); 5444var lValueAnnotation = consequenceLValue.NullableAnnotation.EnsureCompatible(alternativeLValue.NullableAnnotation); 5664new BoundExpressionWithNullability(expr.Syntax, expr, type.NullableAnnotation, type.Type); 7162return new BoundExpressionWithNullability(argument.Syntax, argument, argumentType.NullableAnnotation, argumentType.Type); 8243else if (fromExplicitCast && targetTypeWithNullability.NullableAnnotation.IsAnnotated() && !targetType.IsNullableType()) 8266else if (targetType.NullableAnnotation.IsNotAnnotated() && 8297else if (targetType.NullableAnnotation.IsNotAnnotated() && 8350dependsOnTypeParameter(constraintTypeParameter, typeParameter2, constraintType.NullableAnnotation, out var constraintAnnotation)) 8611TypeWithAnnotations.Create(newType, visitResult.LValueType.NullableAnnotation)); 8931arguments.Add(new BoundExpressionWithNullability(syntax, new BoundParameter(syntax, parameter), parameterType.NullableAnnotation, parameterType.Type)); 9108if (lValueType.NullableAnnotation.IsOblivious() || !lValueType.CanBeAssignedNull)
FlowAnalysis\NullableWalker_Patterns.cs (2)
648inferredType = TypeWithAnnotations.Create(inferredType.Type, existingType.NullableAnnotation.Join(inferredType.NullableAnnotation));
Lowering\ClosureConversion\ClosureConversion.cs (2)
987Debug.Assert(oldTypeArg.NullableAnnotation == newTypeArg.NullableAnnotation);
Symbols\AliasSymbol.cs (1)
414annotatedNamespaceOrType.TypeWithAnnotations.NullableAnnotation == NullableAnnotation.Annotated &&
Symbols\ConstraintsHelper.cs (7)
1132switch (typeWithAnnotations.NullableAnnotation) 1171switch (typeWithAnnotations.NullableAnnotation) 1521switch (type2.NullableAnnotation) 1528if (type1.NullableAnnotation.IsNotAnnotated()) 1535throw ExceptionUtilities.UnexpectedValue(type2.NullableAnnotation); 1543switch (type.NullableAnnotation) 1572if (objectConstraint.NullableAnnotation.IsOblivious())
Symbols\Metadata\PE\PETypeParameterSymbol.cs (3)
200if (bestObjectConstraint.NullableAnnotation.IsOblivious() && !HasReferenceTypeConstraint) 325if (constraintType.NullableAnnotation.IsAnnotated() || isNotNullable == false) 329else if (constraintType.NullableAnnotation.IsOblivious() || isNotNullable == null)
Symbols\Metadata\PE\TupleTypeDecoder.cs (2)
121TypeWithAnnotations.Create(decoded, metadataType.NullableAnnotation, metadataType.CustomModifiers); 346TypeWithAnnotations.Create(decoded, typeWithAnnotations.NullableAnnotation, typeWithAnnotations.CustomModifiers);
Symbols\NullableAnnotationExtensions.cs (1)
119ToPublicAnnotation(type.Type, type.NullableAnnotation);
Symbols\Source\SourceNamedTypeSymbol_Bases.cs (1)
350static (type, arg, flag) => !type.Type.IsValueType && !type.NullableAnnotation.IsOblivious(),
Symbols\SubstitutedTypeParameterSymbol.cs (1)
124if (bestObjectConstraint.NullableAnnotation.IsOblivious() && !HasReferenceTypeConstraint)
Symbols\TypeParameterSymbol.cs (2)
479if (constraintType.NullableAnnotation.IsAnnotated()) 498if (constraintType.NullableAnnotation.IsOblivious())
Symbols\TypeWithAnnotations.cs (54)
107if (NullableAnnotation.IsAnnotated() || (Type.IsValueType && Type.IsNullableType())) 117if (NullableAnnotation.IsNotAnnotated() || (Type.IsValueType && !Type.IsNullableType())) 128if (NullableAnnotation.IsAnnotated()) 130return NullableAnnotation; 143return NullableAnnotation; 150switch (NullableAnnotation) 160throw ExceptionUtilities.UnexpectedValue(NullableAnnotation); 178internal bool IsDefault => DefaultType is null && this.NullableAnnotation == 0 && (_extensions == null || _extensions == Extensions.Default); 236NullableAnnotation nullableAnnotation = this.NullableAnnotation.MergeNullableAnnotation(other.NullableAnnotation, variance); 283if (NullableAnnotation.IsAnnotated() && 296if (NullableAnnotation.IsAnnotated() && 302else if (NullableAnnotation.IsNotAnnotated() && 353var thisAnnotation = NullableAnnotation; 354var otherAnnotation = other.NullableAnnotation; 431Debug.Assert(NullableAnnotation != NullableAnnotation.Ignored); 439Debug.Assert(newTypeWithModifiers.NullableAnnotation.IsOblivious() || (typeSymbol.IsNullableType() && newTypeWithModifiers.NullableAnnotation.IsAnnotated())); 441Debug.Assert(NullableAnnotation != NullableAnnotation.Ignored); 448else if ((NullableAnnotation.IsOblivious() || (typeSymbol.IsNullableType() && NullableAnnotation.IsAnnotated())) && 454return Create(newTypeWithModifiers.Type, NullableAnnotation, newCustomModifiers); 462else if (Is((TypeParameterSymbol)typeSymbol) && newTypeWithModifiers.NullableAnnotation != NullableAnnotation.Ignored) 473Debug.Assert(newTypeWithModifiers.Type is not IndexedTypeParameterSymbol || newTypeWithModifiers.NullableAnnotation == NullableAnnotation.Ignored); 475if (NullableAnnotation.IsAnnotated() || newTypeWithModifiers.NullableAnnotation.IsAnnotated()) 479else if (newTypeWithModifiers.NullableAnnotation == NullableAnnotation.Ignored) 481newAnnotation = NullableAnnotation; 483else if (NullableAnnotation != NullableAnnotation.Oblivious) 487newAnnotation = NullableAnnotation; 491newAnnotation = newTypeWithModifiers.NullableAnnotation; 494else if (newTypeWithModifiers.NullableAnnotation != NullableAnnotation.Oblivious) 496newAnnotation = newTypeWithModifiers.NullableAnnotation; 500Debug.Assert(NullableAnnotation.IsOblivious()); 501Debug.Assert(newTypeWithModifiers.NullableAnnotation.IsOblivious()); 502newAnnotation = NullableAnnotation; 535return NullableAnnotation.IsOblivious() && ((object)DefaultType == other) && 568typeWithAnnotationsPredicate: (t, a, b) => t.NullableAnnotation != NullableAnnotation.Oblivious && !t.Type.IsErrorType() && !t.Type.IsValueType, 605var annotation = typeWithAnnotations.NullableAnnotation; 681if (result.NullableAnnotation != NullableAnnotation.Oblivious && 682!(result.NullableAnnotation.IsAnnotated() && oldTypeSymbol.IsNullableType())) // Preserve nullable annotation on Nullable<T>. 699if (NullableAnnotation.IsNotAnnotated() || (typeSymbol.IsValueType && !typeSymbol.IsNullableType())) 712if (NullableAnnotation != NullableAnnotation.Oblivious) 769NullableAnnotation == other.NullableAnnotation && 782return TypeWithState.Create(Type, getFlowState(Type, NullableAnnotation)); 881return CreateNonLazyType(type.DefaultType, type.NullableAnnotation, customModifiers); 888return CreateNonLazyType(typeSymbol, type.NullableAnnotation, customModifiers); 899return CreateNonLazyType(defaultType, defaultType.IsNullableType() ? type.NullableAnnotation : NullableAnnotation.NotAnnotated, _customModifiers); 934Debug.Assert(!underlying.NullableAnnotation.IsAnnotated()); 987return TypeWithAnnotations.Create(resolvedType, type.NullableAnnotation, customModifiers: customModifiers); 990return CreateNonLazyType(resolvedType, type.NullableAnnotation, customModifiers); 997return TypeWithAnnotations.Create(typeSymbol, type.NullableAnnotation, customModifiers: customModifiers); 1000return CreateNonLazyType(typeSymbol, type.NullableAnnotation, customModifiers);
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (2)
CodeGen\CodeGenLocalFunctionTests.cs (2)
5363Assert.Equal(NullableAnnotation.Annotated, localFn1.ReturnTypeWithAnnotations.NullableAnnotation); 5367Assert.Equal(NullableAnnotation.Annotated, param.TypeWithAnnotations.NullableAnnotation);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (95)
Semantics\NullableReferenceTypesTests.cs (95)
8803Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp0).NullableAnnotation); 8808Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8811Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8816Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8819Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8826Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp0).NullableAnnotation); 8831Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8834Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8839Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8842Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8846Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8849Assert.Equal(NullableAnnotation.Oblivious, getParameterType(comp1).NullableAnnotation); 8856Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp0).NullableAnnotation); 8861Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8864Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8869Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8872Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8879Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8885Assert.Equal(NullableAnnotation.NotAnnotated, getParameterType(comp1).NullableAnnotation); 8922Assert.Equal(NullableAnnotation.Oblivious, c.GetMember<FieldSymbol>("C.F").TypeWithAnnotations.NullableAnnotation); 8923Assert.Equal(NullableAnnotation.Oblivious, c.GetMember<EventSymbol>("C.E").TypeWithAnnotations.NullableAnnotation); 8924Assert.Equal(NullableAnnotation.Oblivious, c.GetMember<PropertySymbol>("C.P").TypeWithAnnotations.NullableAnnotation); 8926Assert.Equal(NullableAnnotation.Oblivious, indexer.TypeWithAnnotations.NullableAnnotation); 8927Assert.Equal(NullableAnnotation.Oblivious, indexer.Parameters[0].TypeWithAnnotations.NullableAnnotation); 8929Assert.Equal(NullableAnnotation.Oblivious, method.ReturnTypeWithAnnotations.NullableAnnotation); 8930Assert.Equal(NullableAnnotation.Oblivious, method.Parameters[0].TypeWithAnnotations.NullableAnnotation); 8969Assert.Equal(NullableAnnotation.Oblivious, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 8970Assert.Equal(NullableAnnotation.Oblivious, tuple.TupleElements[1].TypeWithAnnotations.NullableAnnotation); 9010Assert.Equal(NullableAnnotation.Oblivious, constraintType.NullableAnnotation); 9013Assert.Equal(NullableAnnotation.Oblivious, constraintType.NullableAnnotation); 9016Assert.Equal(NullableAnnotation.Oblivious, constraintType.NullableAnnotation); 9036Assert.Equal(NullableAnnotation.Oblivious, typeArg.NullableAnnotation); 9038Assert.Equal(NullableAnnotation.Oblivious, method.ReturnTypeWithAnnotations.NullableAnnotation); 9040Assert.Equal(NullableAnnotation.Oblivious, typeArg.NullableAnnotation); 9042Assert.Equal(NullableAnnotation.Oblivious, parameter.TypeWithAnnotations.NullableAnnotation); 9044Assert.Equal(NullableAnnotation.Oblivious, typeArg.NullableAnnotation); 10343Assert.Equal(NullableAnnotation.Oblivious, typeArg.NullableAnnotation); 10348Assert.Equal(NullableAnnotation.Oblivious, typeArg.NullableAnnotation); 11191Assert.Equal(nullableAnnotation, type.NullableAnnotation); 11294Assert.Equal(nullableAnnotation, type.NullableAnnotation); 12088Assert.Equal(NullableAnnotation.Annotated, m1.Parameters[0].TypeWithAnnotations.NullableAnnotation); 13887Assert.Equal(NullableAnnotation.Annotated, m1.Parameters[0].TypeWithAnnotations.NullableAnnotation); 13893Assert.Equal(NullableAnnotation.Annotated, m2.ReturnTypeWithAnnotations.NullableAnnotation); 56566Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56600Assert.Equal(NullableAnnotation.Oblivious, symbol.TypeWithAnnotations.NullableAnnotation); 56628Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56660Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56689Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56722Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56754Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56787Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56821Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56848Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56878Assert.Equal(NullableAnnotation.Annotated, type.NullableAnnotation); 56906Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56910Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 56914Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67838Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67842Assert.Equal(NullableAnnotation.NotAnnotated, symbol.TypeWithAnnotations.NullableAnnotation); 67874Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67877Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67915Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67918Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67952Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67955Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 67989Assert.Equal(NullableAnnotation.NotAnnotated, symbol.TypeWithAnnotations.NullableAnnotation); 67992Assert.Equal(NullableAnnotation.NotAnnotated, symbol.TypeWithAnnotations.NullableAnnotation); 68024Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 68027Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 68057Assert.Equal(NullableAnnotation.NotAnnotated, symbol.TypeWithAnnotations.NullableAnnotation); 68094Assert.Equal(NullableAnnotation.NotAnnotated, symbol.TypeWithAnnotations.NullableAnnotation); 68097Assert.Equal(NullableAnnotation.Annotated, symbol.TypeWithAnnotations.NullableAnnotation); 109751Assert.Equal(NullableAnnotation.NotAnnotated, f1.TypeWithAnnotations.NullableAnnotation); 109776Assert.Equal(NullableAnnotation.Oblivious, f1.TypeWithAnnotations.NullableAnnotation); 135164Assert.True(dGoo.Parameters[0].TypeWithAnnotations.NullableAnnotation == NullableAnnotation.Annotated); 135192Assert.Equal(NullableAnnotation.Annotated, c2Goo.Parameters[0].TypeWithAnnotations.NullableAnnotation); 135220Assert.Equal(NullableAnnotation.Annotated, ((ArrayTypeSymbol)c2Goo.Parameters[0].Type).ElementTypeWithAnnotations.NullableAnnotation); 135250Assert.Equal(NullableAnnotation.NotAnnotated, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 135252Assert.Equal(NullableAnnotation.Annotated, tuple.TupleElements[1].TypeWithAnnotations.NullableAnnotation); 135280Assert.Equal(NullableAnnotation.Annotated, c2Goo.ReturnTypeWithAnnotations.NullableAnnotation); 135308Assert.Equal(NullableAnnotation.Annotated, ((ArrayTypeSymbol)c2Goo.ReturnType).ElementTypeWithAnnotations.NullableAnnotation); 135338Assert.Equal(NullableAnnotation.NotAnnotated, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 135340Assert.Equal(NullableAnnotation.Annotated, tuple.TupleElements[1].TypeWithAnnotations.NullableAnnotation); 135363Assert.Equal(NullableAnnotation.Annotated, dGoo.Parameters[0].TypeWithAnnotations.NullableAnnotation); 135386Assert.Equal(NullableAnnotation.Annotated, ((ArrayTypeSymbol)dGoo.Parameters[0].Type).ElementTypeWithAnnotations.NullableAnnotation); 135411Assert.Equal(NullableAnnotation.NotAnnotated, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 135413Assert.Equal(NullableAnnotation.Annotated, tuple.TupleElements[1].TypeWithAnnotations.NullableAnnotation); 135436Assert.Equal(NullableAnnotation.Annotated, dGoo.ReturnTypeWithAnnotations.NullableAnnotation); 135459Assert.Equal(NullableAnnotation.Annotated, ((ArrayTypeSymbol)dGoo.ReturnType).ElementTypeWithAnnotations.NullableAnnotation); 135484Assert.Equal(NullableAnnotation.NotAnnotated, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 135486Assert.Equal(NullableAnnotation.Annotated, tuple.TupleElements[1].TypeWithAnnotations.NullableAnnotation); 135511Assert.Equal(NullableAnnotation.Annotated, dGoo.ReturnTypeWithAnnotations.NullableAnnotation); 135517Assert.Equal(NullableAnnotation.Annotated, tuple.TupleElements[0].TypeWithAnnotations.NullableAnnotation); 145607Assert.Equal(NullableAnnotation.Annotated, parameterType.NullableAnnotation); 150524Assert.Equal(expectedAnnotation, symbol.GetSymbol<LocalSymbol>().TypeWithAnnotations.NullableAnnotation);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
UsesIsNullableVisitor.cs (1)
158return (type.NullableAnnotation != NullableAnnotation.Oblivious && typeSymbol.IsReferenceType && !typeSymbol.IsErrorType()) ||