Skip to content

Commit 99b6543

Browse files
author
rstam
committed
Changed ExpressionVisitor slightly to be as close as possible as the ExpressionVisitor in .NET Framework 4 to ease the eventual transition to .NET Framework 4.
1 parent 3c7f93c commit 99b6543

File tree

2 files changed

+258
-250
lines changed

2 files changed

+258
-250
lines changed

Driver/Linq/Expressions/ExpressionPrettyPrinter.cs

Lines changed: 84 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -45,292 +45,291 @@ public ExpressionPrettyPrinter()
4545
/// <summary>
4646
/// Pretty prints an Expression.
4747
/// </summary>
48-
/// <param name="exp">The Expression to pretty print.</param>
48+
/// <param name="node">The Expression to pretty print.</param>
4949
/// <returns>A string containing the pretty printed Expression.</returns>
50-
public string PrettyPrint(Expression exp)
50+
public string PrettyPrint(Expression node)
5151
{
5252
_sb = new StringBuilder();
5353
_indentation = "";
54-
Visit(exp);
54+
Visit(node);
5555
return _sb.ToString();
5656
}
5757

5858
// protected methods
5959
/// <summary>
6060
/// Visits an ElementInit node.
6161
/// </summary>
62-
/// <param name="initializer">The ElementInit node.</param>
62+
/// <param name="node">The ElementInit node.</param>
6363
/// <returns>The ElementInit node.</returns>
64-
protected override ElementInit VisitElementInitializer(ElementInit initializer)
64+
protected override ElementInit VisitElementInit(ElementInit node)
6565
{
6666
throw new NotImplementedException();
6767
}
6868

6969
/// <summary>
7070
/// Visits a UnaryExpression.
7171
/// </summary>
72-
/// <param name="u">The UnaryExpression.</param>
72+
/// <param name="node">The UnaryExpression.</param>
7373
/// <returns>The UnaryExpression.</returns>
74-
protected override Expression VisitUnary(UnaryExpression u)
74+
protected override Expression VisitUnary(UnaryExpression node)
7575
{
76-
WriteHeader(u);
76+
WriteHeader(node);
7777
using (new Indentation(this))
7878
{
79-
WriteLine("Method={0}", u.Method == null ? "null" : u.Method.Name);
79+
WriteLine("Method={0}", node.Method == null ? "null" : node.Method.Name);
8080
WriteLine("Operand:");
81-
VisitIndented(u.Operand);
81+
VisitIndented(node.Operand);
8282
}
83-
return u;
83+
return node;
8484
}
8585

8686
/// <summary>
8787
/// Visits a BinaryExpression.
8888
/// </summary>
89-
/// <param name="b">The BinaryExpression.</param>
89+
/// <param name="node">The BinaryExpression.</param>
9090
/// <returns>The BinaryExpression.</returns>
91-
protected override Expression VisitBinary(BinaryExpression b)
91+
protected override Expression VisitBinary(BinaryExpression node)
9292
{
93-
WriteHeader(b);
93+
WriteHeader(node);
9494
using (new Indentation(this))
9595
{
96-
WriteLine("Method={0}", b.Method == null ? "null" : b.Method.Name);
96+
WriteLine("Method={0}", node.Method == null ? "null" : node.Method.Name);
9797
WriteLine("Left:");
98-
VisitIndented(b.Left);
98+
VisitIndented(node.Left);
9999
WriteLine("Right:");
100-
VisitIndented(b.Right);
100+
VisitIndented(node.Right);
101101
}
102-
return b;
102+
return node;
103103
}
104104

105105
/// <summary>
106106
/// Visits a TypeBinaryExpression.
107107
/// </summary>
108-
/// <param name="b">The TypeBinaryExpression.</param>
108+
/// <param name="node">The TypeBinaryExpression.</param>
109109
/// <returns>The TypeBinaryExpression.</returns>
110-
protected override Expression VisitTypeIs(TypeBinaryExpression b)
110+
protected override Expression VisitTypeBinary(TypeBinaryExpression node)
111111
{
112112
throw new NotImplementedException();
113113
}
114114

