From 08f226dae79e93a83a2d3a2d2add08c30be93a94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20PHAM?= Date: Tue, 18 Jun 2019 17:43:12 +0200 Subject: [PATCH 1/3] little tweak, softline in variable initialization --- packages/prettier-plugin-java/src/printers/classes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/prettier-plugin-java/src/printers/classes.js b/packages/prettier-plugin-java/src/printers/classes.js index 911afdea0..8fe0f2f13 100644 --- a/packages/prettier-plugin-java/src/printers/classes.js +++ b/packages/prettier-plugin-java/src/printers/classes.js @@ -194,6 +194,7 @@ class ClassesPrettierVisitor { return rejectAndJoin(" ", [ variableDeclaratorId, ctx.Equals[0], + softline, variableInitializer ]); } From e8ed8a4642ff8618f39b9be8cfc35eb54299edbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20PHAM?= Date: Fri, 21 Jun 2019 17:53:24 +0200 Subject: [PATCH 2/3] wip: changed tests for better annotation and broke the first method/ref call --- .../src/printers/blocks-and-statements.js | 14 +++- .../src/printers/classes.js | 13 ++-- .../src/printers/expressions.js | 75 ++++++++++--------- .../src/printers/printer-utils.js | 12 ++- .../unit-test/comments/class/_output.java | 41 ++++------ .../test/unit-test/member_chain/_output.java | 3 +- .../test/unit-test/variables/_output.java | 5 +- 7 files changed, 84 insertions(+), 79 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/blocks-and-statements.js b/packages/prettier-plugin-java/src/printers/blocks-and-statements.js index c41275621..eb0fae819 100644 --- a/packages/prettier-plugin-java/src/printers/blocks-and-statements.js +++ b/packages/prettier-plugin-java/src/printers/blocks-and-statements.js @@ -49,7 +49,7 @@ class BlocksAndStatementPrettierVisitor { localVariableDeclarationStatement(ctx) { const localVariableDeclaration = this.visit(ctx.localVariableDeclaration); - return rejectAndConcat([localVariableDeclaration, ctx.Semicolon[0]]); + return group(rejectAndConcat([localVariableDeclaration, ctx.Semicolon[0]])); } localVariableDeclaration(ctx) { @@ -58,9 +58,15 @@ class BlocksAndStatementPrettierVisitor { const variableDeclaratorList = this.visit(ctx.variableDeclaratorList); return rejectAndJoin(" ", [ - rejectAndJoin(" ", variableModifiers), - localVariableType, - variableDeclaratorList + rejectAndJoin(" ", variableModifiers), //@SuppressWarnings("unchecked") + group( + concat([ + softline, + localVariableType, + " ", //V[][] + variableDeclaratorList + ]) + ) //tmpArray = (V[][]) new Object[rowList{BREKALINE}.size()][columnList.size()] ]); } diff --git a/packages/prettier-plugin-java/src/printers/classes.js b/packages/prettier-plugin-java/src/printers/classes.js index 8fe0f2f13..3140c0554 100644 --- a/packages/prettier-plugin-java/src/printers/classes.js +++ b/packages/prettier-plugin-java/src/printers/classes.js @@ -191,12 +191,13 @@ class ClassesPrettierVisitor { const variableDeclaratorId = this.visit(ctx.variableDeclaratorId); if (ctx.Equals) { const variableInitializer = this.visit(ctx.variableInitializer); - return rejectAndJoin(" ", [ - variableDeclaratorId, - ctx.Equals[0], - softline, - variableInitializer - ]); + return group( + rejectAndJoin(" ", [ + variableDeclaratorId, + ctx.Equals[0], + variableInitializer + ]) + ); } return variableDeclaratorId; } diff --git a/packages/prettier-plugin-java/src/printers/expressions.js b/packages/prettier-plugin-java/src/printers/expressions.js index c41226d2c..57db35cef 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.js +++ b/packages/prettier-plugin-java/src/printers/expressions.js @@ -233,7 +233,7 @@ class ExpressionsPrettierVisitor { : []; return rejectAndConcat([ rejectAndConcat(unaryPrefixOperator), - primary, + primary, //System.out.println("..."); //userRepository.findAll().collectList().block().size(); rejectAndConcat(unarySuffixOperator) ]); } @@ -257,50 +257,52 @@ class ExpressionsPrettierVisitor { primary(ctx) { const primaryPrefix = this.visit(ctx.primaryPrefix); - const primarySuffixes = this.mapVisit(ctx.primarySuffix); - - const suffixes = []; - let addIndent = false; - for (let i = 0; i < primarySuffixes.length; i++) { - if (ctx.primarySuffix[i].children.Dot !== undefined) { - suffixes.push(indent(softline), primarySuffixes[i]); - addIndent = true; - } else if ( - ctx.primarySuffix[i].children.methodInvocationSuffix === undefined - ) { - suffixes.push(softline, primarySuffixes[i]); - } else { - if (addIndent) { - suffixes.push(indent(primarySuffixes[i])); - addIndent = false; + + if (ctx.primarySuffix !== undefined) { + const primarySuffixes = this.mapVisit(ctx.primarySuffix); + + const separators = []; + + ctx.primarySuffix.forEach(primarySuffix => { + if (primarySuffix.children.Dot !== undefined) { + separators.push(softline); + } else if ( + primarySuffix.children.classLiteralSuffix !== undefined && + primarySuffix.children.classLiteralSuffix[0].children.Dot !== + undefined + ) { + separators.push(softline); } else { - suffixes.push(primarySuffixes[i]); + separators.push(""); } + }); + + let firstSeparator = separators.shift(); + + if (ctx.primaryPrefix[0].children.This !== undefined) { + firstSeparator = ""; } - } - let firstSeparator = suffixes.shift(); - if ( - ctx.primaryPrefix[0].children.This !== undefined || - firstSeparator === undefined - ) { - firstSeparator = ""; + return group( + concat([ + // comment below overtakes priority + // primarySuffixes.length > 1 ? primaryPrefix : group(primaryPrefix), // System.out.println // "..." //userRepostiory.findAll() + primaryPrefix, + rejectAndConcat([ + indent(firstSeparator), + rejectAndJoinSeps(separators, primarySuffixes) // .collectList().block().size() + ]) + ]) + ); } - return group( - rejectAndConcat([ - primaryPrefix, - firstSeparator, - rejectAndConcat(suffixes) - ]) - ); + return primaryPrefix; } primaryPrefix(ctx) { if (ctx.This || ctx.Void || ctx.Boolean) { return getImageWithComments(this.getSingle(ctx)); } - return this.visitSingle(ctx); } @@ -328,12 +330,14 @@ class ExpressionsPrettierVisitor { const fqnOrRefTypePart = this.mapVisit(ctx.fqnOrRefTypePart); const dims = this.visit(ctx.dims); const dots = ctx.Dot ? ctx.Dot : []; - return rejectAndConcat([rejectAndJoinSeps(dots, fqnOrRefTypePart), dims]); + return rejectAndConcat([ + rejectAndJoinSeps(dots, fqnOrRefTypePart, "", indent(softline)), + dims + ]); } fqnOrRefTypePart(ctx) { const annotation = this.mapVisit(ctx.annotation); - let fqnOrRefTypePart$methodTypeArguments = ""; if ( ctx.$methodTypeArguments && @@ -351,7 +355,6 @@ class ExpressionsPrettierVisitor { } else { keyWord = ctx.Super[0]; } - let fqnOrRefTypePart$classTypeArguments = ""; if ( ctx.$classTypeArguments && diff --git a/packages/prettier-plugin-java/src/printers/printer-utils.js b/packages/prettier-plugin-java/src/printers/printer-utils.js index c13eb0aa8..640c5f8fb 100644 --- a/packages/prettier-plugin-java/src/printers/printer-utils.js +++ b/packages/prettier-plugin-java/src/printers/printer-utils.js @@ -12,7 +12,7 @@ function buildFqn(tokens, dots) { return rejectAndJoinSeps(dots ? dots : [], tokens); } -function rejectAndJoinSeps(sepTokens, elems, sep) { +function rejectAndJoinSeps(sepTokens, elems, sepAfter, sepBefore) { if (!Array.isArray(sepTokens)) { return rejectAndJoin(sepTokens, elems); } @@ -20,9 +20,13 @@ function rejectAndJoinSeps(sepTokens, elems, sep) { const res = []; for (let i = 0; i < sepTokens.length; i++) { - res.push(actualElements[i], sepTokens[i]); - if (sep) { - res.push(sep); + res.push(actualElements[i]); + if (sepBefore) { + res.push(sepBefore); + } + res.push(sepTokens[i]); + if (sepAfter) { + res.push(sepAfter); } } res.push(...actualElements.slice(sepTokens.length)); diff --git a/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java b/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java index 20317f7af..e01d57f0a 100644 --- a/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/comments/class/_output.java @@ -151,9 +151,8 @@ private ArrayTable( rowKeyToIndex = Maps.indexMap(rowList); columnKeyToIndex = Maps.indexMap(columnList); - @SuppressWarnings( - "unchecked" - ) V[][] tmpArray = (V[][]) new Object[rowList.size()][columnList.size()]; + @SuppressWarnings("unchecked") + V[][] tmpArray = (V[][]) new Object[rowList.size()][columnList.size()]; array = tmpArray; // Necessary because in GWT the arrays are initialized with "undefined" instead of null. @@ -170,9 +169,8 @@ private ArrayTable(ArrayTable table) { columnList = table.columnList; rowKeyToIndex = table.rowKeyToIndex; columnKeyToIndex = table.columnKeyToIndex; - @SuppressWarnings( - "unchecked" - ) V[][] copy = (V[][]) new Object[rowList.size()][columnList.size()]; + @SuppressWarnings("unchecked") + V[][] copy = (V[][]) new Object[rowList.size()][columnList.size()]; array = copy; for (int i = 0; i < rowList.size(); i++) { System.arraycopy(table.array[i], 0, copy[i], 0, table.array[i].length); @@ -246,11 +244,8 @@ protected Entry get(final int index) { @Override Spliterator> entrySpliterator() { - return CollectSpliterators.indexed( - size(), - Spliterator.ORDERED, - this::getEntry - ); + return CollectSpliterators + .indexed(size(), Spliterator.ORDERED, this::getEntry); } // TODO(lowasser): consider an optimized values() implementation @@ -360,11 +355,9 @@ public V set(int rowIndex, int columnIndex, @Nullable V value) { */ @GwtIncompatible // reflection public V[][] toArray(Class valueClass) { - @SuppressWarnings("unchecked") V[][] copy = (V[][]) Array.newInstance( // TODO: safe? - valueClass, - rowList.size(), - columnList.size() - ); + @SuppressWarnings("unchecked") // TODO: safe? + V[][] copy = (V[][]) Array + .newInstance(valueClass, rowList.size(), columnList.size()); for (int i = 0; i < rowList.size(); i++) { System.arraycopy(array[i], 0, copy[i], 0, array[i].length); } @@ -558,10 +551,11 @@ protected Cell get(final int index) { @Override Spliterator> cellSpliterator() { - return CollectSpliterators.indexed( - size(), - Spliterator.ORDERED | Spliterator.NONNULL | Spliterator.DISTINCT, - this::getCell + return CollectSpliterators + .indexed( + size(), + Spliterator.ORDERED | Spliterator.NONNULL | Spliterator.DISTINCT, + this::getCell ); } @@ -799,11 +793,8 @@ protected V get(int index) { @Override Spliterator valuesSpliterator() { - return CollectSpliterators.indexed( - size(), - Spliterator.ORDERED, - this::getValue - ); + return CollectSpliterators + .indexed(size(), Spliterator.ORDERED, this::getValue); } private static final long serialVersionUID = 0; diff --git a/packages/prettier-plugin-java/test/unit-test/member_chain/_output.java b/packages/prettier-plugin-java/test/unit-test/member_chain/_output.java index 473310853..7d5c7a788 100644 --- a/packages/prettier-plugin-java/test/unit-test/member_chain/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/member_chain/_output.java @@ -43,7 +43,8 @@ public void doSomethingLongNew2() { } public void doSomethingLongStatic() { - return Object.something() + return Object + .something() .more() .and() .that() diff --git a/packages/prettier-plugin-java/test/unit-test/variables/_output.java b/packages/prettier-plugin-java/test/unit-test/variables/_output.java index 5788eea77..10cc9ede3 100644 --- a/packages/prettier-plugin-java/test/unit-test/variables/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/variables/_output.java @@ -1,8 +1,7 @@ public class Variables { public static int STATIC_VARIABLE = 123; - private static final Logger LOGGER = LoggerFactory.getLogger( - ComplexFilterTest.class - ); + private static final Logger LOGGER = LoggerFactory + .getLogger(ComplexFilterTest.class); int packageVariable = 234; private float privateVariable = 0.9f; From 6719a02bdd1b74ee60ea9ad7029948c801d54fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20PHAM?= Date: Mon, 24 Jun 2019 11:40:06 +0200 Subject: [PATCH 3/3] wip: fixed indentation, todo: dedent first expression in block statements --- .../src/printers/classes.js | 1 - .../src/printers/expressions.js | 28 +++++++++++++------ .../src/printers/printer-utils.js | 2 +- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/classes.js b/packages/prettier-plugin-java/src/printers/classes.js index 63993c796..90bf3c0c0 100644 --- a/packages/prettier-plugin-java/src/printers/classes.js +++ b/packages/prettier-plugin-java/src/printers/classes.js @@ -440,7 +440,6 @@ class ClassesPrettierVisitor { if (ctx.block) { return this.visit(ctx.block); } - return getImageWithComments(this.getSingle(ctx)); } diff --git a/packages/prettier-plugin-java/src/printers/expressions.js b/packages/prettier-plugin-java/src/printers/expressions.js index a6415ce1f..aa5ec44e2 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.js +++ b/packages/prettier-plugin-java/src/printers/expressions.js @@ -7,6 +7,7 @@ const { concat, group, indent, + dedent, getImageWithComments } = require("./prettier-builder"); const { @@ -277,17 +278,25 @@ class ExpressionsPrettierVisitor { if (ctx.primaryPrefix[0].children.This !== undefined) { firstSeparator = ""; } + // console.log("====================="); + // console.log(ctx.primaryPrefix[0]); + // console.log("---------------------"); + // console.log(primarySuffixes[0]); + // console.log("size -> " + primarySuffixes.length); + // console.log("====================="); return group( - concat([ - // comment below overtakes priority - // primarySuffixes.length > 1 ? primaryPrefix : group(primaryPrefix), // System.out.println // "..." //userRepostiory.findAll() - primaryPrefix, - rejectAndConcat([ - indent(firstSeparator), - rejectAndJoinSeps(separators, primarySuffixes) // .collectList().block().size() + indent( + concat([ + // comment below overtakes priority + // primarySuffixes.length > 1 ? primaryPrefix : group(primaryPrefix), // System.out.println // "..." //userRepostiory.findAll() + primaryPrefix, + rejectAndConcat([ + firstSeparator, + rejectAndJoinSeps(separators, primarySuffixes) // .collectList().block().size() + ]) ]) - ]) + ) ); } @@ -298,6 +307,7 @@ class ExpressionsPrettierVisitor { if (ctx.This || ctx.Void || ctx.Boolean) { return getImageWithComments(this.getSingle(ctx)); } + return this.visitSingle(ctx); } @@ -326,7 +336,7 @@ class ExpressionsPrettierVisitor { const dims = this.visit(ctx.dims); const dots = ctx.Dot ? ctx.Dot : []; return rejectAndConcat([ - rejectAndJoinSeps(dots, fqnOrRefTypePart, "", indent(softline)), + rejectAndJoinSeps(dots, fqnOrRefTypePart, "", softline), dims ]); } diff --git a/packages/prettier-plugin-java/src/printers/printer-utils.js b/packages/prettier-plugin-java/src/printers/printer-utils.js index c1fc2da1a..3b9d811d3 100644 --- a/packages/prettier-plugin-java/src/printers/printer-utils.js +++ b/packages/prettier-plugin-java/src/printers/printer-utils.js @@ -12,7 +12,7 @@ function buildFqn(tokens, dots) { return rejectAndJoinSeps(dots ? dots : [], tokens); } -function rejectAndJoinSeps(sepTokens, elems, sepAfter, sepBefore) { +function rejectAndJoinSeps(sepTokens, elems, sepAfter = "", sepBefore = "") { if (!Array.isArray(sepTokens)) { return rejectAndJoin(sepTokens, elems); }