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 1df79c3fd..3506272ad 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 01b9f2b2c..90bf3c0c0 100644 --- a/packages/prettier-plugin-java/src/printers/classes.js +++ b/packages/prettier-plugin-java/src/printers/classes.js @@ -193,11 +193,13 @@ class ClassesPrettierVisitor { const variableDeclaratorId = this.visit(ctx.variableDeclaratorId); if (ctx.Equals) { const variableInitializer = this.visit(ctx.variableInitializer); - return rejectAndJoin(" ", [ - variableDeclaratorId, - ctx.Equals[0], - variableInitializer - ]); + return group( + rejectAndJoin(" ", [ + variableDeclaratorId, + ctx.Equals[0], + variableInitializer + ]) + ); } return variableDeclaratorId; } @@ -438,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 07c03b567..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 { @@ -228,7 +229,7 @@ class ExpressionsPrettierVisitor { : []; return rejectAndConcat([ rejectAndConcat(unaryPrefixOperator), - primary, + primary, //System.out.println("..."); //userRepository.findAll().collectList().block().size(); rejectAndConcat(unarySuffixOperator) ]); } @@ -252,43 +253,54 @@ 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 = ""; } - } + // console.log("====================="); + // console.log(ctx.primaryPrefix[0]); + // console.log("---------------------"); + // console.log(primarySuffixes[0]); + // console.log("size -> " + primarySuffixes.length); + // console.log("====================="); - let firstSeparator = suffixes.shift(); - if ( - ctx.primaryPrefix[0].children.This !== undefined || - firstSeparator === undefined - ) { - firstSeparator = ""; + return group( + 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() + ]) + ]) + ) + ); } - return group( - rejectAndConcat([ - primaryPrefix, - firstSeparator, - rejectAndConcat(suffixes) - ]) - ); + return primaryPrefix; } primaryPrefix(ctx) { @@ -323,12 +335,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, "", softline), + dims + ]); } fqnOrRefTypePart(ctx) { const annotation = this.mapVisit(ctx.annotation); - let fqnOrRefTypePart$methodTypeArguments = ""; if ( ctx.$methodTypeArguments && @@ -346,7 +360,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 04e71fac0..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, 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;