public virtual void VisitExpression(BoundExpression node)
{
if (node == null)
throw new ArgumentNullException(nameof(node));
switch (node.Kind)
{
case BoundNodeKind.LiteralExpression:
VisitLiteralExpression((BoundLiteralExpression) node);
break;
case BoundNodeKind.StringLiteralExpression:
VisitStringLiteralExpression((BoundStringLiteralExpression) node);
break;
case BoundNodeKind.UnaryExpression:
VisitUnaryExpression((BoundUnaryExpression) node);
break;
case BoundNodeKind.BinaryExpression:
VisitBinaryExpression((BoundBinaryExpression) node);
break;
case BoundNodeKind.FieldExpression:
VisitFieldExpression((BoundFieldExpression) node);
break;
case BoundNodeKind.FunctionInvocationExpression:
VisitFunctionInvocationExpression((BoundFunctionInvocationExpression) node);
break;
case BoundNodeKind.MethodInvocationExpression:
VisitMethodInvocationExpression((BoundMethodInvocationExpression) node);
break;
case BoundNodeKind.NumericConstructorInvocationExpression:
VisitNumericConstructorInvocationExpression((BoundNumericConstructorInvocationExpression) node);
break;
case BoundNodeKind.AssignmentExpression:
VisitAssignmentExpression((BoundAssignmentExpression) node);
break;
case BoundNodeKind.ConversionExpression:
VisitConversionExpression((BoundConversionExpression) node);
break;
case BoundNodeKind.CompoundExpression:
VisitCompoundExpression((BoundCompoundExpression) node);
break;
case BoundNodeKind.ConditionalExpression:
VisitConditionExpression((BoundConditionalExpression) node);
break;
case BoundNodeKind.ElementAccessExpression:
VisitElementAccessExpression((BoundElementAccessExpression) node);
break;
case BoundNodeKind.ArrayInitializerExpression:
VisitArrayInitializerExpression((BoundArrayInitializerExpression) node);
break;
case BoundNodeKind.ErrorExpression:
VisitErrorExpression((BoundErrorExpression) node);
break;
case BoundNodeKind.VariableExpression:
VisitVariableExpression((BoundVariableExpression) node);
break;
case BoundNodeKind.CompileExpression:
VisitCompileExpression((BoundCompileExpression)node);
break;
default:
throw new InvalidOperationException(node.Kind.ToString());
}
}