115115
/// <summary>
116116
/// Visits a ConstantExpression.
117117
/// </summary>
118-
/// <param name="c">The ConstantExpression.</param>
118+
/// <param name="node">The ConstantExpression.</param>
119119
/// <returns>The ConstantExpression.</returns>
120-
protected override Expression VisitConstant(ConstantExpression c)
120+
protected override Expression VisitConstant(ConstantExpression node)
121121
{
122-
WriteHeader(c);
122+
WriteHeader(node);
123123
using (new Indentation(this))
124124
{
125-
WriteLine("Value={0}", c.Value);
125+
WriteLine("Value={0}", node.Value);
126126
}
127-
return c;
127+
return node;
128128
}
129129

130130
/// <summary>
131131
/// Visits a ConditionalExpression.
132132
/// </summary>
133-
/// <param name="c">The ConditionalExpression.</param>
133+
/// <param name="node">The ConditionalExpression.</param>
134134
/// <returns>The ConditionalExpression.</returns>
135-
protected override Expression VisitConditional(ConditionalExpression c)
135+
protected override Expression VisitConditional(ConditionalExpression node)
136136
{
137137
throw new NotImplementedException();
138138
}
139139

140140
/// <summary>
141141
/// Visits a ParameterExpression.
142142
/// </summary>
143-
/// <param name="p">The ParameterExpression.</param>
143+
/// <param name="node">The ParameterExpression.</param>
144144
/// <returns>The ParameterExpression.</returns>
145-
protected override Expression VisitParameter(ParameterExpression p)
145+
protected override Expression VisitParameter(ParameterExpression node)
146146
{
147-
WriteHeader(p);
147+
WriteHeader(node);
148148
using (new Indentation(this))
149149
{
150-
WriteLine("Name={0}", p.Name);
151-
WriteLine("Type={0}", FriendlyClassName(p.Type));
150+
WriteLine("Name={0}", node.Name);
151+
WriteLine("Type={0}", FriendlyClassName(node.Type));
152152
}
153-
return p;
153+
return node;
154154
}
155155

156156
/// <summary>
157157
/// Visits a MemberExpression.
158158
/// </summary>
159-
/// <param name="m">The MemberExpression.</param>
159+
/// <param name="node">The MemberExpression.</param>
160160
/// <returns>The MemberExpression.</returns>
161-
protected override Expression VisitMemberAccess(MemberExpression m)
161+
protected override Expression VisitMember(MemberExpression node)
162162
{
163-
WriteHeader(m);
163+
WriteHeader(node);
164164
using (new Indentation(this))
165165
{
166166
WriteLine("Expression:");
167-
VisitIndented(m.Expression);
168-
WriteLine("Member={0} {1}", m.Member.MemberType, m.Member.Name);
167+
VisitIndented(node.Expression);
168+
WriteLine("Member={0} {1}", node.Member.MemberType, node.Member.Name);
169169
}
170-
return m;
170+
return node;
171171
}
172172

173173
/// <summary>
174174
/// Visits a MethodCallExpression.
175175
/// </summary>
176-
/// <param name="m">The MethodCallExpression.</param>
176+
/// <param name="node">The MethodCallExpression.</param>
177177
/// <returns>The MethodCallExpression.</returns>
178-
protected override Expression VisitMethodCall(MethodCallExpression m)
178+
protected override Expression VisitMethodCall(MethodCallExpression node)
179179
{
180-
WriteHeader(m);
180+
WriteHeader(node);
181181
using (new Indentation(this))
182182
{
183-
WriteLine("Method={0}", m.Method.Name);
183+
WriteLine("Method={0}", node.Method.Name);
184184
WriteLine("Arguments:");
185185
using (new Indentation(this))
186186
{
187-
foreach (var arg in m.Arguments)
187+
foreach (var arg in node.Arguments)
188188
{
189189
Visit(arg);
190190
}
191191
}
192192
}
193-
return m;
193+
return node;
194194
}
195195

