Fix compilation of array initializer used inside field initializer of an anonymous...
[mono.git] / mcs / mcs / const.cs
index 64804ec65b5cb48b515be5c61dbb094bd8d3aa9c..45e54c1047e4636cfcbb20039541f712192d9d4c 100644 (file)
@@ -9,15 +9,17 @@
 // Copyright 2003-2008 Novell, Inc.
 //
 
-using System;
+#if STATIC
+using IKVM.Reflection;
+#else
 using System.Reflection;
-using System.Reflection.Emit;
+#endif
 
 namespace Mono.CSharp {
 
        public class Const : FieldBase
        {
-               public const Modifiers AllowedModifiers =
+               const Modifiers AllowedModifiers =
                        Modifiers.NEW |
                        Modifiers.PUBLIC |
                        Modifiers.PROTECTED |
@@ -44,7 +46,7 @@ namespace Mono.CSharp {
 
                        FieldAttributes field_attr = FieldAttributes.Static | ModifiersExtensions.FieldAttr (ModFlags);
                        // Decimals cannot be emitted into the constant blob.  So, convert to 'readonly'.
-                       if (member_type == TypeManager.decimal_type) {
+                       if (member_type.BuiltinType == BuiltinTypeSpec.Type.Decimal) {
                                field_attr |= FieldAttributes.InitOnly;
                        } else {
                                field_attr |= FieldAttributes.Literal;
@@ -85,10 +87,10 @@ namespace Mono.CSharp {
                public override void Emit ()
                {
                        var c = ((ConstSpec) spec).Value as Constant;
-                       if (c.Type == TypeManager.decimal_type) {
-                               Compiler.PredefinedAttributes.DecimalConstant.EmitAttribute (FieldBuilder, (decimal) c.GetValue (), c.Location);
+                       if (c.Type.BuiltinType == BuiltinTypeSpec.Type.Decimal) {
+                               Module.PredefinedAttributes.DecimalConstant.EmitAttribute (FieldBuilder, (decimal) c.GetValue (), c.Location);
                        } else {
-                               FieldBuilder.SetConstant (c.GetTypedValue ());
+                               FieldBuilder.SetConstant (c.GetValue ());
                        }
 
                        base.Emit ();
@@ -193,7 +195,7 @@ namespace Mono.CSharp {
                                        c = field.ConvertInitializer (rc, c);
 
                                if (c == null) {
-                                       if (TypeManager.IsReferenceType (field.MemberType))
+                                       if (TypeSpec.IsReferenceType (field.MemberType))
                                                Error_ConstantCanBeInitializedWithNullOnly (rc, field.MemberType, expr.Location, GetSignatureForError ());
                                        else if (!(expr is Constant))
                                                Error_ExpressionMustBeConstant (rc, expr.Location, GetSignatureForError ());