-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
prettierx test: TS types & balanced tarnary formatting
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
Showing
2 changed files
with
197 additions
and
0 deletions.
There are no files selected for viewing
186 changes: 186 additions & 0 deletions
186
...cript_conditional_types/with-balanced-tarnary-formatting/__snapshots__/jsfmt.spec.js.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
================================================================================ | ||
`; |
11 changes: 11 additions & 0 deletions
11
tests/typescript_conditional_types/with-balanced-tarnary-formatting/jsfmt.spec.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, | ||
}); |