internal override bool ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray <byte> transforms, ref int position, out TypeSymbol result) { TypeSymbolWithAnnotations oldElementType = ElementType; TypeSymbolWithAnnotations newElementType; if (!oldElementType.ApplyNullableTransforms(defaultTransformFlag, transforms, ref position, out newElementType)) { result = this; return(false); } result = WithElementType(newElementType); return(true); }
internal static TypeSymbolWithAnnotations TransformType(TypeSymbolWithAnnotations metadataType, ImmutableArray <bool> nullableTransformFlags, INonNullTypesContext nonNullTypesContext) { int position = 0; TypeSymbolWithAnnotations result; if (metadataType.ApplyNullableTransforms(nullableTransformFlags, nonNullTypesContext, ref position, out result) && (nullableTransformFlags.IsDefault || position == nullableTransformFlags.Length)) { return(result); } // No NullableAttribute applied to the target symbol, or flags do not line-up, return unchanged metadataType. return(metadataType); }
internal static TypeSymbolWithAnnotations TransformType(TypeSymbolWithAnnotations metadataType, byte defaultTransformFlag, ImmutableArray <byte> nullableTransformFlags) { if (nullableTransformFlags.IsDefault && defaultTransformFlag == 0) { return(metadataType); } int position = 0; TypeSymbolWithAnnotations result; if (metadataType.ApplyNullableTransforms(defaultTransformFlag, nullableTransformFlags, ref position, out result) && (nullableTransformFlags.IsDefault || position == nullableTransformFlags.Length)) { return(result); } // No NullableAttribute applied to the target symbol, or flags do not line-up, return unchanged metadataType. return(metadataType); }