* CodeMemberPropertyTest.cs: Test for default value of Type property.
authorGert Driesen <drieseng@users.sourceforge.net>
Sun, 26 Jun 2005 08:56:28 +0000 (08:56 -0000)
committerGert Driesen <drieseng@users.sourceforge.net>
Sun, 26 Jun 2005 08:56:28 +0000 (08:56 -0000)
* CodeGeneratorFromCompileUnitTest.cs: Removed last usage of Assertion class.
* CodeGeneratorFromTypeTest.cs: Added tests for method, property and
parameter level attributes.
* CodeMemberProperty.cs: Default value of Type is empty CodeTypeReference.
* System_test.dll.sources: Added CodeMemberPropertyTest.cs from System.CodeDom.
* VBCodeGenerator.cs: Fixed generated code for method, property and parameter
level attributes. Fixed code generated for FieldDirection.

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

mcs/class/System/ChangeLog
mcs/class/System/Microsoft.VisualBasic/ChangeLog
mcs/class/System/Microsoft.VisualBasic/VBCodeGenerator.cs
mcs/class/System/System.CodeDom/ChangeLog
mcs/class/System/System.CodeDom/CodeMemberProperty.cs
mcs/class/System/System_test.dll.sources
mcs/class/System/Test/Microsoft.VisualBasic/ChangeLog
mcs/class/System/Test/Microsoft.VisualBasic/CodeGeneratorFromCompileUnitTest.cs
mcs/class/System/Test/Microsoft.VisualBasic/CodeGeneratorFromTypeTest.cs
mcs/class/System/Test/System.CodeDom/ChangeLog

index e23d19859109a2f5d4cc8e2a1b51e75a6aedf5f2..9ae5e87ad9aea9df7610d2c109d1716342523e8d 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-26 Gert Driesen <drieseng@users.sourceforge.net>
+
+       * System_test.dll.sources: Added CodeMemberPropertyTest.cs from
+       System.CodeDom.
+
 2005-06-25 Gert Driesen <drieseng@users.sourceforge.net>
 
        * System_test.dll.sources: Added CodeMemberFieldTest.cs from
index 9409926c2315034a3d953a7a6966b963676828a3..d12555f44ab48a9a598d28f34568e4f72011cd20 100644 (file)
@@ -1,3 +1,9 @@
+2005-06-26  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * VBCodeGenerator.cs: Fixed generated code for method, property
+       and parameter level attributes. Fixed code generated for
+       FieldDirection.
+
 2005-06-25  Gert Driesen <drieseng@users.sourceforge.net>
 
        * VBCodeGenerator.cs: Removed type shortcuts that are not valid for
