Merge pull request #498 from Unroll-Me/master
[mono.git] / mcs / class / System.Core / System.Linq.Expressions / Expression.cs
index b87a634af869c348171f203529453e1663fe8338..bfe939a5cb0901bb47395d82de7a18de15840b68 100644 (file)
@@ -871,6 +871,8 @@ namespace System.Linq.Expressions {
                                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:
@@ -1181,7 +1183,7 @@ namespace System.Linq.Expressions {
                static bool IsConvertiblePrimitive (Type type)
                {
                        var t = type.GetNotNullableType ();
-
+       
                        if (t == typeof (bool))
                                return false;
 
@@ -1219,6 +1221,9 @@ namespace System.Linq.Expressions {
                        if (type.IsInterface || target.IsInterface)
                                return true;
 
+                       if (type.IsEnum && target == typeof (Enum))
+                               return true;
+
                        if (type.IsValueType || target.IsValueType)
                                return false;
 
@@ -2263,9 +2268,11 @@ namespace System.Linq.Expressions {
                // 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
        }
 }