* ILTokenizer.cs: Handle comments first, handle whitespace in hex
[mono.git] / mcs / mcs / const.cs
index 079b0aab5941caaf1d3a3a1c78e7cb67db0ba867..b3fb6ae24ddf38a2c80b118deebdb3a657e31af1 100755 (executable)
@@ -206,7 +206,7 @@ namespace Mono.CSharp {
                                value = null;
                                return false;
                        }
-                       
+
                        Expr = Expr.Resolve (const_ec);
 
                        in_transit = false;
@@ -218,15 +218,20 @@ namespace Mono.CSharp {
                                return false;
                        }
 
+                       Expression real_expr = Expr;
+
                        Constant ce = Expr as Constant;
                        if (ce == null){
                                UnCheckedExpr un_expr = Expr as UnCheckedExpr;
                                CheckedExpr ch_expr = Expr as CheckedExpr;
+                               EmptyCast ec_expr = Expr as EmptyCast;
 
                                if ((un_expr != null) && (un_expr.Expr is Constant))
                                        Expr = un_expr.Expr;
                                else if ((ch_expr != null) && (ch_expr.Expr is Constant))
                                        Expr = ch_expr.Expr;
+                               else if ((ec_expr != null) && (ec_expr.Child is Constant))
+                                       Expr = ec_expr.Child;
                                else if (Expr is ArrayCreation) {
                                        ArrayCreation ac = (ArrayCreation) Expr;
 
@@ -242,9 +247,11 @@ namespace Mono.CSharp {
                                        value = null;
                                        return false;
                                }
+
+                               ce = Expr as Constant;
                        }
 
-                       if (type != ce.Type) {
+                       if (type != real_expr.Type) {
                                ce = ChangeType (Location, ce, type);
                                if (ce == null){
                                        value = null;