Rules\ArithmeticLiteral.cs (131)
73private static Dictionary<Type, TypeFlags> supportedTypes = CreateSupportedTypesDictionary();
110static private Dictionary<Type, TypeFlags> CreateSupportedTypesDictionary()
112Dictionary<Type, TypeFlags> dictionary = new Dictionary<Type, TypeFlags>(26);
113dictionary.Add(typeof(byte), TypeFlags.UInt16);
114dictionary.Add(typeof(byte?), TypeFlags.Nullable | TypeFlags.UInt16);
115dictionary.Add(typeof(sbyte), TypeFlags.Int32);
116dictionary.Add(typeof(sbyte?), TypeFlags.Nullable | TypeFlags.Int32);
117dictionary.Add(typeof(char), TypeFlags.UInt16);
118dictionary.Add(typeof(char?), TypeFlags.Nullable | TypeFlags.UInt16);
119dictionary.Add(typeof(short), TypeFlags.Int32);
120dictionary.Add(typeof(short?), TypeFlags.Nullable | TypeFlags.Int32);
121dictionary.Add(typeof(int), TypeFlags.Int32);
122dictionary.Add(typeof(int?), TypeFlags.Nullable | TypeFlags.Int32);
123dictionary.Add(typeof(long), TypeFlags.Int64);
124dictionary.Add(typeof(long?), TypeFlags.Nullable | TypeFlags.Int64);
125dictionary.Add(typeof(ushort), TypeFlags.UInt16);
126dictionary.Add(typeof(ushort?), TypeFlags.Nullable | TypeFlags.UInt16);
127dictionary.Add(typeof(uint), TypeFlags.UInt32);
128dictionary.Add(typeof(uint?), TypeFlags.Nullable | TypeFlags.UInt32);
129dictionary.Add(typeof(ulong), TypeFlags.UInt64);
130dictionary.Add(typeof(ulong?), TypeFlags.Nullable | TypeFlags.UInt64);
131dictionary.Add(typeof(float), TypeFlags.Single);
132dictionary.Add(typeof(float?), TypeFlags.Nullable | TypeFlags.Single);
133dictionary.Add(typeof(double), TypeFlags.Double);
134dictionary.Add(typeof(double?), TypeFlags.Nullable | TypeFlags.Double);
135dictionary.Add(typeof(decimal), TypeFlags.Decimal);
136dictionary.Add(typeof(decimal?), TypeFlags.Nullable | TypeFlags.Decimal);
137dictionary.Add(typeof(bool), TypeFlags.Boolean);
138dictionary.Add(typeof(bool?), TypeFlags.Nullable | TypeFlags.Boolean);
139dictionary.Add(typeof(string), TypeFlags.String);
307TypeFlags lhsType, rhsType;
337private static Type ResultType(CodeBinaryOperatorType operation, TypeFlags lhsType, TypeFlags rhsType)
339TypeFlags combined = (lhsType | rhsType);
340bool nullable = (combined & TypeFlags.Nullable) == TypeFlags.Nullable;
341if (nullable) combined ^= TypeFlags.Nullable;
347if ((lhsType == TypeFlags.String) || (rhsType == TypeFlags.String))
357case TypeFlags.Decimal:
358case TypeFlags.Decimal | TypeFlags.UInt16:
359case TypeFlags.Decimal | TypeFlags.Int32:
360case TypeFlags.Decimal | TypeFlags.UInt32:
361case TypeFlags.Decimal | TypeFlags.Int64:
362case TypeFlags.Decimal | TypeFlags.UInt64:
364case TypeFlags.Double:
365case TypeFlags.Double | TypeFlags.UInt16:
366case TypeFlags.Double | TypeFlags.Int32:
367case TypeFlags.Double | TypeFlags.UInt32:
368case TypeFlags.Double | TypeFlags.Int64:
369case TypeFlags.Double | TypeFlags.UInt64:
370case TypeFlags.Double | TypeFlags.Single:
372case TypeFlags.Single:
373case TypeFlags.Single | TypeFlags.UInt16:
374case TypeFlags.Single | TypeFlags.Int32:
375case TypeFlags.Single | TypeFlags.UInt32:
376case TypeFlags.Single | TypeFlags.Int64:
377case TypeFlags.Single | TypeFlags.UInt64:
379case TypeFlags.Int64:
380case TypeFlags.Int64 | TypeFlags.UInt16:
381case TypeFlags.Int64 | TypeFlags.Int32:
382case TypeFlags.Int64 | TypeFlags.UInt32:
383case TypeFlags.Int32 | TypeFlags.UInt32:
385case TypeFlags.UInt64:
386case TypeFlags.UInt64 | TypeFlags.UInt16:
387case TypeFlags.UInt64 | TypeFlags.UInt32:
389case TypeFlags.Int32:
390case TypeFlags.UInt16:
391case TypeFlags.Int32 | TypeFlags.UInt16:
393case TypeFlags.UInt32:
394case TypeFlags.UInt32 | TypeFlags.UInt16:
403case TypeFlags.Int64:
404case TypeFlags.Int64 | TypeFlags.UInt16:
405case TypeFlags.Int64 | TypeFlags.Int32:
406case TypeFlags.Int64 | TypeFlags.UInt32:
407case TypeFlags.Int32 | TypeFlags.UInt32:
409case TypeFlags.UInt64:
410case TypeFlags.UInt64 | TypeFlags.UInt16:
411case TypeFlags.UInt64 | TypeFlags.UInt32:
413case TypeFlags.Int32:
414case TypeFlags.UInt16:
415case TypeFlags.Int32 | TypeFlags.UInt16:
417case TypeFlags.UInt32:
418case TypeFlags.UInt32 | TypeFlags.UInt16:
420case TypeFlags.Boolean: