Example #1
0
        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);
        }
Example #2
0
        internal override bool ApplyNullableTransforms(ImmutableArray <bool> transforms, INonNullTypesContext nonNullTypesContext, ref int position, out TypeSymbol result)
        {
            TypeSymbolWithAnnotations oldElementType = ElementType;
            TypeSymbolWithAnnotations newElementType;

            if (!oldElementType.ApplyNullableTransforms(transforms, nonNullTypesContext, ref position, out newElementType))
            {
                result = this;
                return(false);
            }

            result = WithElementType(newElementType);
            return(true);
        }
Example #3
0
        internal override bool ApplyNullableTransforms(ImmutableArray <bool> transforms, INonNullTypesContext nonNullTypesContext, ref int position, out TypeSymbol result)
        {
            TypeSymbolWithAnnotations oldPointedAtType = PointedAtType;
            TypeSymbolWithAnnotations newPointedAtType;

            if (!oldPointedAtType.ApplyNullableTransforms(transforms, nonNullTypesContext, ref position, out newPointedAtType))
            {
                result = this;
                return(false);
            }

            if (oldPointedAtType.IsSameAs(newPointedAtType))
            {
                result = this;
            }
            else
            {
                result = new PointerTypeSymbol(newPointedAtType);
            }

            return(true);
        }
Example #4
0
        internal override bool ApplyNullableTransforms(ImmutableArray <bool> transforms, INonNullTypesContext nonNullTypesContext, ref int position, out TypeSymbol result)
        {
            TypeSymbolWithAnnotations oldElementType = ElementType;
            TypeSymbolWithAnnotations newElementType;

            if (!oldElementType.ApplyNullableTransforms(transforms, nonNullTypesContext, ref position, out newElementType))
            {
                result = this;
                return(false);
            }

            if (oldElementType.IsSameAs(newElementType))
            {
                result = this;
            }
            else
            {
                result = IsSZArray ?
                         ArrayTypeSymbol.CreateSZArray(newElementType, _baseType) :
                         ArrayTypeSymbol.CreateMDArray(newElementType, Rank, Sizes, LowerBounds, _baseType);
            }

            return(true);
        }