[svn] r7763: nemerle/trunk/ncc: external/LibrariesLoader.n generation/HierarchyEmitter.n hierarchy/ClassMe...

pbludov svnadmin at nemerle.org
Tue Aug 14 10:35:46 CEST 2007


Log:
ImmutableAttribute is redundant for constants & enum fields.


Author: pbludov
Date: Tue Aug 14 10:35:40 2007
New Revision: 7763

Modified:
   nemerle/trunk/ncc/external/LibrariesLoader.n
   nemerle/trunk/ncc/generation/HierarchyEmitter.n
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/testsuite/   (props changed)

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Tue Aug 14 10:35:40 2007
@@ -1490,7 +1490,7 @@
       set_attributes () : void
       {
         attributes = NemerleAttributes.None;
-        when (!handle.IsInitOnly)   attributes |= NemerleAttributes.Mutable;
+        unless (handle.IsInitOnly || handle.IsLiteral) attributes |= NemerleAttributes.Mutable;
         when (handle.IsStatic)      attributes |= NemerleAttributes.Static;
         when (handle.IsSpecialName) attributes |= NemerleAttributes.SpecialName;
        
@@ -1500,7 +1500,7 @@
         when (handle.IsAssembly) attributes |= NemerleAttributes.Internal;
         when (handle.IsFamilyAndAssembly) attributes |=
           NemerleAttributes.Internal %| NemerleAttributes.Protected;
-        when (!handle.IsInitOnly && handle.IsDefined (typeof (Nemerle.Internal.ImmutableAttribute), false))
+        when (!handle.IsInitOnly && !handle.IsLiteral && handle.IsDefined (typeof (Nemerle.Internal.ImmutableAttribute), false))
           attributes |= NemerleAttributes.CompilerMutable;
       }
 
@@ -1582,7 +1582,7 @@
       {
         get
         {
-          !handle.IsInitOnly &&
+          !handle.IsInitOnly && !handle.IsLiteral &&
           !handle.IsDefined (typeof (Nemerle.Internal.ImmutableAttribute), false)
         }
       }

Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n	Tue Aug 14 10:35:40 2007
@@ -1093,7 +1093,7 @@
         field_builder.SetCustomAttribute (volatile_attr)
       }
 
-      when (!IsMutable && attributes %&& NemerleAttributes.CompilerMutable)
+      when (!IsMutable && !IsLiteral && attributes %&& NemerleAttributes.CompilerMutable)
       {
         def imm_attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.ImmutableAttribute);
         field_builder.SetCustomAttribute (imm_attr)

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Tue Aug 14 10:35:40 2007
@@ -312,7 +312,7 @@
         | fld is IField => 
           def fi = fld.GetFieldInfo ();
           def typeName = makeTypeName(fi.FieldType);
-          def modifs = add("static", fi.IsStatic) + add("mutable", !fi.IsInitOnly);
+          def modifs = add("static", fi.IsStatic) + add("mutable", !fi.IsInitOnly && !fi.IsLiteral);
           $"field: $modifs$(fld.Name) : $typeName;"
 
         | _ => $ "$kind `$full_name'"



More information about the svn mailing list