196196
/// <summary>
197-
/// Visits an Expression list.
197+
/// Visits a MemberAssignment.
198198
/// </summary>
199-
/// <param name="original">The Expression list.</param>
200-
/// <returns>The Expression list.</returns>
201-
protected override ReadOnlyCollection<Expression> VisitExpressionList(
202-
ReadOnlyCollection<Expression> original)
199+
/// <param name="node">The MemberAssignment.</param>
200+
/// <returns>The MemberAssignment.</returns>
201+
protected override MemberAssignment VisitMemberAssignment(MemberAssignment node)
203202
{
204203
throw new NotImplementedException();
205204
}
206205

207206
/// <summary>
208-
/// Visits a MemberAssignment.
207+
/// Visits a MemberBinding.
209208
/// </summary>
210-
/// <param name="assignment">The MemberAssignment.</param>
211-
/// <returns>The MemberAssignment.</returns>
212-
protected override MemberAssignment VisitMemberAssignment(MemberAssignment assignment)
209+
/// <param name="node">The MemberBinding.</param>
210+
/// <returns>The MemberBinding (possibly modified).</returns>
211+
protected override MemberBinding VisitMemberBinding(MemberBinding node)
213212
{
214213
throw new NotImplementedException();
215214
}
216215

217216
/// <summary>
218217
/// Visits a MemberMemberBinding.
219218
/// </summary>
220-
/// <param name="binding">The MemberMemberBinding.</param>
219+
/// <param name="node">The MemberMemberBinding.</param>
221220
/// <returns>The MemberMemberBinding.</returns>
222-
protected override MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding binding)
221+
protected override MemberMemberBinding VisitMemberMemberBinding(MemberMemberBinding node)
223222
{
224223
throw new NotImplementedException();
225224
}
226225

227226
/// <summary>
228227
/// Visits a MemberListBinding.
229228
/// </summary>
230-
/// <param name="binding">The MemberListBinding.</param>
229+
/// <param name="node">The MemberListBinding.</param>
231230
/// <returns>The MemberListBinding.</returns>
232-
protected override MemberListBinding VisitMemberListBinding(MemberListBinding binding)
231+
protected override MemberListBinding VisitMemberListBinding(MemberListBinding node)
233232
{
234233
throw new NotImplementedException();
235234
}
236235

237236
/// <summary>
238237
/// Visits a MemberBinding list.
239238
/// </summary>
240-
/// <param name="original">The MemberBinding list.</param>
239+
/// <param name="nodes">The MemberBinding list.</param>
241240
/// <returns>The MemberBinding list.</returns>
242-
protected override IEnumerable<MemberBinding> VisitBindingList(ReadOnlyCollection<MemberBinding> original)
241+
protected override IEnumerable<MemberBinding> VisitMemberBindingList(ReadOnlyCollection<MemberBinding> nodes)
243242
{
244243
throw new NotImplementedException();
245244
}
246245

247246
/// <summary>
248247
/// Visits an ElementInit list.
249248
/// </summary>
250-
/// <param name="original">The ElementInit list.</param>
249+
/// <param name="nodes">The ElementInit list.</param>
251250
/// <returns>The ElementInit list.</returns>
252251
protected override IEnumerable<ElementInit> VisitElementInitializerList(
253-
ReadOnlyCollection<ElementInit> original)
252+
ReadOnlyCollection<ElementInit> nodes)
254253
{
255254
throw new NotImplementedException();
256255
}
257256

258257
/// <summary>
259258
/// Visits a LambdaExpression.
260259
/// </summary>
261-
/// <param name="lambda">The LambdaExpression.</param>
260+
/// <param name="node">The LambdaExpression.</param>
262261
/// <returns>The LambdaExpression.</returns>
263-
protected override Expression VisitLambda(LambdaExpression lambda)
262+
protected override Expression VisitLambda(LambdaExpression node)
264263
{
265-
WriteHeader(lambda);
264+
WriteHeader(node);
266265
using (new Indentation(this))
267266
{
268267
WriteLine("Parameters:");
269-
foreach (var parameter in lambda.Parameters)
268+
foreach (var parameter in node.Parameters)
270269
{
271270
VisitIndented(parameter);
272271
}
273272
WriteLine("Body:");
274-
VisitIndented(lambda.Body);
273+
VisitIndented(node.Body);
275274
}
276-
return lambda;
275+
return node;
277276
}
278277

