protected override Expression VisitUnaryOperator(UnaryOperatorBindingParserNode node) { var operand = Visit(node.InnerExpression); ExpressionType eop; switch (node.Operator) { case BindingTokenType.AddOperator: eop = ExpressionType.UnaryPlus; break; case BindingTokenType.SubtractOperator: eop = ExpressionType.Negate; break; case BindingTokenType.NotOperator: eop = ExpressionType.Not; break; default: throw new NotSupportedException($"unary operator { node.Operator } is not supported"); } return(ExpressionHelper.GetUnaryOperator(operand, eop)); }
private static void CheckUnaryOperatorNodeType <TInnerExpression>(UnaryOperatorBindingParserNode node, BindingTokenType operatorType) where TInnerExpression : BindingParserNode { Assert.IsTrue(node.Operator == operatorType); Assert.IsTrue(node.InnerExpression is TInnerExpression); }
private static void CheckUnaryOperatorNodeType <TInnerExpression>(UnaryOperatorBindingParserNode node, BindingTokenType operatorType) where TInnerExpression : BindingParserNode { Assert.AreEqual(operatorType, node.Operator); Assert.IsInstanceOfType(node.InnerExpression, typeof(TInnerExpression)); }