private static bool IsInSubExpression(SyntaxNode node) { var expression = node.Parent.FirstAncestorOrSelf <ExpressionSyntax>(ancestor => ancestor != null); return(expression != null && !AllowedParentExpressionKinds.Contains(expression.Kind())); }
private static bool IsCompliantAssignmentInsideExpression(AssignmentExpressionSyntax assignment, ExpressionSyntax topParenthesizedExpression) { var expressionParent = topParenthesizedExpression.Parent.FirstAncestorOrSelf <ExpressionSyntax>(); if (expressionParent == null) { // not inside an expression return(true); } if (IsCompliantCoalesceExpression(expressionParent, assignment)) { return(true); } if (RelationalExpressionKinds.Contains(expressionParent.Kind()) && IsInStatementCondition(expressionParent)) { return(true); } return(AllowedParentExpressionKinds.Contains(expressionParent.Kind())); }