[svn] r7509: nemerle/trunk: lib/narray.n ncc/external/LibrariesLoader.n

VladD2 svnadmin at nemerle.org
Sat Mar 3 14:13:30 CET 2007


Log:
1. Add: ToString[T] (this source : SCG.IEnumerable [T], separator : string) : string
2. Prevent compiler crash if problem occur when library load.

Author: VladD2
Date: Sat Mar  3 14:13:28 2007
New Revision: 7509

Modified:
   nemerle/trunk/lib/narray.n
   nemerle/trunk/ncc/external/LibrariesLoader.n

Modified: nemerle/trunk/lib/narray.n
==============================================================================
--- nemerle/trunk/lib/narray.n	(original)
+++ nemerle/trunk/lib/narray.n	Sat Mar  3 14:13:28 2007
@@ -463,6 +463,22 @@
         
       dest.ToArray()
     }
+
+    /// Convert sequence to string.
+    public ToString[T] (this source : SCG.IEnumerable [T], separator : string) : string
+    {
+      mutable isFirstTime = true;
+      def sb = System.Text.StringBuilder();
+      foreach (elem in source)
+      {
+        _ = sb.Append (elem);
+
+        unless (isFirstTime)
+          _ = sb.Append (separator);
+      }
+
+      sb.ToString()
+    }
   }
   
   /**

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Sat Mar  3 14:13:28 2007
@@ -399,11 +399,13 @@
     {
       def assembly = lib.Assembly;
 
+      try
+      {
       def types = assembly.GetExportedTypes ();        
       for (mutable i = 0; i < types.Length; ++i) {
         def t = types[i];
 
-//        Message.Debug (name);
+  //        Message.Debug (name);
         def e = ExternalType (t, lib, null);
 
         def (ns_node, path_to_type) = framework_nesting (t);
@@ -432,6 +434,8 @@
         mainnode.Value = tinfo_cache;
       }
     }
+      catch { | e => Message.Error ($"Can't load types from '$assembly'. Error: $(e.Message)."); }
+    }
 
     internal static CacheTypeInfo (t : System.Type, tc : TypeInfo, node : NamespaceTree.Node) : void
     {



More information about the svn mailing list