[svn] r6268: nemerle/trunk/ncc/external: InternalTypes.n LibrariesLoader.n

nazgul svnadmin at nemerle.org
Sun May 14 13:10:54 CEST 2006


Log:
Support extension attribute also from System.Query

Author: nazgul
Date: Sun May 14 13:10:48 2006
New Revision: 6268

Modified:
   nemerle/trunk/ncc/external/InternalTypes.n
   nemerle/trunk/ncc/external/LibrariesLoader.n

Modified: nemerle/trunk/ncc/external/InternalTypes.n
==============================================================================
--- nemerle/trunk/ncc/external/InternalTypes.n	(original)
+++ nemerle/trunk/ncc/external/InternalTypes.n	Sun May 14 13:10:48 2006
@@ -72,6 +72,7 @@
 
   // set in LibrariesLoader upon first possiblity
   public mutable ExtensionAttribute : System.Type;
+  public mutable SQ_ExtensionAttribute : System.Type;
 
   public mutable Decimal_ctors : Hashtable [string, SR.ConstructorInfo];
   public mutable Type_GetTypeFromHandle : SR.MethodInfo;

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Sun May 14 13:10:48 2006
@@ -361,6 +361,11 @@
         when (t != null)
           SystemType.ExtensionAttribute = t;
       }
+      when (SystemType.SQ_ExtensionAttribute == null) {
+        def t = assembly.GetType ("System.CompilerServices.ExtensionAttribute");
+        when (t != null)
+          SystemType.ExtensionAttribute = t;
+      }
 
       mutable i = 0;
       for (; i < types.Length; ++i) {
@@ -374,7 +379,9 @@
         def mainnode = ns_node.Path (path_to_type);
 
         when (SystemType.ExtensionAttribute != null &&
-              t.IsDefined (SystemType.ExtensionAttribute, false))
+              t.IsDefined (SystemType.ExtensionAttribute, false) ||
+              SystemType.SQ_ExtensionAttribute != null &&
+              t.IsDefined (SystemType.SQ_ExtensionAttribute, false))
           _construct_right_away ::= mainnode;
 
         mutable tinfo_cache = null;
@@ -718,7 +725,8 @@
         when (LibraryReference.add_buildins) AddBuiltins ();
 //        else Message.Debug ($"omiititng $FullName");
 
-        decode_extension_methods ();
+        decode_extension_methods (SystemType.ExtensionAttribute);
+        decode_extension_methods (SystemType.SQ_ExtensionAttribute);
       }
 
       #region Special numeric overloads
@@ -1331,10 +1339,9 @@
         }
       }
 
-      decode_extension_methods () : void
+      decode_extension_methods (t : System.Type) : void
       {
-        when (SystemType.ExtensionAttribute != null) {
-          def t = SystemType.ExtensionAttribute;
+        when (t != null) {
           when (system_type.IsDefined (t, false)) {
             foreach (m is IMethod in GetMembers ())
               when (m.IsStatic && m.GetHandle ().IsDefined (t, false))



More information about the svn mailing list