Closed cflee closed 1 month ago
Tnx for your contribution. I really liked the way you documented the issue, and of course that you implemented the fix. Except for the commit message (it is better to explain the why instead of what you changed) I have no remarks. I have fix the commit message during merge.
Description
Fixes #2652
For the operator spacing standard rule, instead of checking for whether any ancestor element is a KtPrefixExpression, check whether the closest ancestor that is a KtOperationExpression is a KtPrefixExpression.
This change will identify the case where the operator is inside a binary expression inside a prefix expression as not being a unary operator, and hence subject to the operator spacing checks.
The closest ancestor of KtPrefixExpression and KtBinaryExpression seems to be KtOperationExpression, so I've opted to use that as the predicate when searching through the ancestors. KtExpressionImpl seems to cover a lot more expression types. Alternatively, it might be possible to specifically search for the closest parent that is either KtPrefixExpression or KtBinaryExpression?
abstract class KtExpressionImpl : KtElementImpl(node), KtExpression
interface KtOperationExpression extends KtExpression
abstract class KtUnaryExpression extends KtExpressionImpl implements KtOperationExpression
class KtPrefixExpression extends KtUnaryExpression
class KtPostfixExpression extends KtUnaryExpression
class KtBinaryExpression extends KtExpressionImpl implements KtOperationExpression
class KtIsExpression extends KtExpressionImpl implements KtOperationExpression
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