/// <summary> /// Curly brackets for multi line statements must not share line. /// </summary> /// <param name="node"> /// The node. /// </param> public void CurlyBracketsForMultiLineStatementsMustNotShareLine(ITreeNode node) { int offsetColumn = 0; for (ITreeNode currentNode = node; currentNode != null; currentNode = currentNode.NextSibling) { if (currentNode is ITokenNode) { ITokenNode tokenNode = currentNode as ITokenNode; if (tokenNode.GetTokenType() == CSharpTokenType.LBRACE) { // check to see if this LBRACE { is on a line with another non whitespace token if (tokenNode.Parent is ICreationExpressionInitializer) { ICreationExpressionInitializer creationExpressionInitializerNode = tokenNode.Parent as ICreationExpressionInitializer; if (creationExpressionInitializerNode != null) { ITokenNode leftBrace = creationExpressionInitializerNode.LBrace; ITokenNode rightBrace = creationExpressionInitializerNode.RBrace; ICreationExpression creationExpressionNode = tokenNode.GetContainingNode <ICreationExpression>(true); if (creationExpressionNode != null) { ITreeNode first = creationExpressionNode.FirstChild; ITreeNode last = creationExpressionNode.LastChild; if (Utils.HasLineBreakBetween(first, last)) { if (Utils.TokenHasNonWhitespaceTokenToRightOnSameLine(leftBrace)) { // We'll be 4-1 honest. offsetColumn = Utils.GetOffsetToStartOfLine(leftBrace); ITreeNode newLine = leftBrace.InsertNewLineAfter(); Utils.InsertWhitespaceAfter(newLine, offsetColumn + 3); } if (rightBrace != null) { // check to see if this RBRACE { is on a line with another non whitespace token if (Utils.TokenHasNonWhitespaceTokenToLeftOnSameLine(rightBrace)) { ITreeNode newLine = rightBrace.InsertNewLineBefore(); Utils.InsertWhitespaceAfter(newLine, offsetColumn); } } } } } } } } if (currentNode.FirstChild != null) { this.CurlyBracketsForMultiLineStatementsMustNotShareLine(currentNode.FirstChild); } } }