private BoundExpression Negate(BoundExpression condition) { if (condition is BoundLiteralExpression literal) { var value = (bool)literal.Value; return(new BoundLiteralExpression(!value)); } var op = BoundUnaryOperator.Bind(SyntaxKind.BangToken, TypeSymbol.Bool); return(new BoundUnaryExpression(op, condition)); }
/// <summary> /// Initializes a new instance of the <see cref="BoundUnaryExpression"/> class. /// </summary> /// <param name="op">The bound unary operator.</param> /// <param name="operand">The bound expression.</param> public BoundUnaryExpression(BoundUnaryOperator op, BoundExpression operand) { Op = op; Operand = operand; }