~~ lineWidth: 30 ~~
== should print a decorator ==
    @dec
class T {
}

[expect]
@dec
class T {
}

== should print a decorator with a call expression ==
@dec(testing)
class T {
}

[expect]
@dec(testing)
class T {
}

== should print a decorator parameters on multiple lines when exceeding the line width ==
@dec(testing, this, out, toSee)
class T {
}

[expect]
@dec(
    testing,
    this,
    out,
    toSee,
)
class T {
}

== should print decorator with comments surrounding for an export declaration ==
@dec // test
@dec2 // other
/* comment here */
@dec3
export class Test {
}

[expect]
@dec // test
@dec2 // other
/* comment here */
@dec3
export class Test {
}

== should print decorator with comments surrounding for an export default declaration ==
@dec // test
@dec2 // other
/* comment here */
@dec3
export default class Test {
}

[expect]
@dec // test
@dec2 // other
/* comment here */
@dec3
export default class Test {
}

== should allow decorators on parameters ==
export class Test {
    method(@param test) {
    }
}

[expect]
export class Test {
    method(@param test) {
    }
}

== should handle mutli-line decorators on parameter ==
export class Test {
    method(@param @param2 test) {
    }

    method2(@param @param2 @param3 test) {
    }
}

[expect]
export class Test {
    method(
        @param @param2 test,
    ) {
    }

    method2(
        @param
        @param2
        @param3
        test,
    ) {
    }
}
