Example #1
0
 private static Type GetWidestType(Type Type1, Type Type2)
 {
     if ((Type1 != null) && (Type2 != null))
     {
         if (!Type1.IsEnum && !Type2.IsEnum)
         {
             TypeCode typeCode = Symbols.GetTypeCode(Type1);
             TypeCode code2    = Symbols.GetTypeCode(Type2);
             if (Symbols.IsNumericType(typeCode) && Symbols.IsNumericType(code2))
             {
                 return(Symbols.MapTypeCodeToType(ConversionResolution.ForLoopWidestTypeCode[(int)typeCode][(int)code2]));
             }
         }
         Symbols.Method operatorMethod = null;
         switch (ConversionResolution.ClassifyConversion(Type2, Type1, ref operatorMethod))
         {
         case ConversionResolution.ConversionClass.Identity:
         case ConversionResolution.ConversionClass.Widening:
             return(Type2);
         }
         operatorMethod = null;
         if (ConversionResolution.ClassifyConversion(Type1, Type2, ref operatorMethod) == ConversionResolution.ConversionClass.Widening)
         {
             return(Type1);
         }
     }
     return(null);
 }