2
// <copyright see="prj:///doc/copyright.txt"/>
3
// <license see="prj:///doc/license.txt"/>
4
// <owner name="Mike KrĆ¼ger" email="mike@icsharpcode.net"/>
5
// <version>$Revision: 4482 $</version>
10
using System.CodeDom.Compiler;
12
using System.Security.Permissions;
14
namespace ICSharpCode.OldNRefactory.Visitors
16
[PermissionSet(SecurityAction.InheritanceDemand, Name = "FullTrust")]
17
[PermissionSet(SecurityAction.LinkDemand, Name = "FullTrust")]
18
public class CodeDomVerboseOutputGenerator : System.CodeDom.Compiler.CodeGenerator
20
#region System.CodeDom.Compiler.CodeGenerator abstract class implementation
21
protected override string NullToken {
27
protected override void OutputType(CodeTypeReference typeRef)
29
Output.Write("[CodeTypeReference: {0}", typeRef.BaseType);
30
if (typeRef.ArrayRank > 0) {
31
Output.Write(" Rank:" + typeRef.ArrayRank);
36
protected override void GenerateArrayCreateExpression(CodeArrayCreateExpression e)
38
Output.Write("[CodeArrayCreateExpression: {0}]", e.ToString());
41
protected override void GenerateBaseReferenceExpression(CodeBaseReferenceExpression e)
43
Output.Write("[CodeBaseReferenceExpression: {0}]", e.ToString());
46
protected override void GenerateCastExpression(CodeCastExpression e)
48
Output.Write("[CodeCastExpression: {0}]", e.ToString());
51
protected override void GenerateDelegateCreateExpression(CodeDelegateCreateExpression e)
53
Output.Write("[CodeDelegateCreateExpression: {0}]", e.ToString());
56
protected override void GenerateFieldReferenceExpression(CodeFieldReferenceExpression e)
58
Output.Write("[CodeFieldReferenceExpression: Name={0}, Target=", e.FieldName);
59
this.GenerateExpression(e.TargetObject);
63
protected override void GenerateMethodReferenceExpression(CodeMethodReferenceExpression e)
65
Output.Write("[CodeMethodReferenceExpression: Name={0}, Target=", e.MethodName);
66
this.GenerateExpression(e.TargetObject);
70
protected override void GenerateEventReferenceExpression(CodeEventReferenceExpression e)
72
Output.Write("[CodeEventReferenceExpression: Name={0}, Target=", e.EventName);
73
this.GenerateExpression(e.TargetObject);
77
protected override void GenerateArgumentReferenceExpression(CodeArgumentReferenceExpression e)
79
Output.Write("[CodeArgumentReferenceExpression: {0}]", e.ToString());
82
protected override void GenerateVariableReferenceExpression(CodeVariableReferenceExpression e)
84
Output.Write("[CodeVariableReferenceExpression: Name={0}]", e.VariableName);
87
protected override void GenerateIndexerExpression(CodeIndexerExpression e)
89
Output.Write("[CodeIndexerExpression: {0}]", e.ToString());
92
protected override void GenerateArrayIndexerExpression(CodeArrayIndexerExpression e)
94
Output.Write("[CodeArrayIndexerExpression: {0}]", e.ToString());
97
protected override void GenerateSnippetExpression(CodeSnippetExpression e)
99
Output.Write("[CodeSnippetExpression: {0}]", e.ToString());
102
protected override void GenerateMethodInvokeExpression(CodeMethodInvokeExpression e)
104
Output.Write("[CodeMethodInvokeExpression: Method=");
105
GenerateMethodReferenceExpression(e.Method);
106
Output.Write(", Parameters=");
108
foreach (CodeExpression expr in e.Parameters) {
109
if (first) first = false; else Output.Write(", ");
110
this.GenerateExpression(expr);
115
protected override void GenerateDelegateInvokeExpression(CodeDelegateInvokeExpression e)
117
Output.Write("[CodeDelegateInvokeExpression: {0}]", e.ToString());
120
protected override void GenerateObjectCreateExpression(CodeObjectCreateExpression e)
122
Output.Write("[CodeObjectCreateExpression: Type={0}, Parameters=", e.CreateType.BaseType);
124
foreach (CodeExpression expr in e.Parameters) {
125
if (first) first = false; else Output.Write(", ");
126
this.GenerateExpression(expr);
131
protected override void GeneratePropertyReferenceExpression(CodePropertyReferenceExpression e)
133
Output.Write("[CodePropertyReferenceExpression: Name={0}, Target=", e.PropertyName);
134
this.GenerateExpression(e.TargetObject);
138
protected override void GeneratePropertySetValueReferenceExpression(CodePropertySetValueReferenceExpression e)
140
Output.Write("[CodePropertySetValueReferenceExpression: {0}]", e.ToString());
143
protected override void GenerateThisReferenceExpression(CodeThisReferenceExpression e)
145
Output.Write("[CodeThisReferenceExpression]");
148
protected override void GenerateExpressionStatement(CodeExpressionStatement e)
150
Output.Write("[CodeExpressionStatement:");
151
base.GenerateExpression(e.Expression);
152
Output.WriteLine("]");
155
protected override void GenerateIterationStatement(CodeIterationStatement e)
157
Output.WriteLine("[CodeIterationStatement: {0}]", e.ToString());
160
protected override void GenerateThrowExceptionStatement(CodeThrowExceptionStatement e)
162
Output.WriteLine("[CodeThrowExceptionStatement: {0}]", e.ToString());
165
protected override void GenerateComment(CodeComment e)
167
Output.WriteLine("[CodeComment: {0}]", e.ToString());
170
protected override void GenerateMethodReturnStatement(CodeMethodReturnStatement e)
172
Output.WriteLine("[CodeMethodReturnStatement: {0}]", e.ToString());
175
protected override void GenerateConditionStatement(CodeConditionStatement e)
177
Output.WriteLine("[GenerateConditionStatement: {0}]", e.ToString());
180
protected override void GenerateTryCatchFinallyStatement(CodeTryCatchFinallyStatement e)
182
Output.WriteLine("[CodeTryCatchFinallyStatement: {0}]", e.ToString());
185
protected override void GenerateAssignStatement(CodeAssignStatement e)
187
Output.Write("[CodeAssignStatement: Left=");
188
base.GenerateExpression(e.Left);
189
Output.Write(", Right=");
190
base.GenerateExpression(e.Right);
191
Output.WriteLine("]");
194
protected override void GenerateAttachEventStatement(CodeAttachEventStatement e)
196
Output.WriteLine("[CodeAttachEventStatement: {0}]", e.ToString());
199
protected override void GenerateRemoveEventStatement(CodeRemoveEventStatement e)
201
Output.WriteLine("[CodeRemoveEventStatement: {0}]", e.ToString());
204
protected override void GenerateGotoStatement(CodeGotoStatement e)
206
Output.WriteLine("[CodeGotoStatement: {0}]", e.ToString());
209
protected override void GenerateLabeledStatement(CodeLabeledStatement e)
211
Output.WriteLine("[CodeLabeledStatement: {0}]", e.ToString());
214
protected override void GenerateVariableDeclarationStatement(CodeVariableDeclarationStatement e)
216
Output.WriteLine("[CodeVariableDeclarationStatement: {0}]", e.ToString());
219
protected override void GenerateLinePragmaStart(CodeLinePragma e)
221
Output.WriteLine("[CodeLinePragma: {0}]", e.ToString());
224
protected override void GenerateLinePragmaEnd(CodeLinePragma e)
226
Output.WriteLine("[CodeLinePragma: {0}]", e.ToString());
229
protected override void GenerateEvent(CodeMemberEvent e, CodeTypeDeclaration c)
231
Output.WriteLine("[CodeMemberEvent: {0}]", e.ToString());
234
protected override void GenerateField(CodeMemberField e)
236
Output.Write("[CodeMemberField: Name={0}, Type=", e.Name);
237
Output.Write(e.Type.BaseType);
238
Output.WriteLine("]");
241
protected override void GenerateSnippetMember(CodeSnippetTypeMember e)
243
Output.WriteLine("[CodeSnippetTypeMember: {0}]", e.ToString());
246
protected override void GenerateEntryPointMethod(CodeEntryPointMethod e, CodeTypeDeclaration c)
248
Output.WriteLine("[CodeEntryPointMethod: {0}]", e.ToString());
251
public void PublicGenerateCodeFromStatement(CodeStatement e, TextWriter w, CodeGeneratorOptions o)
253
((ICodeGenerator)this).GenerateCodeFromStatement(e, w, o);
256
protected override void GenerateMethod(CodeMemberMethod e, CodeTypeDeclaration c)
258
Output.WriteLine("[CodeMemberMethod: Name={0}, Parameterns={1}]", e.Name, e.Parameters.Count);
260
GenerateStatements(e.Statements);
264
protected override void GenerateProperty(CodeMemberProperty e, CodeTypeDeclaration c)
266
Output.WriteLine("[CodeMemberProperty : {0}]", e.ToString());
269
protected override void GenerateConstructor(CodeConstructor e, CodeTypeDeclaration c)
271
Output.WriteLine("[CodeConstructor : {0}]", e.ToString());
273
GenerateStatements(e.Statements);
277
protected override void GenerateTypeConstructor(CodeTypeConstructor e)
279
Output.WriteLine("[CodeTypeConstructor : {0}]", e.ToString());
282
protected override void GenerateTypeStart(CodeTypeDeclaration e)
284
Output.WriteLine("[CodeTypeDeclaration : {0}]", e.ToString());
287
protected override void GenerateTypeEnd(CodeTypeDeclaration e)
289
Output.WriteLine("[CodeTypeDeclaration: {0}]", e.ToString());
292
protected override void GenerateNamespaceStart(CodeNamespace e)
294
Output.WriteLine("[CodeNamespaceStart: {0}]", e.ToString());
297
protected override void GenerateNamespaceEnd(CodeNamespace e)
299
Output.WriteLine("[CodeNamespaceEnd: {0}]", e.ToString());
302
protected override void GenerateNamespaceImport(CodeNamespaceImport e)
304
Output.WriteLine("[CodeNamespaceImport: {0}]", e.ToString());
307
protected override void GenerateAttributeDeclarationsStart(CodeAttributeDeclarationCollection attributes)
309
Output.WriteLine("[CodeAttributeDeclarationCollection: {0}]", attributes.ToString());
312
protected override void GenerateAttributeDeclarationsEnd(CodeAttributeDeclarationCollection attributes)
314
Output.WriteLine("[CodeAttributeDeclarationCollection: {0}]", attributes.ToString());
317
protected override void GeneratePrimitiveExpression(CodePrimitiveExpression e)
319
if (e.Value == null) {
320
Output.WriteLine("[CodePrimitiveExpression: null]");
322
Output.Write("[CodePrimitiveExpression: ");
323
base.GeneratePrimitiveExpression(e);
324
Output.WriteLine(" (" + e.Value.GetType().Name + ")]");
328
protected override bool Supports(GeneratorSupport support)
333
protected override bool IsValidIdentifier(string value)
338
protected override string CreateEscapedIdentifier(string value)
343
protected override string CreateValidIdentifier(string value)
348
protected override string GetTypeOutput(CodeTypeReference value)
350
return value.ToString();
353
protected override string QuoteSnippetString(string value)
355
return "\"" + value + "\"";