formatter: fix when first array element is omitted
diff --git a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java index 970c07f..fcce6e4 100644 --- a/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java +++ b/plugins/org.eclipse.dltk.javascript.parser/src/org/eclipse/dltk/javascript/parser/JSTransformer.java
@@ -1887,14 +1887,22 @@ final Tree item = child.getChild(0); if (item != null) { array.getItems().add(transformExpression(item, array)); + if (i != itemCount - 1) { + final int nextComma = getTokenOffset(JSParser.COMMA, + child.getTokenStopIndex() + 1, node.getChild(i + 1) + .getTokenStartIndex()); + array.getCommas().add(nextComma); + } } else { - array.getItems().add(new EmptyExpression(getParent())); - } - if (i > 0) { - array.getCommas().add( - getTokenOffset(JSParser.COMMA, node.getChild(i - 1) - .getTokenStopIndex() + 1, child - .getTokenStartIndex())); + assert i != itemCount - 1; + final int nextComma = getTokenOffset(JSParser.COMMA, + child.getTokenStopIndex() + 1, node.getChild(i + 1) + .getTokenStartIndex()); + final EmptyExpression empty = new EmptyExpression(array); + empty.setStart(nextComma); + empty.setEnd(nextComma); + array.getItems().add(empty); + array.getCommas().add(nextComma); } } array.setRB(getTokenOffset(node.getChild(itemCount)
diff --git a/tests/org.eclipse.dltk.javascript.formatter.tests/scripts/arrays.js b/tests/org.eclipse.dltk.javascript.formatter.tests/scripts/arrays.js index 5dfda2d..9bdca70 100644 --- a/tests/org.eclipse.dltk.javascript.formatter.tests/scripts/arrays.js +++ b/tests/org.eclipse.dltk.javascript.formatter.tests/scripts/arrays.js
@@ -10,6 +10,10 @@ var vArray = [ 1 ,2 ,,, 3 ] == var vArray = [1, 2, , , 3] +==== array-with-first-empty-element +var array = [ , "" ] ; +== +var array = [, ""]; ==== ==> formatter.braces.array = next.line ==== array-brackets-next-line