index 0dcea315e81e121193a7bd5b37c11ad53063c170..26f8ce866d711527a14234880d968d25446105f5 100644 (file)
@@ -201,8 +201,8 @@ namespace Microsoft.VisualBasic
                {\r
                        GenerateCompileUnitStart (compileUnit);\r
 \r
-                       OutputAttributes (compileUnit.AssemblyCustomAttributes, \r
-                               "Assembly: ", false);\r
+                       OutputAttributes (compileUnit.AssemblyCustomAttributes,\r
+                               "Assembly: ", LineHandling.NewLine);\r
 \r
                        GenerateNamespaces (compileUnit);\r
 \r
@@ -313,8 +313,9 @@ namespace Microsoft.VisualBasic
 \r
                protected override void GenerateParameterDeclarationExpression (CodeParameterDeclarationExpression e)\r
                {\r
-                       if (e.CustomAttributes != null && e.CustomAttributes.Count > 0)\r
-                               OutputAttributeDeclarations (e.CustomAttributes);\r
+                       if (e.CustomAttributes.Count > 0)\r
+                               OutputAttributes (e.CustomAttributes, null,\r
+                                       LineHandling.InLine);\r
                        OutputDirection (e.Direction);\r
                        OutputTypeNamePair (e.Type, e.Name);\r
                }\r
@@ -569,7 +570,8 @@ namespace Microsoft.VisualBasic
                        TextWriter output = Output;\r
 \r
                        if (eventRef.CustomAttributes.Count > 0)\r
-                               OutputAttributes (eventRef.CustomAttributes, null, true);\r
+                               OutputAttributes (eventRef.CustomAttributes, null, \r
+                                       LineHandling.ContinueLine);\r
 \r
                        MemberAttributes attributes = eventRef.Attributes;\r
 \r
@@ -586,7 +588,8 @@ namespace Microsoft.VisualBasic
                        TextWriter output = Output;\r
 \r
                        if (field.CustomAttributes.Count > 0)\r
-                               OutputAttributes (field.CustomAttributes, null, true);\r
+                               OutputAttributes (field.CustomAttributes, null, \r
+                                       LineHandling.ContinueLine);\r
 \r
                        MemberAttributes attributes = field.Attributes;\r
                        OutputMemberAccessModifier (attributes);\r
@@ -622,7 +625,8 @@ namespace Microsoft.VisualBasic
                        TextWriter output = Output;\r
 \r
                        if (method.CustomAttributes.Count > 0)\r
-                               OutputAttributeDeclarations (method.CustomAttributes);\r
+                               OutputAttributes (method.CustomAttributes, null, \r
+                                       LineHandling.ContinueLine);\r
 \r
                        MemberAttributes attributes = method.Attributes;\r
 \r
@@ -676,7 +680,8 @@ namespace Microsoft.VisualBasic
                        TextWriter output = Output;\r
 \r
                        if (property.CustomAttributes.Count > 0)\r
-                               OutputAttributeDeclarations (property.CustomAttributes);\r
+                               OutputAttributes (property.CustomAttributes, null, \r
+                                       LineHandling.ContinueLine);\r
 \r
                        MemberAttributes attributes = property.Attributes;\r
                        OutputMemberAccessModifier (attributes);\r
@@ -750,7 +755,8 @@ namespace Microsoft.VisualBasic
                {\r
                        TextWriter output = Output;\r
 \r
-                       OutputAttributes (declaration.CustomAttributes, null, true);\r
+                       OutputAttributes (declaration.CustomAttributes, null, \r
+                               LineHandling.ContinueLine);\r
                        TypeAttributes attributes = declaration.TypeAttributes;\r
                        OutputTypeAttributes (attributes,\r
                                declaration.IsStruct,\r
@@ -857,7 +863,7 @@ namespace Microsoft.VisualBasic
                        Output.Write (">");\r
                }\r
 \r
-               private void OutputAttributes (CodeAttributeDeclarationCollection attributes, string prefix, bool continueLine) {\r
+               private void OutputAttributes (CodeAttributeDeclarationCollection attributes, string prefix, LineHandling lineHandling) {\r
                        if (attributes.Count != 0) {\r
                                GenerateAttributeDeclarationsStart (attributes);\r
 \r
@@ -870,8 +876,11 @@ namespace Microsoft.VisualBasic
                                        OutputAttributeDeclaration (att);\r
 \r
                                        while (enumerator.MoveNext ()) {\r
-                                               ContinueOnNewLine (", ");\r
-                                               Output.Write (" ");\r
+                                               Output.Write (", ");\r
+                                               if (lineHandling != LineHandling.InLine) {\r
+                                                       ContinueOnNewLine ("");\r
+                                                       Output.Write (" ");\r
+                                               }\r
                                                att = (CodeAttributeDeclaration) enumerator.Current;\r
                                                if (prefix != null) {\r
                                                        Output.Write (prefix);\r
@@ -881,10 +890,14 @@ namespace Microsoft.VisualBasic
                                }\r
                                GenerateAttributeDeclarationsEnd (attributes);\r
                                Output.Write (" ");\r
-                               if (continueLine) {\r
-                                       ContinueOnNewLine ("");\r
-                               } else {\r
-                                       Output.WriteLine ();\r
+\r
+                               switch (lineHandling) {\r
+                                       case LineHandling.ContinueLine:\r
+                                               ContinueOnNewLine ("");\r
+                                               break;\r
+                                       case LineHandling.NewLine:\r
+                                               Output.WriteLine ();\r
+                                               break;\r
                                }\r
                        }\r
                }\r
@@ -921,11 +934,9 @@ namespace Microsoft.VisualBasic
                {\r
                        switch (direction) {\r
                        case FieldDirection.In:\r
-                               //there is no "In"\r
-                               break;\r
-                       case FieldDirection.Out:\r
                                Output.Write ("ByVal ");\r
                                break;\r
+                       case FieldDirection.Out:\r
                        case FieldDirection.Ref:\r
                                Output.Write ("ByRef ");\r
                                break;\r
@@ -1280,5 +1291,12 @@ namespace Microsoft.VisualBasic
                {\r
                        return true;\r
                }\r
+\r
+               private enum LineHandling\r
+               {\r
+                       InLine,\r
+                       ContinueLine,\r
+                       NewLine\r
+               }\r
        }\r
 }\r
index 8eb9f6f93c7c77f4d10deb97713dc11e93fb2f53..a973f5db919bd353a1b51aaba7652047c696b561 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-26 Gert Driesen <drieseng@users.sourceforge.net>
+
+       * CodeMemberProperty.cs: Default value of Type is empty 
+       CodeTypeReference.
+
 2005-06-25 Gert Driesen <drieseng@users.sourceforge.net>
 
        * CodeMemberField.cs: Default value of Type is empty CodeTypeReference.
index 1f43c8b64fc08cb1fc608e287b73bcb3ab5c14fa..3f2e9393de4654209b13180030da3880e86a886b 100755 (executable)
@@ -124,6 +124,9 @@ namespace System.CodeDom
 
                public CodeTypeReference Type {
                        get {
+                               if (type == null) {
+                                       type = new CodeTypeReference(string.Empty);
+                               }
                                return type;
                        }
                        set {
index 862c0adfad81b11db7e476adee02f66eeb003558..1bf7297513bade4bf6e8ac91b14a101ffb909103 100644 (file)
@@ -14,6 +14,7 @@ System/UriBuilderTest.cs
 System/UriTest.cs
 System/UriTest2.cs
 System.CodeDom/CodeMemberFieldTest.cs
+System.CodeDom/CodeMemberPropertyTest.cs
 System.CodeDom.Compiler/IndentedTextWriterTest.cs
 System.Collections.Generic/QueueTest.cs
 System.Collections.Generic/StackTest.cs
index 1cfe4edc83033606756ec4e93c25b318f20542bc..45982255cd04de27fd7c41e2b5e0a24ee220ca3a 100644 (file)
@@ -1,3 +1,10 @@
+2005-06-26  Gert Driesen <drieseng@users.sourceforge.net>
+
+       * CodeGeneratorFromCompileUnitTest.cs: Removed last usage of
+       Assertion class.
+       * CodeGeneratorFromTypeTest.cs: Added tests for method, property and
+       parameter level attributes.
+
 2005-06-25  Gert Driesen <drieseng@users.sourceforge.net>
 
        * CodeGeneratorFromCompileUnitTest.cs: Added test for assembly-level
index 0e183eb72078ded6a7b839fbb017de3a93618144..956924bff44c80eb2e5c932ef0fad7c4911c25b2 100644 (file)
@@ -99,7 +99,7 @@ namespace MonoTests.Microsoft.VisualBasic
 
                        codeUnit.AssemblyCustomAttributes.Add (attrDec);
                        Generate ();
-                       Assertion.AssertEquals (string.Format (CultureInfo.InvariantCulture,
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
                                "<Assembly: A()> {0}", writer.NewLine), Code);
                }
 
index 3113be96752aa372239e9e3b546d8cba9ec7802d..d16d65c4112b5468d6f2e731d1c1d796205412a6 100644 (file)
@@ -165,5 +165,167 @@ namespace MonoTests.Microsoft.VisualBasic
                                + "Public Name As Integer{0}"
                                + "End Class{0}", writer.NewLine), Code);
                }
+
+               [Test]
+               public void PropertyMembersTypeTest1 ()
+               {
+                       type.Name = "Test1";
+
+                       CodeMemberProperty property = new CodeMemberProperty ();
+
+                       CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "A";
+                       property.CustomAttributes.Add (attrDec);
+
+                       attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "B";
+                       property.CustomAttributes.Add (attrDec);
+
+                       type.Members.Add (property);
+
+                       Generate ();
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Public Class Test1{0}    {0}    <A(),  _{0}     B()>  _{0}    "
+                               + "Private Property  As System.Void{0}    End Property{0}"
+                               + "End Class{0}", writer.NewLine), Code);
+               }
+
+               [Test]
+               public void PropertyMembersTypeTest2 ()
+               {
+                       type.Name = "Test1";
+
+                       CodeMemberProperty property = new CodeMemberProperty ();
+                       property.Name = "Name";
+                       property.Attributes = MemberAttributes.Public;
+                       property.Type = new CodeTypeReference (typeof (int));
+                       type.Members.Add (property);
+
+                       Generate ();
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Public Class Test1{0}"
+                               + "    {0}"
+                               + "    Public Overridable Property Name As Integer{0}"
+                               + "    End Property{0}"
+                               + "End Class{0}", writer.NewLine), Code);
+               }
+
+               [Test]
+               public void MethodMembersTypeTest1 ()
+               {
+                       type.Name = "Test1";
+
+                       CodeMemberMethod method = new CodeMemberMethod ();
+
+                       CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "A";
+                       method.CustomAttributes.Add (attrDec);
+
+                       attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "B";
+                       method.CustomAttributes.Add (attrDec);
+
+                       type.Members.Add (method);
+
+                       Generate ();
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Public Class Test1{0}" 
+                               + "    {0}"
+                               + "    <A(),  _{0}" 
+                               + "     B()>  _{0}"
+                               + "    Private Sub (){0}"
+                               + "    End Sub{0}"
+                               + "End Class{0}", writer.NewLine), Code);
+               }
+
+               [Test]
+               public void MethodMembersTypeTest2 ()
+               {
+                       type.Name = "Test1";
+
+                       CodeMemberMethod method = new CodeMemberMethod ();
+                       method.Name = "Something";
+                       method.Attributes = MemberAttributes.Public;
+                       method.ReturnType = new CodeTypeReference (typeof (int));
+
+                       CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
+                               typeof(object), "value1");
+                       method.Parameters.Add (param);
+
+                       param = new CodeParameterDeclarationExpression (
+                               typeof (object), "value2");
+                       param.Direction = FieldDirection.In;
+                       method.Parameters.Add (param);
+
+                       param = new CodeParameterDeclarationExpression (typeof (int), "index");
+                       param.Direction = FieldDirection.Out;
+                       method.Parameters.Add (param);
+
+                       param = new CodeParameterDeclarationExpression (typeof (int), "count");
+                       param.Direction = FieldDirection.Ref;
+                       method.Parameters.Add (param);
+
+                       type.Members.Add (method);
+
+                       Generate ();
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Public Class Test1{0}"
+                               + "    {0}"
+                               + "    Public Overridable Function Something(ByVal value1 As Object, ByVal value2 As Object, ByRef index As Integer, ByRef count As Integer) As Integer{0}"
+                               + "    End Function{0}"
+                               + "End Class{0}", writer.NewLine), Code);
+               }
+
+               [Test]
+               public void MethodMembersTypeTest3 ()
+               {
+                       type.Name = "Test1";
+
+                       CodeMemberMethod method = new CodeMemberMethod ();
+                       method.Name = "Something";
+                       method.Attributes = MemberAttributes.Public;
+                       method.ReturnType = new CodeTypeReference (typeof (int));
+
+                       // first parameter
+                       CodeParameterDeclarationExpression param = new CodeParameterDeclarationExpression (
+                               typeof (object), "value");
+
+                       CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "A";
+                       param.CustomAttributes.Add (attrDec);
+
+                       attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "B";
+                       param.CustomAttributes.Add (attrDec);
+
+                       method.Parameters.Add (param);
+
+                       // second parameter
+                       param = new CodeParameterDeclarationExpression (typeof (int), "index");
+                       param.Direction = FieldDirection.Out;
+                       method.Parameters.Add (param);
+
+                       attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "C";
+                       attrDec.Arguments.Add (new CodeAttributeArgument ("A1",
+                               new CodePrimitiveExpression (false)));
+                       attrDec.Arguments.Add (new CodeAttributeArgument ("A2",
+                               new CodePrimitiveExpression (true)));
+                       param.CustomAttributes.Add (attrDec);
+
+                       attrDec = new CodeAttributeDeclaration ();
+                       attrDec.Name = "D";
+                       param.CustomAttributes.Add (attrDec);
+
+                       type.Members.Add (method);
+
+                       Generate ();
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "Public Class Test1{0}"
+                               + "    {0}"
+                               + "    Public Overridable Function Something(<A(), B()> ByVal value As Object, <C(A1:=false, A2:=true), D()> ByRef index As Integer) As Integer{0}"
+                               + "    End Function{0}"
+                               + "End Class{0}", writer.NewLine), Code);
+               }
        }
 }
index 943ad877f4460b595aebd07a250ff08c51698edd..b92f5e52f4d3827277c6c6738618ac050528263f 100644 (file)
@@ -1,3 +1,7 @@
+2005-06-26  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * CodeMemberPropertyTest.cs: Test for default value of Type property.
+
 2005-06-25  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * CodeMemberFieldTest.cs: Test for default value of Type property.