Merge
[mono.git] / mcs / mcs / assign.cs
index 61cb8e239275e94c9375e11e2958f804567b6f8d..f2ae0265717807d9bd78c7896ec42b6c7cb65b82 100644 (file)
@@ -392,9 +392,9 @@ namespace Mono.CSharp {
                        return System.Linq.Expressions.Expression.Assign (target_object, source_object);
                }
 #endif
-               protected virtual Expression ResolveConversions (ResolveContext ec)
+               protected virtual Expression ResolveConversions (ResolveContext rc)
                {
-                       source = Convert.ImplicitConversionRequired (ec, source, target.Type, source.Location);
+                       source = Convert.ImplicitConversionRequiredEnhanced (rc, source, target.Type, source.Location);
                        if (source == null)
                                return null;
 
@@ -565,13 +565,18 @@ namespace Mono.CSharp {
                                return null;
 
                        if (resolved == null) {
-                               var ctx = new FieldInitializerContext (mc, ec);
-                               resolved = base.DoResolve (ctx) as ExpressionStatement;
+                               resolved = ResolveInitializer (ec);
                        }
 
                        return resolved;
                }
 
+               protected virtual ExpressionStatement ResolveInitializer (ResolveContext rc)
+               {
+                       var ctx = new FieldInitializerContext (mc, rc);
+                       return base.DoResolve (ctx) as ExpressionStatement;
+               }
+
                public override void EmitStatement (EmitContext ec)
                {
                        if (resolved == null)