Pchp.CodeAnalysis.FlowAnalysis.TypeRefContext.ToString C# (CSharp) Method

ToString() public method

Gets string representation of types contained in given type mask.
public ToString ( TypeRefMask mask ) : string
mask TypeRefMask
return string
        public string ToString(TypeRefMask mask)
        {
            if (!mask.IsVoid)
            {
                if (mask.IsAnyType)
                    return TypeRefMask.MixedTypeName;

                //
                var types = new List<string>(1);

                // handle arrays separately
                var arrmask = mask & _isArrayMask;
                if (arrmask != 0)
                {
                    mask &= ~_isArrayMask;
                    ITypeRef elementtype = null;
                    var elementmask = GetElementType(arrmask);
                    if (elementmask.IsSingleType)
                        elementtype = GetTypes(elementmask).FirstOrDefault();

                    if (elementtype != null)
                        types.Add(elementtype.QualifiedName.ToString() + "[]");
                    else
                        types.Add(TypeRefFactory.ArrayTypeRef.QualifiedName.ToString());
                }

                //// int|double => number
                //var isNumber = (_isIntMask != 0 && _isDoubleMask != 0 && (mask & IsNumberMask) == IsNumberMask);
                //if (isNumber)
                //    mask &= ~IsNumberMask;
                
                //
                types.AddRange(GetTypes(mask).Select(t => t.QualifiedName.ToString()));

                //if (isNumber)
                //    types.Add("number");
                
                //
                if (types.Count != 0)
                {
                    types.Sort();
                    return string.Join(PHPDocBlock.TypeVarDescTag.TypeNamesSeparator.ToString(), types.Distinct());
                }
            }

            return TypeRefMask.VoidTypeName;
        }