ASTokenFormatter: fix some issues with unary and arithmetic operators
diff --git a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
index 8fd808a..30fa3c9 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
@@ -449,7 +449,7 @@
}
case ASTokenTypes.TOKEN_OPERATOR_PLUS:
case ASTokenTypes.TOKEN_OPERATOR_MINUS: {
- boolean isUnary = checkTokenBeforeUnaryOperator(prevTokenNotComment);
+ boolean isUnary = checkTokenBeforePossibleUnaryOperator(prevTokenNotComment);
if (!isUnary && settings.insertSpaceBeforeAndAfterBinaryOperators) {
requiredSpace = true;
}
@@ -709,6 +709,10 @@
if (controlFlowParenStack <= 0) {
endIndentedStatement();
inControlFlowStatement = false;
+ if (!blockStack.isEmpty()) {
+ BlockStackItem stackItem = blockStack.get(blockStack.size() - 1);
+ stackItem.controlFlowEnd = token.getEnd();
+ }
controlFlowParenStack = 0;
blockOpenPending = true;
if (nextToken != null && nextToken.getType() == ASTokenTypes.TOKEN_SEMICOLON) {
@@ -735,9 +739,9 @@
}
case ASTokenTypes.TOKEN_OPERATOR_INCREMENT:
case ASTokenTypes.TOKEN_OPERATOR_DECREMENT: {
- if (!inControlFlowStatement && prevToken != null
- && prevToken.getType() != ASTokenTypes.TOKEN_SEMICOLON && nextToken != null
- && nextToken.getType() != ASTokenTypes.TOKEN_SEMICOLON) {
+ if (!inControlFlowStatement
+ && !checkTokenBeforePossibleUnaryOperator(prevTokenNotComment)
+ && !checkTokenAfterPossibleUnaryOperator(nextTokenNotComment)) {
requiredSpace = true;
}
break;
@@ -986,7 +990,7 @@
}
case ASTokenTypes.TOKEN_OPERATOR_PLUS:
case ASTokenTypes.TOKEN_OPERATOR_MINUS: {
- boolean isUnary = checkTokenBeforeUnaryOperator(prevTokenNotComment);
+ boolean isUnary = checkTokenBeforePossibleUnaryOperator(prevTokenNotComment);
if (!isUnary && settings.insertSpaceBeforeAndAfterBinaryOperators
&& !skipWhitespaceBeforeSemicolon) {
requiredSpace = true;
@@ -1452,12 +1456,42 @@
&& nextToken.getType() == ASTokenTypes.TOKEN_TYPED_LITERAL_CLOSE));
}
- private boolean checkTokenBeforeUnaryOperator(IASToken token) {
- return (token instanceof ASToken) ? ((ASToken) token).isOperator()
- || token.getType() == ASTokenTypes.TOKEN_SQUARE_OPEN || token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN
- || token.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN || token.getType() == ASTokenTypes.TOKEN_SEMICOLON
- || token.getType() == ASTokenTypes.TOKEN_KEYWORD_RETURN || token.getType() == ASTokenTypes.TOKEN_COMMA
- || token.getType() == ASTokenTypes.TOKEN_COLON : (token == null);
+ private boolean checkTokenBeforePossibleUnaryOperator(IASToken token) {
+ if (token instanceof ASToken) {
+ if (token.getType() == ASTokenTypes.TOKEN_PAREN_CLOSE && !blockStack.isEmpty()) {
+ BlockStackItem stackItem = blockStack.get(blockStack.size() - 1);
+ if (stackItem.controlFlowEnd == token.getEnd()) {
+ return true;
+ }
+ }
+ return ((ASToken) token).isOperator()
+ || token.getType() == ASTokenTypes.TOKEN_SQUARE_OPEN
+ // square close may not indicate unary operator: arr[x] + 3
+ || token.getType() == ASTokenTypes.TOKEN_PAREN_OPEN
+ // paren close may not indicate unary operator: (1 + 2) + 3
+ || token.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN
+ // however, block close is more like semicolon than square/paren close
+ || token.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE
+ || token.getType() == ASTokenTypes.TOKEN_SEMICOLON
+ || token.getType() == ASTokenTypes.TOKEN_KEYWORD_RETURN
+ || token.getType() == ASTokenTypes.TOKEN_COMMA
+ || token.getType() == ASTokenTypes.TOKEN_COLON;
+ }
+ return token == null;
+ }
+
+ private boolean checkTokenAfterPossibleUnaryOperator(IASToken token) {
+ if (token instanceof ASToken) {
+ return ((ASToken) token).isOperator()
+ || token.getType() == ASTokenTypes.TOKEN_SQUARE_CLOSE
+ // paren open may not indicate unary operator: 1 + (2 + 3)
+ || token.getType() == ASTokenTypes.TOKEN_PAREN_CLOSE
+ || token.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN
+ || token.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE
+ || token.getType() == ASTokenTypes.TOKEN_SEMICOLON
+ || token.getType() == ASTokenTypes.TOKEN_COMMA;
+ }
+ return token == null;
}
private boolean isInForStatement(List<BlockStackItem> blockStack) {
@@ -1563,6 +1597,7 @@
public boolean braces = true;
public boolean indentedStatement = false;
public boolean controlFlow = false;
+ public int controlFlowEnd = -1;
}
private static class ObjectLiteralBlockStackItem extends BlockStackItem {
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestArithmeticOperators.java b/formatter/src/test/java/org/apache/royale/formatter/TestArithmeticOperators.java
index 65aef25..3e6525b 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestArithmeticOperators.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestArithmeticOperators.java
@@ -223,4 +223,204 @@
// @formatter:on
result);
}
+
+ @Test
+ public void testAdditionOperatorWithParentheses1() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(a+b)+c;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(a + b) + c;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAdditionOperatorWithParentheses2() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "a+(b+c);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "a + (b + c);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testSubtractionOperatorWithParentheses1() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(a-b)-c;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(a - b) - c;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testSubtractionOperatorWithParentheses2() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "a-(b-c);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "a - (b - c);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testMultiplicationOperatorWithParentheses1() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(a*b)*c;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(a * b) * c;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testMultiplicationOperatorWithParentheses2() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "a*(b*c);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "a * (b * c);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testDivisionOperatorWithParentheses1() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(a/b)/c;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(a / b) / c;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testDivisionOperatorWithParentheses2() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "a/(b/c);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "a / (b / c);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testModuloOperatorWithParentheses1() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(a%b)%c;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(a % b) % c;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testModuloOperatorWithParentheses2() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "a%(b%c);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "a % (b % c);",
+ // @formatter:on
+ result);
+ }
}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestDecrementOperator.java b/formatter/src/test/java/org/apache/royale/formatter/TestDecrementOperator.java
index 9833495..0a744d8 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestDecrementOperator.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestDecrementOperator.java
@@ -63,4 +63,180 @@
// @formatter:on
result);
}
+
+ @Test
+ public void testAfterWithPrecedingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "// comment\n" +
+ "i--;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "// comment\n" +
+ "i--;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterWithFollowingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "i--;\n" +
+ "// comment",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "i--;\n" +
+ "// comment",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterInsideBlock() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "{\n" +
+ "\ti--;\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\ti--;\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterInsideParentheses() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(i--);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(i--);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeWithPrecedingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "// comment\n" +
+ "--i;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "// comment\n" +
+ "--i;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeWithFollowingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "--i;\n" +
+ "// comment",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "--i;\n" +
+ "// comment",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeInsideBlock() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "{\n" +
+ "\t--i;\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\t--i;\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeInsideParentheses() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(--i);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(--i);",
+ // @formatter:on
+ result);
+ }
}
diff --git a/formatter/src/test/java/org/apache/royale/formatter/TestIncrementOperator.java b/formatter/src/test/java/org/apache/royale/formatter/TestIncrementOperator.java
index 66573ab..eddfe81 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestIncrementOperator.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestIncrementOperator.java
@@ -63,4 +63,226 @@
// @formatter:on
result);
}
+
+ @Test
+ public void testAfterWithPrecedingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "// comment\n" +
+ "i++;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "// comment\n" +
+ "i++;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterWithFollowingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "i++;\n" +
+ "// comment",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "i++;\n" +
+ "// comment",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterInsideBlock() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "{\n" +
+ "\ti++;\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\ti++;\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testAfterInsideParentheses() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(i++);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(i++);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeWithPrecedingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "// comment\n" +
+ "++i;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "// comment\n" +
+ "++i;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeWithFollowingComment() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "++i;\n" +
+ "// comment",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "++i;\n" +
+ "// comment",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeInsideBlock() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "{\n" +
+ "\t++i;\n" +
+ "}",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "\t++i;\n" +
+ "}",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeAfterBlock() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "{\n" +
+ "}\n" +
+ "++i;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "{\n" +
+ "}\n" +
+ "++i;",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeInsideParentheses() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "(++i);",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "(++i);",
+ // @formatter:on
+ result);
+ }
+
+ @Test
+ public void testBeforeAsStatementInsideIfWithoutBraces() {
+ FormatterSettings settings = new FormatterSettings();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = true;
+ settings.placeOpenBraceOnNewLine = true;
+ settings.insertSpaces = false;
+ ASTokenFormatter formatter = new ASTokenFormatter(settings);
+ String result = formatter.format("file.as",
+ // @formatter:off
+ "if (condition)\n" +
+ "\t++i;",
+ // @formatter:on
+ problems
+ );
+ assertEquals(
+ // @formatter:off
+ "if (condition)\n" +
+ "\t++i;",
+ // @formatter:on
+ result);
+ }
}