[svn] r7528: nemerle/trunk/ncc/hierarchy/XmlDump.n

pbludov svnadmin at nemerle.org
Wed Mar 14 09:16:20 CET 2007


Log:
Xml doc key for multidimension arrays issue.

Author: pbludov
Date: Wed Mar 14 09:16:18 2007
New Revision: 7528

Modified:
   nemerle/trunk/ncc/hierarchy/XmlDump.n

Modified: nemerle/trunk/ncc/hierarchy/XmlDump.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/XmlDump.n	(original)
+++ nemerle/trunk/ncc/hierarchy/XmlDump.n	Wed Mar 14 09:16:18 2007
@@ -436,14 +436,26 @@
           }
       }
 
+      def appendArrayType (sb, t, rank) {
+        AppendParmTypeName(sb, t, m)
+          .Append ("[")
+
+          // Seems to be a bug in the c# compiler:
+          // multidimension arrays are 0 based, while unidimension arrays are -1 based.
+          // Since all xml doc tools are aware of this bug, we must be compatible with it too.
+          //
+          .AppendWhen(rank > 1, sb => sb.AppendNTimes (rank, "0:", ","))
+          .Append ("]");
+      }
+
       match (p.Fix ()) {
         | Class       (tycon, args) => appendTypeNameAndArgs  (sb, tycon.FullName, args);
         | TyVarRef    (tyvar)       => appendStaticTyVarName  (sb, tyvar);
-        | Array       (t, rank)     => AppendParmTypeName     (sb, t, m).Append ("[").AppendNTimes (rank, "0:", ",").Append ("]");
+        | Array       (t, rank)     => appendArrayType        (sb, t, rank);
         | Tuple       (args)        => appendTypeNameAndArgs  (sb, "Nemerle.Builtins.Tuple", args);
         | Fun         (from, to)    => appendFunctionTypeArgs (sb, from, to);
         | Ref         (t)
-        | Out         (t)           => AppendParmTypeName     (sb, t, m).AppendUnless (t.CanBeNull, sb => sb.Append ("@"));
+        | Out         (t)           => AppendParmTypeName     (sb, t, m).Append("@");
         | Void                      => sb.Append ("System.Void");
         | Intersection              => Util.ice ("Got MType.Intersection for doc comment");
         }



More information about the svn mailing list