Prevent inserting a whitespace element as first or last element in a composite node. In such cases insert the whitespace just before or after the composite element (recursively if needed).
2688 shows an example in which two different rules were inserting a whitespace at the same position in the code fragment but at different places in the AST. As a result two spaces were added to the formatted code instead of one.
Closes #2688
Checklist
Before submitting the PR, please check following (checks which are not relevant may be ignored):
[X] Commit message are well written. In addition to a short title, the commit message also explain why a change is made.
[X] At least one commit message contains a reference Closes #<xxx> or Fixes #<xxx> (replace<xxx> with issue number)
[X] Tests are added
[X] KtLint format has been applied on source code itself and violations are fixed
[X] PR title is short and clear (it is used as description in the release changelog)
[ ] Snapshot documentation in case documentation is to be released together with a code change
[ ] Release documentation in case documentation is related to a released version of ktlint and has to be published as soon as the change is merged to master
Description
Prevent inserting a whitespace element as first or last element in a composite node. In such cases insert the whitespace just before or after the composite element (recursively if needed).
2688 shows an example in which two different rules were inserting a whitespace at the same position in the code fragment but at different places in the AST. As a result two spaces were added to the formatted code instead of one.
Closes #2688
Checklist
Before submitting the PR, please check following (checks which are not relevant may be ignored):
Closes #<xxx>
orFixes #<xxx>
(replace<xxx>
with issue number)Documentation is updated. See difference between snapshot and release documentation