Fix generic XamlTypeName output and GetType() to get some xml reader case working.
authorAtsushi Eno <atsushi@ximian.com>
Tue, 9 Nov 2010 06:41:01 +0000 (15:41 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Tue, 9 Nov 2010 06:41:01 +0000 (15:41 +0900)
mcs/class/System.Xaml/System.Xaml.Schema/XamlTypeName.cs
mcs/class/System.Xaml/System.Xaml/XamlLanguage.cs
mcs/class/System.Xaml/Test/System.Xaml.Schema/XamlTypeNameTest.cs
mcs/class/System.Xaml/Test/System.Xaml/XamlXmlReaderTest.cs

index 137c03eb7d6fa2ca7f42d8f4e43e2fa597b6d6cd..36cf2f1aca60dcfa5f2054c43d33b173dc28f2aa 100644 (file)
@@ -140,11 +140,13 @@ namespace System.Xaml.Schema
 
                public XamlTypeName ()
                {
+                       TypeArguments = empty_type_args;
                }
 
                static readonly XamlTypeName [] empty_type_args = new XamlTypeName [0];
 
                public XamlTypeName (XamlType xamlType)
+                       : this ()
                {
                        if (xamlType == null)
                                throw new ArgumentNullException ("xamlType");
@@ -155,8 +157,6 @@ namespace System.Xaml.Schema
                                l.AddRange (from x in xamlType.TypeArguments.AsQueryable () select new XamlTypeName (x));
                                TypeArguments = l;
                        }
-                       else
-                               TypeArguments = empty_type_args;
                }
                
                public XamlTypeName (string xamlNamespace, string name)
@@ -165,6 +165,7 @@ namespace System.Xaml.Schema
                }
 
                public XamlTypeName (string xamlNamespace, string name, IEnumerable<XamlTypeName> typeArguments)
+                       : this ()
                {
                        Namespace = xamlNamespace;
                        Name = name;
@@ -175,8 +176,6 @@ namespace System.Xaml.Schema
                                l.AddRange (typeArguments);
                                TypeArguments = l;
                        }
-                       else
-                               TypeArguments = empty_type_args;
                }
 
                public string Name { get; set; }
index 6b55c0f3431473d8c881c9f74c506c4c7d9ac9ee..5f909335dff06ece9dbdf3e03c0b02758a85e105 100755 (executable)
@@ -275,7 +275,7 @@ namespace System.Xaml
                                return null;
 
                        Type [] genArgs = null;
-                       if (typeArguments != null) {
+                       if (typeArguments != null && typeArguments.Count > 0) {
                                var xtns = typeArguments;
                                genArgs = new Type [xtns.Count];
                                for (int i = 0; i < genArgs.Length; i++) {
index 6a7d3ff7a82cffd0e166277a0ec18968ff608557..920226f87d1ef36746873fbfdc6944e57a2d682a 100644 (file)
@@ -38,7 +38,8 @@ namespace MonoTests.System.Xaml.Schema
                [Test]
                public void ConstructorDefault ()
                {
-                       new XamlTypeName ();
+                       var xtn = new XamlTypeName ();
+                       Assert.IsNotNull (xtn.TypeArguments, "#1");
                }
 
                [Test]
@@ -52,14 +53,16 @@ namespace MonoTests.System.Xaml.Schema
                public void ConstructorNameNull ()
                {
                        // allowed.
-                       new XamlTypeName ("urn:foo", null);
+                       var xtn = new XamlTypeName ("urn:foo", null);
+                       Assert.IsNotNull (xtn.TypeArguments, "#1");
                }
 
                [Test]
                public void ConstructorNamespaceNull ()
                {
                        // allowed.
-                       new XamlTypeName (null, "FooBar");
+                       var xtn = new XamlTypeName (null, "FooBar");
+                       Assert.IsNotNull (xtn.TypeArguments, "#1");
                }
 
                [Test]
index 20f6f8a6a682459e4f72243a76795ac397901ced..03e6e3ab833ad6c91433da8f5ece7818284e5152 100755 (executable)
@@ -130,7 +130,6 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Read_DictionaryInt32String ()
                {
                        ReadTest ("Dictionary_Int32_String.xml");
@@ -138,7 +137,6 @@ namespace MonoTests.System.Xaml
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void Read_DictionaryStringType ()
                {
                        ReadTest ("Dictionary_String_Type.xml");