Skip to content

Arithmetic, parentheses, and null coalescing #765

@commonquail

Description

@commonquail

This is CSharpier 0.20.0:

class X
{
    private int? aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
    private int? bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;
    private int? ccccccccccccccccccccccccccccccccccc;

    static void null_coalescing_arithmetic()
    {
        var x = new X();
        var result1 =
            x.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            - x.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
            - x.ccccccccccccccccccccccccccccccccccc;
        var result2 = (
            x.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            - x.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
            - x.ccccccccccccccccccccccccccccccccccc
        );
        var result3 =
            x.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                - x.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                - x.ccccccccccccccccccccccccccccccccccc
            ?? 0;
        var result4 =
            (
                x.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                - x.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
                - x.ccccccccccccccccccccccccccccccccccc
            ) ?? 0;
    }
}
  • result1 and result2 each look fine in isolation (however, see my comment in Possible indentation change for array initializers #658 regarding "the rectangle rule").
  • result3 I believe follows a specific rule but appears to me inconsistent with both result1 and result2.
  • result4 is inconsistent with result2 and result3 both, but arguably consistent with result1.

result1 and result2 are semantically equivalent, as is result3 with result4.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions