Skip to content

Commit

Permalink
Fixed issue #2099.
Browse files Browse the repository at this point in the history
  • Loading branch information
moraispgsi committed Mar 1, 2019
1 parent eba6e48 commit 31f5fad
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 29 deletions.
@@ -1,6 +1,8 @@
package com.github.javaparser.ast.stmt; package com.github.javaparser.ast.stmt;


import com.github.javaparser.JavaParser; import com.github.javaparser.JavaParser;
import com.github.javaparser.ParserConfiguration;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.expr.Expression; import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.ast.expr.MethodCallExpr;
import com.github.javaparser.ast.expr.NameExpr; import com.github.javaparser.ast.expr.NameExpr;
Expand All @@ -23,33 +25,4 @@ void issue748AddingIdenticalStatementsDoesParentingRight() {
// This fails when the issue exists: // This fails when the issue exists:
String s = blockStmt.toString(); String s = blockStmt.toString();
} }

@Test
void issue2099AddingAddingStatementAfterTraillingComment() {
JavaParser javaParser = new JavaParser();

Statement statement = javaParser.parseStatement(
"if(value != null) {" + EOL +
" value.value();" + EOL +
"}").getResult().get();

BlockStmt blockStmt = LexicalPreservingPrinter.setup(
javaParser.parseBlock("{" + EOL +
" value(); // Test" + EOL +
"}").getResult().get());

blockStmt.addStatement(statement);
String s = LexicalPreservingPrinter.print(blockStmt);
String expected = "{\n" +
" value(); // Test\n" +
" if(value != null) {\n" +
" value.value();\n" +
" }\n" +
"}";
System.out.println("EXPECTED:\n" + expected);
System.out.println("RESULT:\n" + s);

assertEqualsNoEol(expected, blockStmt.toString());
}

} }
@@ -1,19 +1,24 @@
package com.github.javaparser.printer.lexicalpreservation; package com.github.javaparser.printer.lexicalpreservation;


import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.body.FieldDeclaration; import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.body.VariableDeclarator; import com.github.javaparser.ast.body.VariableDeclarator;
import com.github.javaparser.ast.expr.Expression; import com.github.javaparser.ast.expr.Expression;
import com.github.javaparser.ast.expr.NameExpr; import com.github.javaparser.ast.expr.NameExpr;
import com.github.javaparser.ast.expr.NullLiteralExpr; import com.github.javaparser.ast.expr.NullLiteralExpr;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.ReturnStmt; import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.stmt.Statement;
import com.github.javaparser.ast.type.ArrayType; import com.github.javaparser.ast.type.ArrayType;
import com.github.javaparser.ast.type.PrimitiveType; import com.github.javaparser.ast.type.PrimitiveType;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;


import java.io.IOException; import java.io.IOException;


import static com.github.javaparser.ast.Modifier.Keyword.STATIC; import static com.github.javaparser.ast.Modifier.Keyword.STATIC;
import static com.github.javaparser.utils.TestUtils.assertEqualsNoEol;
import static com.github.javaparser.utils.Utils.EOL;


/** /**
* These tests are more "high level" than the ones in LexicalPreservingPrinterTest. * These tests are more "high level" than the ones in LexicalPreservingPrinterTest.
Expand Down Expand Up @@ -140,4 +145,29 @@ void exampleParam5() throws IOException {
md.getBody().get().getStatements().add(new ReturnStmt(new NameExpr("p1"))); md.getBody().get().getStatements().add(new ReturnStmt(new NameExpr("p1")));
assertTransformed("Example_param5", cu); assertTransformed("Example_param5", cu);
} }

@Test
void issue2099AddingAddingStatementAfterTraillingComment() {
Statement statement = LexicalPreservingPrinter.setup(StaticJavaParser.parseStatement(
" if(value != null) {" + EOL +
" value.value();" + EOL +
" }"));

BlockStmt blockStmt = LexicalPreservingPrinter.setup(StaticJavaParser.parseBlock("{" + EOL +
" value1();" + EOL +
" value2(); // Test" + EOL +
"}"));

blockStmt.addStatement(statement);
String s = LexicalPreservingPrinter.print(blockStmt);
String expected = "{\n" +
" value1();\n" +
" value2(); // Test\n" +
" if(value != null) {\n" +
" value.value();\n" +
" }\n" +
"}";
assertEqualsNoEol(expected, s);
}

} }
Expand Up @@ -572,6 +572,13 @@ private void applyAddedDiffElement(Added added) {
} }


if (!used) { if (!used) {
if(nodeText.numberOfElements() > originalIndex + 1 &&
nodeText.getTextElement(originalIndex).isComment()) {
originalIndex++;
for (TextElement e : indentationBlock()) {
nodeText.addElement(originalIndex++, e);
}
}
nodeText.addElement(originalIndex, addedTextElement); nodeText.addElement(originalIndex, addedTextElement);
originalIndex++; originalIndex++;
} }
Expand Down

0 comments on commit 31f5fad

Please sign in to comment.