Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs
diff options
context:
space:
mode:
authorAtsushi Eno <atsushieno@gmail.com>2009-08-10 18:55:40 +0400
committerAtsushi Eno <atsushieno@gmail.com>2009-08-10 18:55:40 +0400
commita2c0c025641175dc69d916341c5043b97babfcc9 (patch)
tree053f68e4d2e29f1b5e19471bee695ba1bf5f4a43 /mcs
parent31a3d7f1019b2f2e22aa815153c83b0563692a60 (diff)
2009-08-10 Atsushi Enomoto <atsushi@ximian.com>
* MoonlightChannelBaseExtension.cs : fixed a couple of generated code to compile on .NET (not in mcs yet; some nested generics bug). svn path=/trunk/mcs/; revision=139645
Diffstat (limited to 'mcs')
-rw-r--r--mcs/tools/svcutil/ChangeLog5
-rw-r--r--mcs/tools/svcutil/MoonlightChannelBaseExtension.cs28
2 files changed, 20 insertions, 13 deletions
diff --git a/mcs/tools/svcutil/ChangeLog b/mcs/tools/svcutil/ChangeLog
index ee5e9deb32c..e96b040110e 100644
--- a/mcs/tools/svcutil/ChangeLog
+++ b/mcs/tools/svcutil/ChangeLog
@@ -1,5 +1,10 @@
2009-08-10 Atsushi Enomoto <atsushi@ximian.com>
+ * MoonlightChannelBaseExtension.cs : fixed a couple of generated
+ code to compile on .NET (not in mcs yet; some nested generics bug).
+
+2009-08-10 Atsushi Enomoto <atsushi@ximian.com>
+
* Driver.cs, CommandLineOptions.cs : add moonlight proxy generator
support.
* MoonlightChannelBaseExtension.cs : new, moonlight proxy generator.
diff --git a/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs b/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
index 06457cf1c68..8a99a6ed4b5 100644
--- a/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
+++ b/mcs/tools/svcutil/MoonlightChannelBaseExtension.cs
@@ -138,9 +138,9 @@ namespace Mono.ServiceContractTool
var channelBase = new CodeTypeReference ("ChannelBase", gt);
var type = new CodeTypeDeclaration (name);
parentClass.Members.Add (type);
- type.TypeAttributes = TypeAttributes.Public;
type.BaseTypes.Add (channelBase);
type.BaseTypes.Add (new CodeTypeReference (cd.Name));
+ type.TypeAttributes |= TypeAttributes.NestedPrivate;
ml_context.ChannelType = type;
@@ -215,24 +215,24 @@ namespace Mono.ServiceContractTool
cm.Attributes = MemberAttributes.Public
| MemberAttributes.Final;
- List<CodeExpression> inArgs = new List<CodeExpression> ();
- List<CodeExpression> outArgs = new List<CodeExpression> ();
+ var inArgs = new List<CodeParameterDeclarationExpression > ();
+ var outArgs = new List<CodeParameterDeclarationExpression > ();
- foreach (var md in od.Messages) {
- var l = md.Direction == MessageDirection.Input ? inArgs : outArgs;
- foreach (var p in md.Body.Parts)
- if (p != md.Body.ReturnValue)
- l.Add (new CodeArgumentReferenceExpression (p.Name));
+ foreach (CodeParameterDeclarationExpression p in context.BeginMethod.Parameters) {
+ inArgs.Add (p);
+ cm.Parameters.Add (p);
}
+ inArgs.RemoveAt (inArgs.Count - 1);
+ inArgs.RemoveAt (inArgs.Count - 1);
- cm.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (AsyncCallback)), "asyncCallback"));
- cm.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (object)), "userState"));
+// cm.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (AsyncCallback)), "asyncCallback"));
+// cm.Parameters.Add (new CodeParameterDeclarationExpression (new CodeTypeReference (typeof (object)), "userState"));
cm.ReturnType = new CodeTypeReference (typeof (IAsyncResult));
var argsDecl = new CodeVariableDeclarationStatement (
typeof (object []),
"args",
- new CodeArrayCreateExpression (typeof (object), inArgs.ToArray ()));
+ new CodeArrayCreateExpression (typeof (object), inArgs.ConvertAll<CodeExpression> (decl => new CodeArgumentReferenceExpression (decl.Name)).ToArray ()));
cm.Statements.Add (argsDecl);
var args = new List<CodeExpression> ();
@@ -271,12 +271,14 @@ namespace Mono.ServiceContractTool
new CodeArrayCreateExpression (typeof (object), new CodePrimitiveExpression (outArgs.Count)));
cm.Statements.Add (argsDecl);
- call = new CodeMethodInvokeExpression (
+ call = new CodeCastExpression (
+ context.EndMethod.ReturnType,
+ new CodeMethodInvokeExpression (
new CodeBaseReferenceExpression (),
"EndInvoke",
new CodePrimitiveExpression (od.Name),
new CodeVariableReferenceExpression ("args"),
- new CodeArgumentReferenceExpression (resultArgName));
+ new CodeArgumentReferenceExpression (resultArgName)));
if (cm.ReturnType.BaseType == "System.Void")
cm.Statements.Add (new CodeExpressionStatement (call));