-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
conditionals: add support for nested indentation #450
base: main
Are you sure you want to change the base?
Changes from 11 commits
a5cc5e4
273275c
38a9be5
2c9873d
0de6f01
2424d3e
a6d106a
fae7235
b9286ad
f12470b
1e8ad44
278b0d6
827d6cd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
~~ lineWidth: 50, conditionalExpression.useNestedIndentation: true ~~ | ||
== should handle nested indentation on a basic ternary / conditional expression == | ||
const value = is_prod | ||
? do1() | ||
: is_laptop | ||
? do2() | ||
: do3(); | ||
|
||
[expect] | ||
const value = is_prod | ||
? do1() | ||
: is_laptop | ||
? do2() | ||
: do3(); | ||
|
||
== should keep on single line if fits on a single line == | ||
const value = a ? b ? c : d : e; | ||
|
||
[expect] | ||
const value = a ? b ? c : d : e; | ||
|
||
== should go multi-line when exceeding the line width == | ||
const value = testing ? this ? out : testing : exceedsWidth; | ||
|
||
[expect] | ||
const value = testing | ||
? this ? out : testing | ||
: exceedsWidth; | ||
|
||
== should both go multi-line when exceeding the line width twice == | ||
const value = testing ? this ? out : testingTestingTestingTestingTesting : exceedsWidth; | ||
|
||
[expect] | ||
const value = testing | ||
? this | ||
? out | ||
: testingTestingTestingTestingTesting | ||
: exceedsWidth; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
~~ lineWidth: 80, conditionalType.linePerExpression: true ~~ | ||
== should use a line per expression when multiLine == | ||
type Test = A extends B | ||
? C extends D | ||
? c | ||
: testingTesting | ||
: testingTestingTestingTesting; | ||
|
||
[expect] | ||
type Test = A extends B | ||
? C extends D | ||
? c | ||
: testingTesting | ||
: testingTestingTestingTesting; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @declanvong sorry for my delay here. I just added this file and test, but it fails. I think this is the expected output? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, looks like that maybe one of the indent conditions is listening to linePerExpression instead of useNestedIndentation? I'll take a look There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed, but important to note that this change is not backwards compatible, it changes existing formatting, so it'd be a version bump. Since both
to this (flattened indentation):
Enabling
which also seems correct. So there's no way to get the original formatting in this new world, but maybe that's good? if the original formatting was always not technically correct or wanted. after all, that trailing |
||
|
||
== should keep on single line if fits on a single line == | ||
type Test = A extends B ? C extends D ? c : d : e; | ||
|
||
[expect] | ||
type Test = A extends B ? C extends D ? c : d : e; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
~~ lineWidth: 80, conditionalType.useNestedIndentation: true, conditionalType.linePerExpression: true ~~ | ||
== should handle nested indentation with extends and mapped types == | ||
export type R<S> = S extends Record<string, T<any, any>> ? { [K in keyof S]: ReturnType<S[K][1]> } : S extends T<infer _T, any> | ||
? _T extends Array<infer I> | ||
? I | ||
: _T : S extends SZ<infer _T, any> ? _T : S extends DZ<infer _T> | ||
? _T : never; | ||
|
||
[expect] | ||
export type R<S> = S extends Record<string, T<any, any>> | ||
? { [K in keyof S]: ReturnType<S[K][1]> } | ||
: S extends T<infer _T, any> | ||
? _T extends Array<infer I> | ||
? I | ||
: _T | ||
: S extends SZ<infer _T, any> | ||
? _T | ||
: S extends DZ<infer _T> | ||
? _T | ||
: never; | ||
|
||
== should keep on single line if fits on a single line == | ||
type Test = A extends B ? C extends D ? c : d : e; | ||
|
||
[expect] | ||
type Test = A extends B ? C extends D ? c : d : e; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
~~ lineWidth: 80, conditionalType.useNestedIndentation: true ~~ | ||
== should handle nested indentation with extends and mapped types == | ||
export type R<S> = S extends Record<string, T<any, any>> ? { [K in keyof S]: ReturnType<S[K][1]> } : S extends T<infer _T, any> | ||
? _T extends Array<infer I> | ||
? I | ||
: _T : S extends SZ<infer _T, any> ? _T : S extends DZ<infer _T> | ||
? _T : never; | ||
|
||
[expect] | ||
export type R<S> = S extends Record<string, T<any, any>> | ||
? { [K in keyof S]: ReturnType<S[K][1]> } | ||
: S extends T<infer _T, any> | ||
? _T extends Array<infer I> | ||
? I | ||
: _T | ||
: S extends SZ<infer _T, any> ? _T | ||
: S extends DZ<infer _T> | ||
? _T | ||
: never; | ||
|
||
== should keep on single line if fits on a single line == | ||
type Test = A extends B ? C extends D ? c : d : e; | ||
|
||
[expect] | ||
type Test = A extends B ? C extends D ? c : d : e; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just a typo fix,
const
->cons