diff options
author | Wade Berrier <wade@mono-cvs.ximian.com> | 2007-02-15 00:27:54 +0300 |
---|---|---|
committer | Wade Berrier <wade@mono-cvs.ximian.com> | 2007-02-15 00:27:54 +0300 |
commit | 6b2181df333da3201aa21e7aac7af0092a95f155 (patch) | |
tree | c68d486b61d9f91f3ae1d5e7275364e92824d8a5 | |
parent | 191ed8daf47438eee5f1deacf31c02503e5e9832 (diff) |
Merged 72684 from trunkmono-1-2-3-1
svn path=/branches/mono-1-2-3/mcs/; revision=72867
-rw-r--r-- | mcs/mcs/ChangeLog | 2 | ||||
-rw-r--r-- | mcs/mcs/const.cs | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/mcs/mcs/ChangeLog b/mcs/mcs/ChangeLog index 829170e5de1..d30ca2b8a4b 100644 --- a/mcs/mcs/ChangeLog +++ b/mcs/mcs/ChangeLog @@ -6,6 +6,8 @@ * class.cs (DefineFieldInitializers): Each initializer can has different resolve context. + + * const.cs: Updated. 2007-01-27 Raja R Harinath <rharinath@novell.com> diff --git a/mcs/mcs/const.cs b/mcs/mcs/const.cs index 3e1e9c37dc6..5da0b004f32 100644 --- a/mcs/mcs/const.cs +++ b/mcs/mcs/const.cs @@ -76,6 +76,11 @@ namespace Mono.CSharp { return false; } + // If the constant is private then we don't need any field the + // value is already inlined and cannot be referenced + //if ((ModFlags & Modifiers.PRIVATE) != 0 && RootContext.Optimize) + // return true; + while (ttype.IsArray) ttype = TypeManager.GetElementType (ttype); @@ -91,7 +96,8 @@ namespace Mono.CSharp { TypeManager.RegisterConstant (FieldBuilder, this); if (ttype == TypeManager.decimal_type) - Parent.PartialContainer.RegisterFieldForInitialization (this, new FieldInitializer (FieldBuilder, initializer)); + Parent.PartialContainer.RegisterFieldForInitialization (this, + new FieldInitializer (FieldBuilder, initializer, Parent)); return true; } @@ -118,6 +124,9 @@ namespace Mono.CSharp { if (!ResolveValue ()) return; + if (FieldBuilder == null) + return; + if (value.Type == TypeManager.decimal_type) { Decimal d = ((DecimalConstant)value).Value; int[] bits = Decimal.GetBits (d); |