== should format with parens ==
1 + (1 + 2);

[expect]
1 + (1 + 2);

== should format on a new line when the opening paren is on a different line ==
1 + (
    1 + 2);

[expect]
1 + (
    1 + 2
);

== should format logical expressions in parens without hanging indentation ==
1 + (
    test
    && test
    && {
        other: 5
    }
    && (
        other &&
        test ||
        test
    )
);

[expect]
1 + (
    test
    && test
    && {
        other: 5,
    }
    && (
        other
            && test
        || test
    )
);

== should format logical expressions without hanging indentation within parens in headers ==
if (
    test
    && other
    || test && {
        test: 5
    } &&
    {
        other: 6
    } && (
        test
    )
) {
}

[expect]
if (
    test
        && other
    || test && {
            test: 5,
        }
        && {
            other: 6,
        } && test
) {
}

== should format binary expressions without hanging indentation ==
1 + (
    1543652546
+ 2
    * 5 * {
        prop: 6
    }
    * {
        other: 7
    } + (
        5
        * 7
    )
);

[expect]
1 + (
    1543652546
    + 2
        * 5 * {
            prop: 6,
        }
        * {
            other: 7,
        }
    + (
        5
        * 7
    )
);

== should format a paren on a hanging line to have indent ==
const binaryResult = true || false &&
possiblyTrue || (
  true&&false||maybeTrue
);

[expect]
const binaryResult = true || false
        && possiblyTrue
    || (
        true && false || maybeTrue
    );
