[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