451 references to NullableAnnotation
Microsoft.CodeAnalysis.CSharp (204)
Binder\Binder_Constraints.cs (1)
514if (typeWithAnnotations.NullableAnnotation == NullableAnnotation.Annotated && performOnlyCycleSafeValidation &&
Binder\Binder_Expressions.cs (1)
1575expression = new BoundDiscardExpression(node, NullableAnnotation.Annotated, isInferred: true, type: null);
Binder\Binder_Patterns.cs (2)
332declType: TypeWithAnnotations.Create(narrowedType, NullableAnnotation.NotAnnotated), 933return TypeWithAnnotations.Create(inputType.StrippedType(), NullableAnnotation.NotAnnotated);
Binder\Semantics\BestTypeInferrer.cs (3)
16public static NullableAnnotation GetNullableAnnotation(ArrayBuilder<TypeWithAnnotations> types) 22var result = NullableAnnotation.NotAnnotated;
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (4)
154private readonly NullableAnnotation[] _nullableAnnotationLowerBounds; 335_nullableAnnotationLowerBounds = new NullableAnnotation[methodTypeParameters.Length]; 3176var oldAnnotation = oldBound.NullableAnnotation; 3177var newAnnotation = oldAnnotation.MergeNullableAnnotation(candidate.NullableAnnotation, variance);
BoundTree\BoundDiscardExpression.cs (1)
25return this.Update(NullableAnnotation.Oblivious, this.IsInferred, binder.CreateErrorType("var"));
BoundTree\BoundExpressionWithNullability.cs (1)
11public BoundExpressionWithNullability(SyntaxNode syntax, BoundExpression expression, NullableAnnotation nullableAnnotation, TypeSymbol? type)
Compilation\CSharpCompilation.cs (7)
2190internal ArrayTypeSymbol CreateArrayTypeSymbol(TypeSymbol elementType, int rank = 1, NullableAnnotation elementNullableAnnotation = NullableAnnotation.Oblivious) 2208internal PointerTypeSymbol CreatePointerTypeSymbol(TypeSymbol elementType, NullableAnnotation elementNullableAnnotation = NullableAnnotation.Oblivious) 3833var annotation = (elementNullableAnnotations.IsDefault ? typeSymbol.NullableAnnotation : elementNullableAnnotations[i]).ToInternalAnnotation(); 3901var nullableAnnotation = memberNullableAnnotations.IsDefault ? NullableAnnotation.Oblivious : memberNullableAnnotations[i].ToInternalAnnotation();
FlowAnalysis\NullableWalker.cs (32)
111public VisitResult(TypeSymbol? type, NullableAnnotation annotation, NullableFlowState state) 2200case NullableAnnotation.Oblivious: 2201case NullableAnnotation.Annotated: 3764var result = new VisitResult(objectInitializer.Type, NullableAnnotation.NotAnnotated, NullableFlowState.NotNull); 3953SetAnalyzedNullability(node.ImplicitReceiverOpt, new VisitResult(node.ImplicitReceiverOpt.Type, NullableAnnotation.NotAnnotated, NullableFlowState.NotNull)); 4061return GetOrCreatePlaceholderSlot(node, TypeWithAnnotations.Create(node.Type, NullableAnnotation.NotAnnotated)); 5110targetType = TypeWithAnnotations.Create(node.Type, NullableAnnotation.NotAnnotated); 5444var lValueAnnotation = consequenceLValue.NullableAnnotation.EnsureCompatible(alternativeLValue.NullableAnnotation); 7090private static NullableAnnotation GetNullableAnnotation(BoundExpression expr) 7097return expr.ConstantValueOpt == ConstantValue.NotAvailable || !expr.ConstantValueOpt.IsNull || expr.IsSuppressed ? NullableAnnotation.NotAnnotated : NullableAnnotation.Annotated; 7104return NullableAnnotation.NotAnnotated; 7107return NullableAnnotation.Oblivious; 7160return new BoundExpressionWithNullability(argument.Syntax, argument, NullableAnnotation.Oblivious, type: null); 8268dependsOnTypeParameter(typeParameter1, (TypeParameterSymbol)targetType.Type, NullableAnnotation.NotAnnotated, out var annotation)) 8270return (annotation == NullableAnnotation.Annotated) ? NullableFlowState.MaybeDefault : NullableFlowState.MaybeNull; 8301bool dependsOn = dependsOnTypeParameter(typeParameter1, typeParameter2, NullableAnnotation.NotAnnotated, out var annotation); 8305return (annotation == NullableAnnotation.Annotated) ? NullableFlowState.MaybeDefault : NullableFlowState.MaybeNull; 8338static bool dependsOnTypeParameter(TypeParameterSymbol typeParameter1, TypeParameterSymbol typeParameter2, NullableAnnotation typeParameter1Annotation, out NullableAnnotation annotation) 8346var combinedAnnotation = NullableAnnotation.Annotated; 8350dependsOnTypeParameter(constraintTypeParameter, typeParameter2, constraintType.NullableAnnotation, out var constraintAnnotation)) 8833var argTypeWithAnnotations = TypeWithAnnotations.Create(argType, NullableAnnotation.NotAnnotated); 9020var lvalueResult = TypeWithAnnotations.Create(node.Type, NullableAnnotation.NotAnnotated); 9300placeholderArgs.Add(new BoundExpressionWithNullability(variables[i].Expression.Syntax, variables[i].Expression, NullableAnnotation.Oblivious, conversion.DeconstructionInfo.OutputPlaceholders[i].Type)); 10088TypeWithAnnotations.Create(node.EnumeratorInfoOpt.ElementType, NullableAnnotation.NotAnnotated).ToTypeWithState(); 10758var result = TypeWithAnnotations.Create(node.Type, NullableAnnotation.Oblivious); 10864var result = TypeWithAnnotations.Create(node.Type, NullableAnnotation.Oblivious); 11035var result = TypeWithAnnotations.Create(node.Type, node.IsInferred ? NullableAnnotation.Annotated : node.NullableAnnotation);
FlowAnalysis\NullableWalker_Patterns.cs (2)
438outputSlot = makeDagTempSlot(TypeWithAnnotations.Create(e.Type, NullableAnnotation.NotAnnotated), output); 799var type = TypeWithAnnotations.Create(t, NullableAnnotation.Annotated);
Generated\BoundNodes.xml.Generated.cs (10)
1532public BoundRefValueOperator(SyntaxNode syntax, NullableAnnotation nullableAnnotation, BoundExpression operand, TypeSymbol type, bool hasErrors = false) 1544public NullableAnnotation NullableAnnotation { get; } 1550public BoundRefValueOperator Update(NullableAnnotation nullableAnnotation, BoundExpression operand, TypeSymbol type) 8209public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type, bool hasErrors) 8216public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type) 8224public NullableAnnotation NullableAnnotation { get; } 8230public BoundDiscardExpression Update(NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type) 8442public BoundExpressionWithNullability(SyntaxNode syntax, BoundExpression expression, NullableAnnotation nullableAnnotation, TypeSymbol? type, bool hasErrors = false) 8454public NullableAnnotation NullableAnnotation { get; } 8459public BoundExpressionWithNullability Update(BoundExpression expression, NullableAnnotation nullableAnnotation, TypeSymbol? type)
Symbols\AliasSymbol.cs (1)
414annotatedNamespaceOrType.TypeWithAnnotations.NullableAnnotation == NullableAnnotation.Annotated &&
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.ToStringMethodSymbol.cs (1)
49get { return TypeWithAnnotations.Create(this.Manager.System_String, NullableAnnotation.NotAnnotated); }
Symbols\ConstraintsHelper.cs (8)
1134case NullableAnnotation.Annotated: 1136case NullableAnnotation.Oblivious: 1173case NullableAnnotation.Oblivious: 1174case NullableAnnotation.Annotated: 1523case NullableAnnotation.Annotated: 1525case NullableAnnotation.NotAnnotated: 1527case NullableAnnotation.Oblivious: 1545case NullableAnnotation.Annotated:
Symbols\Metadata\PE\SymbolFactory.cs (1)
170return TypeWithAnnotations.Create(type, NullableAnnotation.Oblivious, CSharpCustomModifier.Convert(customModifiers));
Symbols\NullableAnnotation.cs (6)
13/// The order of values here is used in the computation of <see cref="NullableAnnotationExtensions.Meet(NullableAnnotation, NullableAnnotation)"/>, 14/// <see cref="NullableAnnotationExtensions.Join(NullableAnnotation, NullableAnnotation)"/>, and 15/// <see cref="NullableAnnotationExtensions.EnsureCompatible(NullableAnnotation, NullableAnnotation)"/>. If the order here is changed
Symbols\NullableAnnotationExtensions.cs (44)
16public static bool IsAnnotated(this NullableAnnotation annotation) => annotation == NullableAnnotation.Annotated; 18public static bool IsNotAnnotated(this NullableAnnotation annotation) => annotation == NullableAnnotation.NotAnnotated; 20public static bool IsOblivious(this NullableAnnotation annotation) => annotation == NullableAnnotation.Oblivious; 26public static NullableAnnotation Join(this NullableAnnotation a, NullableAnnotation b) 28Debug.Assert(a != NullableAnnotation.Ignored); 29Debug.Assert(b != NullableAnnotation.Ignored); 37public static NullableAnnotation Meet(this NullableAnnotation a, NullableAnnotation b) 39Debug.Assert(a != NullableAnnotation.Ignored); 40Debug.Assert(b != NullableAnnotation.Ignored); 48public static NullableAnnotation EnsureCompatible(this NullableAnnotation a, NullableAnnotation b) 50Debug.Assert(a != NullableAnnotation.Ignored); 51Debug.Assert(b != NullableAnnotation.Ignored); 54(NullableAnnotation.Oblivious, _) => b, 55(_, NullableAnnotation.Oblivious) => a, 63public static NullableAnnotation MergeNullableAnnotation(this NullableAnnotation a, NullableAnnotation b, VarianceKind variance) 65Debug.Assert(a != NullableAnnotation.Ignored); 66Debug.Assert(b != NullableAnnotation.Ignored); 77/// The attribute (metadata) representation of <see cref="NullableAnnotation.NotAnnotated"/>. 82/// The attribute (metadata) representation of <see cref="NullableAnnotation.Annotated"/>. 87/// The attribute (metadata) representation of <see cref="NullableAnnotation.Oblivious"/>. 98CSharp.NullableAnnotation internalAnnotation = annotation.ToInternalAnnotation(); 102internal static NullabilityInfo ToNullabilityInfo(this NullableAnnotation annotation, TypeSymbol type) 126internal static CodeAnalysis.NullableAnnotation ToPublicAnnotation(TypeSymbol? type, NullableAnnotation annotation) 128Debug.Assert(annotation != NullableAnnotation.Ignored); 131NullableAnnotation.Annotated => CodeAnalysis.NullableAnnotation.Annotated, 132NullableAnnotation.NotAnnotated => CodeAnalysis.NullableAnnotation.NotAnnotated, 137NullableAnnotation.Oblivious when type?.IsValueType == true => CodeAnalysis.NullableAnnotation.NotAnnotated, 138NullableAnnotation.Oblivious => CodeAnalysis.NullableAnnotation.None, 140NullableAnnotation.Ignored => CodeAnalysis.NullableAnnotation.None, 148internal static CSharp.NullableAnnotation ToInternalAnnotation(this CodeAnalysis.NullableAnnotation annotation) => 151CodeAnalysis.NullableAnnotation.None => CSharp.NullableAnnotation.Oblivious, 152CodeAnalysis.NullableAnnotation.NotAnnotated => CSharp.NullableAnnotation.NotAnnotated, 153CodeAnalysis.NullableAnnotation.Annotated => CSharp.NullableAnnotation.Annotated,
Symbols\PublicModel\Symbol.cs (3)
25builder.Add(TypeWithAnnotations.Create(type, (typeArg?.NullableAnnotation.ToInternalAnnotation() ?? NullableAnnotation.NotAnnotated))); 48var annotation = typeArgumentNullableAnnotations.IsDefault ? NullableAnnotation.Oblivious : typeArgumentNullableAnnotations[i].ToInternalAnnotation();
Symbols\Source\IndexedTypeParameterSymbol.cs (1)
113builder.Add(TypeWithAnnotations.Create(GetTypeParameter(i), NullableAnnotation.Ignored));
Symbols\Source\ThisParameterSymbol.cs (1)
33=> TypeWithAnnotations.Create(_containingType, NullableAnnotation.NotAnnotated);
Symbols\Synthesized\Records\SynthesizedRecordBaseEquals.cs (1)
39TypeWithAnnotations.Create(ContainingType.BaseTypeNoUseSiteDiagnostics, NullableAnnotation.Annotated),
Symbols\Synthesized\Records\SynthesizedRecordEqualityContractProperty.cs (1)
76return (TypeWithAnnotations.Create(Binder.GetWellKnownType(DeclaringCompilation, WellKnownType.System_Type, diagnostics, Location), NullableAnnotation.NotAnnotated),
Symbols\Synthesized\Records\SynthesizedRecordEqualityOperatorBase.cs (3)
68var annotation = ContainingType.IsRecordStruct ? NullableAnnotation.Oblivious : NullableAnnotation.Annotated;
Symbols\Synthesized\Records\SynthesizedRecordEquals.cs (3)
40var annotation = ContainingType.IsRecordStruct ? NullableAnnotation.Oblivious : NullableAnnotation.Annotated;
Symbols\Synthesized\Records\SynthesizedRecordObjEquals.cs (3)
31var annotation = ContainingType.IsRecordStruct ? NullableAnnotation.Oblivious : NullableAnnotation.Annotated;
Symbols\Synthesized\Records\SynthesizedRecordPrintMembers.cs (3)
92var annotation = ContainingType.IsRecordStruct ? NullableAnnotation.Oblivious : NullableAnnotation.NotAnnotated;
Symbols\Synthesized\Records\SynthesizedRecordToString.cs (3)
43var annotation = ContainingType.IsRecordStruct ? NullableAnnotation.Oblivious : NullableAnnotation.NotAnnotated;
Symbols\TypeMap.cs (1)
33return typeParameters.SelectAsArray(static (tp) => TypeWithAnnotations.Create(tp, NullableAnnotation.Ignored));
Symbols\TypeSymbol.cs (1)
2449internal CodeAnalysis.NullableAnnotation DefaultNullableAnnotation => NullableAnnotationExtensions.ToPublicAnnotation(this, NullableAnnotation.Oblivious);
Symbols\TypeWithAnnotations.cs (49)
48public readonly NullableAnnotation NullableAnnotation; 50private TypeWithAnnotations(TypeSymbol defaultType, NullableAnnotation nullableAnnotation, Extensions extensions) 52Debug.Assert(defaultType?.IsNullableType() != true || nullableAnnotation == NullableAnnotation.Annotated); 79return Create(typeSymbol, nullableAnnotation: isAnnotated ? NullableAnnotation.Annotated : isNullableEnabled ? NullableAnnotation.NotAnnotated : NullableAnnotation.Oblivious); 82internal static TypeWithAnnotations Create(TypeSymbol typeSymbol, NullableAnnotation nullableAnnotation = NullableAnnotation.Oblivious, ImmutableArray<CustomModifier> customModifiers = default) 89Debug.Assert(nullableAnnotation != NullableAnnotation.Ignored || typeSymbol.IsTypeParameter()); 92case NullableAnnotation.Oblivious: 93case NullableAnnotation.NotAnnotated: 97nullableAnnotation = NullableAnnotation.Annotated; 112return Create(Type, NullableAnnotation.Annotated, CustomModifiers); 122return Create(Type, NullableAnnotation.NotAnnotated, CustomModifiers); 126internal NullableAnnotation GetValueNullableAnnotation() 135return NullableAnnotation.Annotated; 140return NullableAnnotation.Annotated; 152case NullableAnnotation.Oblivious: 153case NullableAnnotation.Annotated: 156case NullableAnnotation.NotAnnotated: 165private static TypeWithAnnotations CreateNonLazyType(TypeSymbol typeSymbol, NullableAnnotation nullableAnnotation, ImmutableArray<CustomModifier> customModifiers) 172return new TypeWithAnnotations(defaultType: underlying.DefaultType, nullableAnnotation: NullableAnnotation.Annotated, Extensions.CreateLazy(compilation, underlying)); 196return CreateNonLazyType(typeSymbol, NullableAnnotation.Annotated, this.CustomModifiers); 236NullableAnnotation nullableAnnotation = this.NullableAnnotation.MergeNullableAnnotation(other.NullableAnnotation, variance); 353var thisAnnotation = NullableAnnotation; 354var otherAnnotation = other.NullableAnnotation; 431Debug.Assert(NullableAnnotation != NullableAnnotation.Ignored); 441Debug.Assert(NullableAnnotation != NullableAnnotation.Ignored); 462else if (Is((TypeParameterSymbol)typeSymbol) && newTypeWithModifiers.NullableAnnotation != NullableAnnotation.Ignored) 472NullableAnnotation newAnnotation; 473Debug.Assert(newTypeWithModifiers.Type is not IndexedTypeParameterSymbol || newTypeWithModifiers.NullableAnnotation == NullableAnnotation.Ignored); 477newAnnotation = NullableAnnotation.Annotated; 479else if (newTypeWithModifiers.NullableAnnotation == NullableAnnotation.Ignored) 483else if (NullableAnnotation != NullableAnnotation.Oblivious) 494else if (newTypeWithModifiers.NullableAnnotation != NullableAnnotation.Oblivious) 568typeWithAnnotationsPredicate: (t, a, b) => t.NullableAnnotation != NullableAnnotation.Oblivious && !t.Type.IsErrorType() && !t.Type.IsValueType, 605var annotation = typeWithAnnotations.NullableAnnotation; 681if (result.NullableAnnotation != NullableAnnotation.Oblivious && 684result = CreateNonLazyType(newTypeSymbol, NullableAnnotation.Oblivious, result.CustomModifiers); 704return CreateNonLazyType(typeSymbol, NullableAnnotation.NotAnnotated, CustomModifiers); 712if (NullableAnnotation != NullableAnnotation.Oblivious) 716return CreateNonLazyType(newTypeSymbol, NullableAnnotation.Oblivious, CustomModifiers); 784static NullableFlowState getFlowState(TypeSymbol type, NullableAnnotation annotation) 792return annotation switch { NullableAnnotation.Annotated => NullableFlowState.MaybeDefault, NullableAnnotation.NotAnnotated => NullableFlowState.MaybeNull, _ => NullableFlowState.NotNull }; 796return annotation switch { NullableAnnotation.Annotated => NullableFlowState.MaybeDefault, _ => NullableFlowState.NotNull }; 802return annotation switch { NullableAnnotation.Annotated => NullableFlowState.MaybeNull, _ => NullableFlowState.NotNull }; 893return CreateNonLazyType(type.DefaultType, NullableAnnotation.Annotated, _customModifiers); 899return CreateNonLazyType(defaultType, defaultType.IsNullableType() ? type.NullableAnnotation : NullableAnnotation.NotAnnotated, _customModifiers);
Symbols\TypeWithState.cs (6)
89var type = TypeWithAnnotations.Create(Type, NullableAnnotation.NotAnnotated); 92NullableAnnotation annotation = asAnnotatedType ? 93(Type?.IsValueType == true ? NullableAnnotation.NotAnnotated : NullableAnnotation.Annotated) : 94(State.IsNotNull() || Type?.CanContainNull() == false ? NullableAnnotation.NotAnnotated : NullableAnnotation.Annotated);
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (5)
CodeGen\CodeGenLocalFunctionTests.cs (2)
5363Assert.Equal(NullableAnnotation.Annotated, localFn1.ReturnTypeWithAnnotations.NullableAnnotation); 5367Assert.Equal(NullableAnnotation.Annotated, param.TypeWithAnnotations.NullableAnnotation);
CodeGen\CodeGenTupleTest.cs (3)
29027var obliviousObject = TypeWithAnnotations.Create(@object, NullableAnnotation.Oblivious); 29044var nullableObject = TypeWithAnnotations.Create(@object, NullableAnnotation.Annotated); 29045var nonNullableObject = TypeWithAnnotations.Create(@object, NullableAnnotation.NotAnnotated);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (238)
Semantics\DelegateTypeTests.cs (4)
12256var funcOfObjectNullable = funcOfT.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(objectType, NullableAnnotation.Annotated))); 12257var funcOfStringNullable = funcOfT.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(stringType, NullableAnnotation.Annotated))); 12258var funcOfStringNotNullable = funcOfT.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(stringType, NullableAnnotation.NotAnnotated))); 12274var setNotNullable = (TypeWithAnnotations type) => TypeWithAnnotations.Create(type.Type, NullableAnnotation.NotAnnotated);
Semantics\NullableReferenceTypesTests.cs (234)
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); 11168verify("C1.F1", "System.String", NullableAnnotation.Oblivious); 11169verify("C1.F2", "System.String?", NullableAnnotation.Annotated); 11170verify("C1.F3", "System.Int32", NullableAnnotation.Oblivious); 11171verify("C1.F4", "System.Int32?", NullableAnnotation.Annotated); 11172verify("C1.F5", "System.Int32?", NullableAnnotation.Annotated); 11173verify("C2.F1", "System.String", NullableAnnotation.Oblivious); 11174verify("C2.F2", "System.String?", NullableAnnotation.Annotated); 11175verify("C2.F3", "System.Int32", NullableAnnotation.Oblivious); 11176verify("C2.F4", "System.Int32?", NullableAnnotation.Annotated); 11177verify("C2.F5", "System.Int32?", NullableAnnotation.Annotated); 11178verify("C3.F1", "System.String!", NullableAnnotation.NotAnnotated); 11179verify("C3.F2", "System.String?", NullableAnnotation.Annotated); 11180verify("C3.F3", "System.Int32", NullableAnnotation.NotAnnotated); 11181verify("C3.F4", "System.Int32?", NullableAnnotation.Annotated); 11182verify("C3.F5", "System.Int32?", NullableAnnotation.Annotated); 11186void verify(string methodName, string displayName, NullableAnnotation nullableAnnotation) 11264verify("C1.F1", "T", NullableAnnotation.Oblivious); 11265verify("C1.F2", "T?", NullableAnnotation.Annotated); 11266verify("C1.F3", "T", NullableAnnotation.Oblivious); 11267verify("C1.F4", "T?", NullableAnnotation.Annotated); 11268verify("C1.F5", "T", NullableAnnotation.Oblivious); 11269verify("C1.F6", "T?", NullableAnnotation.Annotated); 11270verify("C1.F7", "T?", NullableAnnotation.Annotated); 11271verify("C2.F1", "T", NullableAnnotation.Oblivious); 11272verify("C2.F2", "T?", NullableAnnotation.Annotated); 11273verify("C2.F3", "T", NullableAnnotation.Oblivious); 11274verify("C2.F4", "T?", NullableAnnotation.Annotated); 11275verify("C2.F5", "T", NullableAnnotation.Oblivious); 11276verify("C2.F6", "T?", NullableAnnotation.Annotated); 11277verify("C2.F7", "T?", NullableAnnotation.Annotated); 11278verify("C3.F1", "T", NullableAnnotation.NotAnnotated); 11279verify("C3.F2", "T?", NullableAnnotation.Annotated); 11280verify("C3.F3", "T!", NullableAnnotation.NotAnnotated); 11281verify("C3.F4", "T?", NullableAnnotation.Annotated); 11282verify("C3.F5", "T", NullableAnnotation.NotAnnotated); 11283verify("C3.F6", "T?", NullableAnnotation.Annotated); 11284verify("C3.F7", "T?", NullableAnnotation.Annotated); 11289void verify(string methodName, string displayName, NullableAnnotation 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); 109385m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.Annotated))), 109386m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.NotAnnotated))), 109387m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.Oblivious))) 109392m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.Annotated))), 109393m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.NotAnnotated))), 109394m1.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(a, NullableAnnotation.Oblivious))) 109751Assert.Equal(NullableAnnotation.NotAnnotated, f1.TypeWithAnnotations.NullableAnnotation); 109776Assert.Equal(NullableAnnotation.Oblivious, f1.TypeWithAnnotations.NullableAnnotation); 112067var c2 = cDefinition.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(cDefinition.TypeParameters.Single(), NullableAnnotation.NotAnnotated))); 112079var c3 = cDefinition.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(cDefinition.TypeParameters.Single(), NullableAnnotation.Annotated))); 112109var i1 = iDefinition.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(iDefinition.TypeParameters.Single(), NullableAnnotation.Annotated))); 112118var c2 = cDefinition.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(cDefinition.TypeParameters.Single(), NullableAnnotation.NotAnnotated))); 112130var i2b = i2.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(iDefinition.TypeParameters.Single(), NullableAnnotation.Annotated))); 112135var i2c = i2.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(i2.TypeParameters.Single(), NullableAnnotation.Annotated))); 112139var c3 = cDefinition.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(cDefinition.TypeParameters.Single(), NullableAnnotation.Annotated))); 112144var i3b = i3.Construct(ImmutableArray.Create(TypeWithAnnotations.Create(i3.TypeParameters.Single(), NullableAnnotation.Annotated))); 123106private static readonly NullableAnnotation[] s_AllNullableAnnotations = ((NullableAnnotation[])Enum.GetValues(typeof(NullableAnnotation))).Where(n => n != NullableAnnotation.Ignored).ToArray(); 123112var inputs = new[] { NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }; 123113Func<int, int, NullableAnnotation> getResult = (i, j) => NullableAnnotationExtensions.Join(inputs[i], inputs[j]); 123115var expected = new NullableAnnotation[3, 3] 123117{ NullableAnnotation.Annotated, NullableAnnotation.Annotated, NullableAnnotation.Annotated }, 123118{ NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.Oblivious }, 123119{ NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }, 123144var inputs = new[] { NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }; 123145Func<int, int, NullableAnnotation> getResult = (i, j) => NullableAnnotationExtensions.Meet(inputs[i], inputs[j]); 123147var expected = new NullableAnnotation[3, 3] 123149{ NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }, 123150{ NullableAnnotation.Oblivious, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }, 123151{ NullableAnnotation.NotAnnotated, NullableAnnotation.NotAnnotated, NullableAnnotation.NotAnnotated }, 123175var inputs = new[] { NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }; 123176Func<int, int, NullableAnnotation> getResult = (i, j) => NullableAnnotationExtensions.EnsureCompatible(inputs[i], inputs[j]); 123178var expected = new NullableAnnotation[3, 3] 123180{ NullableAnnotation.Annotated, NullableAnnotation.Annotated, NullableAnnotation.NotAnnotated }, 123181{ NullableAnnotation.Annotated, NullableAnnotation.Oblivious, NullableAnnotation.NotAnnotated }, 123182{ NullableAnnotation.NotAnnotated, NullableAnnotation.NotAnnotated, NullableAnnotation.NotAnnotated }, 123188private static void AssertEqual(NullableAnnotation[,] expected, Func<int, int, NullableAnnotation> getResult, int size) 123190AssertEx.Equal<NullableAnnotation>(expected, getResult, (na1, na2) => na1 == na2, na => $"NullableAnnotation.{na}", "{0,-32:G}", size); 123201foreach (var a in s_AllNullableAnnotations) 123203foreach (var b in s_AllNullableAnnotations) 123227foreach (var a in s_AllNullableAnnotations) 123229foreach (var b in s_AllNullableAnnotations) 123231foreach (var c in s_AllNullableAnnotations) 123233var leftFirst = a.Join(b).Join(c); 123234var rightFirst = a.Join(b.Join(c)); 123261foreach (var a in s_AllNullableAnnotations) 123263foreach (var b in s_AllNullableAnnotations) 123265foreach (var c in s_AllNullableAnnotations) 123267var leftFirst = a.Meet(b).Meet(c); 123268var rightFirst = a.Meet(b.Meet(c)); 123296foreach (var a in s_AllNullableAnnotations) 123298foreach (var b in s_AllNullableAnnotations) 123300foreach (var c in s_AllNullableAnnotations) 123304var leftFirst = a.EnsureCompatible(b).EnsureCompatible(c); 123305var rightFirst = a.EnsureCompatible(b.EnsureCompatible(c)); 123316foreach (var a in s_AllNullableAnnotations) 123318foreach (var b in s_AllNullableAnnotations) 123320var leftFirst = a.Join(b); 123321var rightFirst = b.Join(a); 123345foreach (var a in s_AllNullableAnnotations) 123347foreach (var b in s_AllNullableAnnotations) 123349var leftFirst = a.Meet(b); 123350var rightFirst = b.Meet(a); 123373foreach (var a in s_AllNullableAnnotations) 123375foreach (var b in s_AllNullableAnnotations) 123377var leftFirst = a.EnsureCompatible(b); 123378var rightFirst = b.EnsureCompatible(a); 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); 150441VerifyVariableAnnotation(model, locals[0], "T? t1", NullableAnnotation.Annotated); 150442VerifyVariableAnnotation(model, locals[1], "T? t2", NullableAnnotation.Annotated); 150443VerifyVariableAnnotation(model, locals[2], "T? t3", NullableAnnotation.Annotated); 150444VerifyVariableAnnotation(model, locals[3], "T? t4", NullableAnnotation.Annotated); 150445VerifyVariableAnnotation(model, locals[4], "T? t5", NullableAnnotation.Annotated); 150510VerifyVariableAnnotation(model, locals[0], "T? y1", NullableAnnotation.Annotated); 150511VerifyVariableAnnotation(model, locals[1], "T? y2", NullableAnnotation.Annotated); 150512VerifyVariableAnnotation(model, locals[2], "T? y3", NullableAnnotation.Annotated); 150513VerifyVariableAnnotation(model, locals[3], "T? y4", NullableAnnotation.Annotated); 150514VerifyVariableAnnotation(model, locals[4], "U? y5", NullableAnnotation.Annotated); 150517private static void VerifyVariableAnnotation(SemanticModel model, VariableDeclaratorSyntax syntax, string expectedDisplay, NullableAnnotation expectedAnnotation) 150522(expectedAnnotation == NullableAnnotation.Annotated) ? CodeAnalysis.NullableAnnotation.Annotated : CodeAnalysis.NullableAnnotation.NotAnnotated,
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (3)
Symbols\Source\UpdatedContainingSymbolAndNullableAnntotationTests.cs (3)
43var wrappedLocal1 = UpdatedContainingSymbolAndNullableAnnotationLocal.CreateForTest(local1, m2, TypeWithAnnotations.Create(local1.Type, NullableAnnotation.Annotated)); 44var wrappedLocal1a = UpdatedContainingSymbolAndNullableAnnotationLocal.CreateForTest(local1, m2, TypeWithAnnotations.Create(local1.Type, NullableAnnotation.Annotated)); 45var wrappedLocal2 = UpdatedContainingSymbolAndNullableAnnotationLocal.CreateForTest(local2, m2, TypeWithAnnotations.Create(local1.Type, NullableAnnotation.NotAnnotated));
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
UsesIsNullableVisitor.cs (1)
158return (type.NullableAnnotation != NullableAnnotation.Oblivious && typeSymbol.IsReferenceType && !typeSymbol.IsErrorType()) ||