public static TypeReference CorrectLargestTypeFor(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider)
 {
     TypeReference a = StackTypeConverter.StackTypeFor(leftType);
     TypeReference reference2 = StackTypeConverter.StackTypeFor(rightType);
     if (!leftType.IsByReference)
     {
         if (rightType.IsByReference)
         {
             return rightType;
         }
         if (leftType.IsPointer)
         {
             return leftType;
         }
         if (rightType.IsPointer)
         {
             return rightType;
         }
         if ((a.MetadataType == MetadataType.Int64) || (reference2.MetadataType == MetadataType.Int64))
         {
             return typeProvider.Int64TypeReference;
         }
         if (Extensions.IsSameType(a, typeProvider.NativeIntTypeReference) || Extensions.IsSameType(reference2, typeProvider.NativeIntTypeReference))
         {
             return typeProvider.NativeIntTypeReference;
         }
         if (Extensions.IsSameType(a, typeProvider.Int32TypeReference) && Extensions.IsSameType(reference2, typeProvider.Int32TypeReference))
         {
             return typeProvider.Int32TypeReference;
         }
     }
     return leftType;
 }
Example #2
0
 public static TypeReference ResultTypeForSub(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider)
 {
     if ((leftType.MetadataType == MetadataType.Byte) || (leftType.MetadataType == MetadataType.UInt16))
     {
         return(typeProvider.Int32TypeReference);
     }
     if (leftType.MetadataType == MetadataType.Char)
     {
         return(typeProvider.Int32TypeReference);
     }
     return(CorrectLargestTypeFor(leftType, rightType, typeProvider));
 }
Example #3
0
 public static TypeReference ResultTypeForMul(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider) =>
 CorrectLargestTypeFor(leftType, rightType, typeProvider);
Example #4
0
        public static TypeReference CorrectLargestTypeFor(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider)
        {
            TypeReference a          = StackTypeConverter.StackTypeFor(leftType);
            TypeReference reference2 = StackTypeConverter.StackTypeFor(rightType);

            if (!leftType.IsByReference)
            {
                if (rightType.IsByReference)
                {
                    return(rightType);
                }
                if (leftType.IsPointer)
                {
                    return(leftType);
                }
                if (rightType.IsPointer)
                {
                    return(rightType);
                }
                if ((a.MetadataType == MetadataType.Int64) || (reference2.MetadataType == MetadataType.Int64))
                {
                    return(typeProvider.Int64TypeReference);
                }
                if (a.IsSameType(typeProvider.NativeIntTypeReference) || reference2.IsSameType(typeProvider.NativeIntTypeReference))
                {
                    return(typeProvider.NativeIntTypeReference);
                }
                if (a.IsSameType(typeProvider.Int32TypeReference) && reference2.IsSameType(typeProvider.Int32TypeReference))
                {
                    return(typeProvider.Int32TypeReference);
                }
            }
            return(leftType);
        }
 public static TypeReference ResultTypeForSub(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider)
 {
     if ((leftType.MetadataType == MetadataType.Byte) || (leftType.MetadataType == MetadataType.UInt16))
     {
         return typeProvider.Int32TypeReference;
     }
     if (leftType.MetadataType == MetadataType.Char)
     {
         return typeProvider.Int32TypeReference;
     }
     return CorrectLargestTypeFor(leftType, rightType, typeProvider);
 }
 public static TypeReference ResultTypeForMul(TypeReference leftType, TypeReference rightType, ITypeProviderService typeProvider)
 {
     return CorrectLargestTypeFor(leftType, rightType, typeProvider);
 }