private static bool IsNotUnderUnaryNegation([NotNull] CSharpPostfixExpressionContext context) { var unaryExpression = context.ExpressionWithReference as IUnaryExpression; var operatorExpression = UnaryOperatorExpressionNavigator.GetByOperand(unaryExpression); if (operatorExpression == null) { return(true); } return(operatorExpression.UnaryOperatorType != UnaryOperatorType.EXCL); }
protected override void AfterComplete(ITextControl textControl, ICSharpExpression expression) { // collapse '!!b' into 'b' var unary = expression as IUnaryOperatorExpression; if (unary != null && unary.UnaryOperatorType == UnaryOperatorType.EXCL) { var unary2 = UnaryOperatorExpressionNavigator.GetByOperand(unary); if (unary2 != null && unary2.UnaryOperatorType == UnaryOperatorType.EXCL) { var psiServices = expression.GetPsiServices(); expression = psiServices.DoTransaction( ExpandCommandName, () => unary2.ReplaceBy(unary.Operand)); } } base.AfterComplete(textControl, expression); }