// 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 |
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;
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 ();
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 ());