public override void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression) { if (Emitter != null && binaryOperatorExpression.GetParent <SyntaxTree>() != null) { if (Emitter.Resolver.ResolveNode(binaryOperatorExpression) is OperatorResolveResult rr && rr.Type.IsKnownType(KnownTypeCode.Boolean)) { var count = AwaitExpressions.Count; var idx = InsertPosition; base.VisitBinaryOperatorExpression(binaryOperatorExpression); if (AwaitExpressions.Count > count && ( binaryOperatorExpression.Operator == BinaryOperatorType.BitwiseAnd || binaryOperatorExpression.Operator == BinaryOperatorType.BitwiseOr || binaryOperatorExpression.Operator == BinaryOperatorType.ConditionalOr || binaryOperatorExpression.Operator == BinaryOperatorType.ConditionalAnd)) { AwaitExpressions.Insert(idx > -1 ? idx : 0, binaryOperatorExpression); } return; } } base.VisitBinaryOperatorExpression(binaryOperatorExpression); }
private void Add(AstNode node) { if (InsertPosition >= 0) { AwaitExpressions.Insert(InsertPosition++, node); } else { AwaitExpressions.Add(node); } }
public override void VisitConditionalExpression(ConditionalExpression conditionalExpression) { var count = AwaitExpressions.Count; var idx = InsertPosition; base.VisitConditionalExpression(conditionalExpression); if (AwaitExpressions.Count > count) { AwaitExpressions.Insert(idx > -1 ? idx : 0, conditionalExpression); } }