Skip to content

Commit

Permalink
prettierx test: TS types & balanced tarnary formatting
Browse files Browse the repository at this point in the history
formatting of conditional TypeScript types is expected to work the same
way as formatting of ES ternary expressions

as discussed in:

- #468 (comment)
  • Loading branch information
brodybits committed Jun 7, 2021
1 parent db45234 commit dbab1e0
Show file tree
Hide file tree
Showing 2 changed files with 197 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`conditonal-types.ts 1`] = `
====================================options=====================================
offsetTernaryExpressions: true
parsers: ["typescript"]
printWidth: 80
| printWidth
=====================================input======================================
export type DeepReadonly<T> = T extends any[] ? DeepReadonlyArray<T[number]> : T extends object ? DeepReadonlyObject<T> : T;
type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {}
type DeepReadonlyObject<T> = {
readonly [P in NonFunctionPropertyNames<T>]: DeepReadonly<T[P]>;
};
type TypeName<T> =
T extends string ? "string" :
T extends number ? "number" :
T extends boolean ? "boolean" :
T extends undefined ? "undefined" :
T extends Function ? "function" :
"object";
type Type01 = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
type Type02 = 0 extends ((1 extends 2 ? 3 : 4)) ? 5 : 6;
type Type03 = 0 extends (((1 extends 2 ? 3 : 4))) ? 5 : 6;
type Type04 = 0 extends ((((1 extends 2 ? 3 : 4)))) ? 5 : 6;
type Type05 = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
type Type06 = ((0 extends 1 ? 2 : 3)) extends 4 ? 5 : 6;
type Type07 = (((0 extends 1 ? 2 : 3))) extends 4 ? 5 : 6;
type Type08 = ((((0 extends 1 ? 2 : 3)))) extends 4 ? 5 : 6;
type T1 = () => void extends T ? U : V;
type T1a = () => (void extends T ? U : V);
type T1b = () => (void) extends T ? U : V;
type T2 = (() => void) extends T ? U : V;
type U1 = new () => X extends T ? U : V;
type U1a = new () => (X extends T ? U : V);
type U1b = new () => (X) extends T ? U : V;
type U2 = (new () => X) extends T ? U : V;
=====================================output=====================================
export type DeepReadonly<T> = T extends any[]
? DeepReadonlyArray<T[number]>
: T extends object
? DeepReadonlyObject<T>
: T;
type NonFunctionPropertyNames<T> = {
[K in keyof T]: T[K] extends Function ? never : K;
}[keyof T];
interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {}
type DeepReadonlyObject<T> = {
readonly [P in NonFunctionPropertyNames<T>]: DeepReadonly<T[P]>;
};
type TypeName<T> = T extends string
? "string"
: T extends number
? "number"
: T extends boolean
? "boolean"
: T extends undefined
? "undefined"
: T extends Function
? "function"
: "object";
type Type01 = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
type Type02 = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
type Type03 = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
type Type04 = 0 extends (1 extends 2 ? 3 : 4) ? 5 : 6;
type Type05 = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
type Type06 = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
type Type07 = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
type Type08 = (0 extends 1 ? 2 : 3) extends 4 ? 5 : 6;
type T1 = () => void extends T ? U : V;
type T1a = () => void extends T ? U : V;
type T1b = () => void extends T ? U : V;
type T2 = (() => void) extends T ? U : V;
type U1 = new () => X extends T ? U : V;
type U1a = new () => X extends T ? U : V;
type U1b = new () => X extends T ? U : V;
type U2 = (new () => X) extends T ? U : V;
================================================================================
`;
exports[`infer-type.ts 1`] = `
====================================options=====================================
offsetTernaryExpressions: true
parsers: ["typescript"]
printWidth: 80
| printWidth
=====================================input======================================
type TestReturnType<T extends (...args: any[]) => any> = T extends (...args: any[]) => infer R ? R : any;
type Unpacked<T> =
T extends (infer U)[] ? U :
T extends (...args: any[]) => infer U ? U :
T extends Promise<infer U> ? U :
T;
=====================================output=====================================
type TestReturnType<T extends (...args: any[]) => any> = T extends (
...args: any[]
) => infer R
? R
: any;
type Unpacked<T> = T extends (infer U)[]
? U
: T extends (...args: any[]) => infer U
? U
: T extends Promise<infer U>
? U
: T;
================================================================================
`;
exports[`nested-in-condition.ts 1`] = `
====================================options=====================================
offsetTernaryExpressions: true
parsers: ["typescript"]
printWidth: 80
| printWidth
=====================================input======================================
type Foo =
(ThingamabobberFactory extends AbstractThingamabobberFactory ? GobbledygookProvider : CompositeGobbledygookProvider) extends
DoubleGobbledygookProvider
? UniqueDalgametreService
: CompositeZamazingoResolver;
type Foo2 =
DoubleGobbledygookProvider extends
(ThingamabobberFactory extends AbstractThingamabobberFactory ? GobbledygookProvider : CompositeGobbledygookProvider)
? UniqueDalgametreService
: CompositeZamazingoResolver;
type Foo3 =
(ThingamabobberFactory extends AbstractThingamabobberFactory ? GobbledygookProvider : CompositeGobbledygookProvider) extends
(DoubleGobbledygookProvider extends MockGobbledygookProvider ? MockThingamabobberFactory : ThingamabobberFactory)
? UniqueDalgametreService
: CompositeZamazingoResolver;
=====================================output=====================================
type Foo = (
ThingamabobberFactory extends AbstractThingamabobberFactory
? GobbledygookProvider
: CompositeGobbledygookProvider
) extends DoubleGobbledygookProvider
? UniqueDalgametreService
: CompositeZamazingoResolver;
type Foo2 = DoubleGobbledygookProvider extends (
ThingamabobberFactory extends AbstractThingamabobberFactory
? GobbledygookProvider
: CompositeGobbledygookProvider
)
? UniqueDalgametreService
: CompositeZamazingoResolver;
type Foo3 = (
ThingamabobberFactory extends AbstractThingamabobberFactory
? GobbledygookProvider
: CompositeGobbledygookProvider
) extends (
DoubleGobbledygookProvider extends MockGobbledygookProvider
? MockThingamabobberFactory
: ThingamabobberFactory
)
? UniqueDalgametreService
: CompositeZamazingoResolver;
================================================================================
`;
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// [prettierx] test script notice:
// This test script runs for test files in parent directory,
// **not** on any files in *this* directory.

const dirpath = `${__dirname}/..`;

run_spec(dirpath, ["typescript"], {
// [prettierx] balanced ternary formatting option
// (with improved consistency with "Standard JS"):
offsetTernaryExpressions: true,
});

0 comments on commit dbab1e0

Please sign in to comment.