From 3f4c8c1df0b2db4795e37e9db832bed4862dad13 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Sat, 31 Oct 2020 21:15:35 +0800 Subject: [PATCH] Treat more types as simple type (#9543) --- changelog_unreleased/flow/pr-9543.md | 25 ++++++++++++++ src/language-js/utils.js | 14 +++++++- .../__snapshots__/jsfmt.spec.js.snap | 33 +++++++++++++++++-- .../typeparams/consistent/simple-types.ts | 5 +++ .../typeparams/consistent/typescript-only.ts | 4 +++ 5 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 changelog_unreleased/flow/pr-9543.md create mode 100644 tests/typescript/typeparams/consistent/typescript-only.ts diff --git a/changelog_unreleased/flow/pr-9543.md b/changelog_unreleased/flow/pr-9543.md new file mode 100644 index 000000000..bf298f64a --- /dev/null +++ b/changelog_unreleased/flow/pr-9543.md @@ -0,0 +1,25 @@ +#### Treat more types as "simple" type (#9543 by @fisker) + + +```jsx +// Input +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<"STRING"> = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0> = a; + +// Prettier master +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo< + symbol +> = a; +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo< + "STRING" +> = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo< + 0 +> = a; + +// Prettier stable (typescript and flow parser) +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<"STRING"> = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0> = a; +``` diff --git a/src/language-js/utils.js b/src/language-js/utils.js index 841a21014..f3bf1f0a6 100644 --- a/src/language-js/utils.js +++ b/src/language-js/utils.js @@ -452,14 +452,26 @@ const simpleTypeAnnotations = new Set([ // `bigint` "BigIntTypeAnnotation", "TSBigIntKeyword", + // `symbol` + "SymbolTypeAnnotation", + "TSSymbolKeyword", + // `string` + "StringTypeAnnotation", + "TSStringKeyword", // literals "BooleanLiteralTypeAnnotation", - "StringTypeAnnotation", + "StringLiteralTypeAnnotation", "BigIntLiteralTypeAnnotation", + "NumberLiteralTypeAnnotation", "TSLiteralType", // flow only, `empty`, `mixed` "EmptyTypeAnnotation", "MixedTypeAnnotation", + // typescript only, `never`, `object`, `undefined`, `unknown` + "TSNeverKeyword", + "TSObjectKeyword", + "TSUndefinedKeyword", + "TSUnknownKeyword", ]); /** * @param {Node} node diff --git a/tests/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap b/tests/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap index b977e2974..bc59c79cf 100644 --- a/tests/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript/typeparams/consistent/__snapshots__/jsfmt.spec.js.snap @@ -48,6 +48,11 @@ const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo const foo5: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo6: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo7: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo8: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo9: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<"STRING"> = a; +const foo10: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0> = a; +const foo11: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xDeeD_Beef> = a; +const foo12: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xDeeD_Beefn> = a; =====================================output===================================== const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; @@ -56,9 +61,31 @@ const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo5: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo6: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; -const foo7: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo< - symbol -> = a; +const foo7: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo8: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo9: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<"STRING"> = a; +const foo10: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0> = a; +const foo11: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xdeed_beef> = a; +const foo12: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xdeed_beefn> = a; + +================================================================================ +`; + +exports[`typescript-only.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript", "flow", "babel-flow", "babel"] +printWidth: 80 + | printWidth +=====================================input====================================== +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +=====================================output===================================== +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; ================================================================================ `; diff --git a/tests/typescript/typeparams/consistent/simple-types.ts b/tests/typescript/typeparams/consistent/simple-types.ts index 9238642c3..d88a4ac77 100644 --- a/tests/typescript/typeparams/consistent/simple-types.ts +++ b/tests/typescript/typeparams/consistent/simple-types.ts @@ -5,3 +5,8 @@ const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo const foo5: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo6: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; const foo7: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo8: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo9: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<"STRING"> = a; +const foo10: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0> = a; +const foo11: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xDeeD_Beef> = a; +const foo12: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo<0xDeeD_Beefn> = a; diff --git a/tests/typescript/typeparams/consistent/typescript-only.ts b/tests/typescript/typeparams/consistent/typescript-only.ts new file mode 100644 index 000000000..fcea89f2a --- /dev/null +++ b/tests/typescript/typeparams/consistent/typescript-only.ts @@ -0,0 +1,4 @@ +const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; +const foo4: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = a; \ No newline at end of file