return AddChecked (left, right, method);
case ExpressionType.AndAlso:
return AndAlso (left, right);
+ case ExpressionType.ArrayIndex:
+ return ArrayIndex (left, right);
case ExpressionType.Coalesce:
return Coalesce (left, right, conversion);
case ExpressionType.Divide:
static bool IsConvertiblePrimitive (Type type)
{
var t = type.GetNotNullableType ();
-
+
if (t == typeof (bool))
return false;
if (type.IsInterface || target.IsInterface)
return true;
+ if (type.IsEnum && target == typeof (Enum))
+ return true;
+
if (type.IsValueType || target.IsValueType)
return false;
// This method must be overwritten by derived classes to
// compile the expression
//
+#if !FULL_AOT_RUNTIME
internal virtual void Emit (EmitContext ec)
{
throw new NotImplementedException (String.Format ("Emit method is not implemented in expression type {0}", GetType ()));
}
+#endif
}
}