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

[expect]
(1 + 2);

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

[expect]
(
    1 + 2
);

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

[expect]
(
    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 ==
(
    1543652546
+ 2
    * 5 * {
        prop: 6
    }
    * {
        other: 7
    } + (
        5
        * 7
    )
);

[expect]
(
    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
    );