279278
/// <summary>
280279
/// Visits a NewExpression.
281280
/// </summary>
282-
/// <param name="nex">The NewExpression.</param>
281+
/// <param name="node">The NewExpression.</param>
283282
/// <returns>The NewExpression.</returns>
284-
protected override NewExpression VisitNew(NewExpression nex)
283+
protected override NewExpression VisitNew(NewExpression node)
285284
{
286-
WriteHeader(nex);
285+
WriteHeader(node);
287286
using (new Indentation(this))
288287
{
289288
WriteLine("Arguments:");
290-
foreach (var arg in nex.Arguments)
289+
foreach (var arg in node.Arguments)
291290
{
292291
VisitIndented(arg);
293292
}
294293
}
295-
return nex;
294+
return node;
296295
}
297296

298297
/// <summary>
299298
/// Visits a MemberInitExpression.
300299
/// </summary>
301-
/// <param name="init">The MemberInitExpression.</param>
300+
/// <param name="node">The MemberInitExpression.</param>
302301
/// <returns>The MemberInitExpression.</returns>
303-
protected override Expression VisitMemberInit(MemberInitExpression init)
302+
protected override Expression VisitMemberInit(MemberInitExpression node)
304303
{
305304
throw new NotImplementedException();
306305
}
307306

308307
/// <summary>
309308
/// Visits a ListInitExpression.
310309
/// </summary>
311-
/// <param name="init">The ListInitExpression.</param>
310+
/// <param name="node">The ListInitExpression.</param>
312311
/// <returns>The ListInitExpression.</returns>
313-
protected override Expression VisitListInit(ListInitExpression init)
312+
protected override Expression VisitListInit(ListInitExpression node)
314313
{
315314
throw new NotImplementedException();
316315
}
317316

318317
/// <summary>
319318
/// Visits a NewArrayExpression.
320319
/// </summary>
321-
/// <param name="na">The NewArrayExpression.</param>
320+
/// <param name="node">The NewArrayExpression.</param>
322321
/// <returns>The NewArrayExpression.</returns>
323-
protected override Expression VisitNewArray(NewArrayExpression na)
322+
protected override Expression VisitNewArray(NewArrayExpression node)
324323
{
325324
throw new NotImplementedException();
326325
}
327326

328327
/// <summary>
329328
/// Visits an InvocationExpression.
330329
/// </summary>
331-
/// <param name="iv">The InvocationExpression.</param>
330+
/// <param name="node">The InvocationExpression.</param>
332331
/// <returns>The InvocationExpression.</returns>
333-
protected override Expression VisitInvocation(InvocationExpression iv)
332+
protected override Expression VisitInvocation(InvocationExpression node)
334333
{
335334
throw new NotImplementedException();
336335
}
@@ -363,17 +362,17 @@ private string PublicClassName(Type type)
363362
return FriendlyClassName(type);
364363
}
365364

366-
private void VisitIndented(Expression exp)
365+
private void VisitIndented(Expression node)
367366
{
368367
using (new Indentation(this))
369368
{
370-
Visit(exp);
369+
Visit(node);
371370
}
372371
}
373372

374-
private void WriteHeader(Expression exp)
373+
private void WriteHeader(Expression node)
375374
{
376-
WriteLine("{0}:{1} Type={2}", PublicClassName(exp.GetType()), exp.NodeType, FriendlyClassName(exp.Type));
375+
WriteLine("{0}:{1} Type={2}", PublicClassName(node.GetType()), node.NodeType, FriendlyClassName(node.Type));
377376
}
378377

379378
private void WriteLine(string line)

0 commit comments

Comments
 (0)