Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ VisitBinary()

override Expression System.Linq.Expressions.DebugViewWriter.VisitBinary ( BinaryExpression node)
inlinepackagevirtual

Reimplemented from System.Linq.Expressions.ExpressionVisitor.

Definition at line 254 of file DebugViewWriter.cs.

255 {
256 if (node.NodeType == ExpressionType.ArrayIndex)
257 {
259 Out("[");
260 Visit(node.Right);
261 Out("]");
262 }
263 else
264 {
265 bool flag = NeedsParentheses(node, node.Left);
266 bool flag2 = NeedsParentheses(node, node.Right);
267 Flow before = Flow.Space;
268 string s;
269 switch (node.NodeType)
270 {
271 case ExpressionType.Assign:
272 s = "=";
273 break;
274 case ExpressionType.Equal:
275 s = "==";
276 break;
277 case ExpressionType.NotEqual:
278 s = "!=";
279 break;
280 case ExpressionType.AndAlso:
281 s = "&&";
282 before = Flow.Space | Flow.Break;
283 break;
284 case ExpressionType.OrElse:
285 s = "||";
286 before = Flow.Space | Flow.Break;
287 break;
288 case ExpressionType.GreaterThan:
289 s = ">";
290 break;
291 case ExpressionType.LessThan:
292 s = "<";
293 break;
294 case ExpressionType.GreaterThanOrEqual:
295 s = ">=";
296 break;
297 case ExpressionType.LessThanOrEqual:
298 s = "<=";
299 break;
300 case ExpressionType.Add:
301 s = "+";
302 break;
303 case ExpressionType.AddAssign:
304 s = "+=";
305 break;
306 case ExpressionType.AddAssignChecked:
307 s = "#+=";
308 break;
309 case ExpressionType.AddChecked:
310 s = "#+";
311 break;
312 case ExpressionType.Subtract:
313 s = "-";
314 break;
315 case ExpressionType.SubtractAssign:
316 s = "-=";
317 break;
318 case ExpressionType.SubtractAssignChecked:
319 s = "#-=";
320 break;
321 case ExpressionType.SubtractChecked:
322 s = "#-";
323 break;
324 case ExpressionType.Divide:
325 s = "/";
326 break;
327 case ExpressionType.DivideAssign:
328 s = "/=";
329 break;
330 case ExpressionType.Modulo:
331 s = "%";
332 break;
333 case ExpressionType.ModuloAssign:
334 s = "%=";
335 break;
336 case ExpressionType.Multiply:
337 s = "*";
338 break;
339 case ExpressionType.MultiplyAssign:
340 s = "*=";
341 break;
342 case ExpressionType.MultiplyAssignChecked:
343 s = "#*=";
344 break;
345 case ExpressionType.MultiplyChecked:
346 s = "#*";
347 break;
348 case ExpressionType.LeftShift:
349 s = "<<";
350 break;
351 case ExpressionType.LeftShiftAssign:
352 s = "<<=";
353 break;
354 case ExpressionType.RightShift:
355 s = ">>";
356 break;
357 case ExpressionType.RightShiftAssign:
358 s = ">>=";
359 break;
360 case ExpressionType.And:
361 s = "&";
362 break;
363 case ExpressionType.AndAssign:
364 s = "&=";
365 break;
366 case ExpressionType.Or:
367 s = "|";
368 break;
369 case ExpressionType.OrAssign:
370 s = "|=";
371 break;
372 case ExpressionType.ExclusiveOr:
373 s = "^";
374 break;
375 case ExpressionType.ExclusiveOrAssign:
376 s = "^=";
377 break;
378 case ExpressionType.Power:
379 s = "**";
380 break;
381 case ExpressionType.PowerAssign:
382 s = "**=";
383 break;
384 case ExpressionType.Coalesce:
385 s = "??";
386 break;
387 default:
388 throw new InvalidOperationException();
389 }
390 if (flag)
391 {
392 Out("(", Flow.None);
393 }
394 Visit(node.Left);
395 if (flag)
396 {
397 Out(Flow.None, ")", Flow.Break);
398 }
399 Out(before, s, Flow.Space | Flow.Break);
400 if (flag2)
401 {
402 Out("(", Flow.None);
403 }
404 Visit(node.Right);
405 if (flag2)
406 {
407 Out(Flow.None, ")", Flow.Break);
408 }
409 }
410 return node;
411 }
void Add(TKey key, TValue value)
static bool NeedsParentheses(Expression parent, Expression child)
void ParenthesizedVisit(Expression parent, Expression nodeToVisit)
virtual ? Expression Visit(Expression? node)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Linq.Expressions.DebugViewWriter.NeedsParentheses(), System.Reflection.Out, System.Linq.Expressions.DebugViewWriter.ParenthesizedVisit(), System.s, and System.Linq.Expressions.ExpressionVisitor.Visit().