~~ lineWidth: 40 ~~
== should format ==
let a!: string;
const b = 5;
const c: number = 5;
var d = 5, e = 20;
let f = 2, g = 3, testingTheLimitOut = 4;
declare const t: string;

function test() {
    let f = 2, g = 3, testingTheLimitOut = 4;
}

[expect]
let a!: string;
const b = 5;
const c: number = 5;
var d = 5, e = 20;
let f = 2,
    g = 3,
    testingTheLimitOut = 4;
declare const t: string;

function test() {
    let f = 2,
        g = 3,
        testingTheLimitOut = 4;
}

== should not wrap within a variable declaration ==
const t: Testing, testingThis: outALittleBit;

[expect]
const t: Testing,
    testingThis: outALittleBit;

== should handle declarations that span multiple lines ==
const testing = testtttttttt && testtttttttt, other = testtttttttt && testttttttttttt;

[expect]
const testing = testtttttttt
        && testtttttttt,
    other = testtttttttt
        && testttttttttttt;

== should handle multiple declarations that span multiple lines with an object ==
const varA = { testttttttttttttttttttttttttttt }, varB = testtttttttt && testttttttttttt;

[expect]
const varA = {
        testttttttttttttttttttttttttttt,
    },
    varB = testtttttttt
        && testttttttttttt;

== should handle multiple declarations that span multiple lines with comments in between ==
const varA = /* test*/
    // not ideal, but ok
    {
        testttttttttttttttttttttttttttt,
    }, // test
    // testing
    varB = testtttttttt
        && testttttttttttt;

[expect]
const varA = /* test*/
    // not ideal, but ok
        {
            testttttttttttttttttttttttttttt,
        }, // test
    // testing
    varB = testtttttttt
        && testttttttttttt;

== should handle multiple declarations that span multiple lines with object destructuring ==
const { testing, othertestingggggggggggggggg } = {
    testtttttttttttttttttttttt,
}, test = 5;

[expect]
const {
        testing,
        othertestingggggggggggggggg,
    } = {
        testtttttttttttttttttttttt,
    },
    test = 5;
