2009-08-13 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Wed, 12 Aug 2009 23:50:32 +0000 (23:50 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Wed, 12 Aug 2009 23:50:32 +0000 (23:50 -0000)
* CodeTypeReferenceTest.cs: added test for bug #523341

2009-08-13  Marek Habersack  <mhabersack@novell.com>

* CodeTypeReference.cs: generic types specialized on arrays must
not be treated as array declarations. Fixes bug #523341

svn path=/trunk/mcs/; revision=139819

mcs/class/System/System.CodeDom/ChangeLog
mcs/class/System/System.CodeDom/CodeTypeReference.cs
mcs/class/System/Test/System.CodeDom/ChangeLog
mcs/class/System/Test/System.CodeDom/CodeTypeReferenceTest.cs

index d3e411149221d5a0a9815450f69b8778e6a25ba3..e177ce13f28e04127c5b1725974efa053951c972 100644 (file)
@@ -1,3 +1,8 @@
+2009-08-13  Marek Habersack  <mhabersack@novell.com>
+
+       * CodeTypeReference.cs: generic types specialized on arrays must
+       not be treated as array declarations. Fixes bug #523341
+
 2008-02-10  Juraj Skripsky  <js@hotfeet.ch>
 
        * CodeObject.cs: Add empty Visit method implementation.
index 7478c356ce17722c4288d854ce9ad7b3df9fff5a..046ac907f43b800f85d41a893fa878d32a0fa59f 100644 (file)
@@ -210,6 +210,12 @@ namespace System.CodeDom
                                return;
                        }
 
+                       int lastAngle = baseType.LastIndexOf ('>');
+                       if (lastAngle != -1 && lastAngle > array_end) {
+                               this.baseType = baseType;
+                               return;
+                       }
+                       
                        string[] args = baseType.Substring (array_start + 1, array_end - array_start - 1).Split (',');
 
                        if ((array_end - array_start) != args.Length) {
index 85bc55245308ecb54bb2a968f36757e100dfcb3f..a5db9f45562eabaf220ab47fb248e006118cc8d2 100644 (file)
@@ -1,3 +1,7 @@
+2009-08-13  Marek Habersack  <mhabersack@novell.com>
+
+       * CodeTypeReferenceTest.cs: added test for bug #523341
+
 2007-01-25  Ilya Kharmatsky  <ilyak -at- mainsoft.com>
        
        * CodeTypeReferenceTest.cs :
index fb38cfbf2711558da26c4708fee7bffa1f1f4809..aee90f00748d58021ca9e515b021111bade002ee 100644 (file)
@@ -586,6 +586,18 @@ namespace MonoTests.System.CodeDom
                        Assert.IsNotNull (reference.TypeArguments, "#5");
                        Assert.AreEqual (0, reference.TypeArguments.Count, "#6");
                }
+
+               [Test (Description="Bug #523341")]
+               public void GenericTypeTest6 ()
+               {
+                       CodeTypeReference reference = new CodeTypeReference ("System.Collections.List<System.Globalization.CultureInfo[]>");
+                       Assert.AreEqual ("System.Collections.List<System.Globalization.CultureInfo[]>", reference.BaseType, "#1");
+                       Assert.AreEqual (0, reference.ArrayRank, "#2");
+                       Assert.IsNull (reference.ArrayElementType, "#3");
+                       Assert.AreEqual (0, (int) reference.Options, "#4");
+                       Assert.IsNotNull (reference.TypeArguments, "#5");
+                       Assert.AreEqual (0, reference.TypeArguments.Count, "#6");
+               }
 #endif
 
                // bug #76535