From e46aba0ab279c764dc26e0f41f15c55122440c51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Jul 2022 09:58:40 +0800 Subject: [PATCH 1/2] Build(deps): Bump terser from 5.12.1 to 5.14.2 in /scripts/tools/bundle-test (#13144) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- scripts/tools/bundle-test/yarn.lock | 59 +++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/scripts/tools/bundle-test/yarn.lock b/scripts/tools/bundle-test/yarn.lock index 8363c00db..2fe4c02aa 100644 --- a/scripts/tools/bundle-test/yarn.lock +++ b/scripts/tools/bundle-test/yarn.lock @@ -2,6 +2,46 @@ # yarn lockfile v1 +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@types/eslint-scope@^3.7.3": version "3.7.3" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" @@ -170,9 +210,9 @@ acorn-import-assertions@^1.7.6: integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn@^8.4.1, acorn@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== ajv-keywords@^3.5.2: version "3.5.2" @@ -400,11 +440,6 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -429,13 +464,13 @@ terser-webpack-plugin@^5.1.3: terser "^5.7.2" terser@^5.7.2: - version "5.12.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" - integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + version "5.14.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== dependencies: + "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" uri-js@^4.2.2: From 8ee0c6354d404059b159bc21d1afa5de267de838 Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Sat, 23 Jul 2022 18:02:05 +0800 Subject: [PATCH 2/2] Fix `ifBreak` check in `fits` (#12362) --- changelog_unreleased/api/12362.md | 19 +++++ src/document/doc-printer.js | 8 +- .../arrays/__snapshots__/jsfmt.spec.js.snap | 4 +- .../__snapshots__/jsfmt.spec.js.snap | 79 +++++++++++++++++++ .../long-type-parameters/jsfmt.spec.js | 2 + .../long-type-parameters.ts | 14 ++++ tests/integration/__tests__/doc-printer.js | 27 +++++++ 7 files changed, 145 insertions(+), 8 deletions(-) create mode 100644 changelog_unreleased/api/12362.md create mode 100644 tests/format/typescript/interface/long-type-parameters/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/format/typescript/interface/long-type-parameters/jsfmt.spec.js create mode 100644 tests/format/typescript/interface/long-type-parameters/long-type-parameters.ts create mode 100644 tests/integration/__tests__/doc-printer.js diff --git a/changelog_unreleased/api/12362.md b/changelog_unreleased/api/12362.md new file mode 100644 index 000000000..3bd000439 --- /dev/null +++ b/changelog_unreleased/api/12362.md @@ -0,0 +1,19 @@ +#### Fix doc printer issue when using `ifBreak` inside `group` (#12362 by @fisker) + + +```jsx +// Input +// |80 +for (const number of [123_123_123, 123_123_123, 123_123_123, 123_123_123, 12]) { +} + +// Prettier stable +for (const number of [ + 123_123_123, 123_123_123, 123_123_123, 123_123_123, 12, +]) { +} + +// Prettier main +for (const number of [123_123_123, 123_123_123, 123_123_123, 123_123_123, 12]) { +} +``` diff --git a/src/document/doc-printer.js b/src/document/doc-printer.js index 1a45f78c6..c0c31363b 100644 --- a/src/document/doc-printer.js +++ b/src/document/doc-printer.js @@ -202,10 +202,6 @@ function fits(next, restCommands, width, options, hasLineSuffix, mustBeFlat) { ? getLast(doc.expandedStates) : doc.contents, ]); - - if (doc.id) { - groupModeMap[doc.id] = groupMode; - } break; } case "fill": @@ -216,7 +212,9 @@ function fits(next, restCommands, width, options, hasLineSuffix, mustBeFlat) { break; case "if-break": case "indent-if-break": { - const groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode; + const groupMode = doc.groupId + ? groupModeMap[doc.groupId] || MODE_FLAT + : mode; if (groupMode === MODE_BREAK) { const breakContents = doc.type === "if-break" diff --git a/tests/format/js/arrays/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/arrays/__snapshots__/jsfmt.spec.js.snap index a5e5d3eac..c1d523ae8 100644 --- a/tests/format/js/arrays/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/arrays/__snapshots__/jsfmt.spec.js.snap @@ -56,9 +56,7 @@ printWidth: 80 } } { - for (const srcPath of [ - 123, 123_123_123, 123_123_123_1, 13_123_3123_31_432, - ]) { + for (const srcPath of [123, 123_123_123, 123_123_123_1, 13_123_3123_31_432]) { } } { diff --git a/tests/format/typescript/interface/long-type-parameters/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/interface/long-type-parameters/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000..cd6e58aef --- /dev/null +++ b/tests/format/typescript/interface/long-type-parameters/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,79 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`long-type-parameters.ts - {"printWidth":109} format 1`] = ` +====================================options===================================== +parsers: ["typescript"] +printWidth: 109 + | printWidth +=====================================input====================================== +// https://github.com/vega/vega-lite/blob/ae13aff7b480cf9c994031eca08a6b1720e01ab3/src/mark.ts#L602 +export interface MarkDef< + M extends string | Mark = Mark, + ES extends ExprRef | SignalRef = ExprRef | SignalRef +> extends GenericMarkDef, + Omit< + MarkConfig & + AreaConfig & + BarConfig & // always extends RectConfig + LineConfig & + TickConfig, + 'startAngle' | 'endAngle' | 'width' | 'height' + >, + MarkDefMixins {} + +=====================================output===================================== +// https://github.com/vega/vega-lite/blob/ae13aff7b480cf9c994031eca08a6b1720e01ab3/src/mark.ts#L602 +export interface MarkDef< + M extends string | Mark = Mark, + ES extends ExprRef | SignalRef = ExprRef | SignalRef +> extends GenericMarkDef, + Omit< + MarkConfig & + AreaConfig & + BarConfig & // always extends RectConfig + LineConfig & + TickConfig, + "startAngle" | "endAngle" | "width" | "height" + >, + MarkDefMixins {} + +================================================================================ +`; + +exports[`long-type-parameters.ts - {"printWidth":110} format 1`] = ` +====================================options===================================== +parsers: ["typescript"] +printWidth: 110 + | printWidth +=====================================input====================================== +// https://github.com/vega/vega-lite/blob/ae13aff7b480cf9c994031eca08a6b1720e01ab3/src/mark.ts#L602 +export interface MarkDef< + M extends string | Mark = Mark, + ES extends ExprRef | SignalRef = ExprRef | SignalRef +> extends GenericMarkDef, + Omit< + MarkConfig & + AreaConfig & + BarConfig & // always extends RectConfig + LineConfig & + TickConfig, + 'startAngle' | 'endAngle' | 'width' | 'height' + >, + MarkDefMixins {} + +=====================================output===================================== +// https://github.com/vega/vega-lite/blob/ae13aff7b480cf9c994031eca08a6b1720e01ab3/src/mark.ts#L602 +export interface MarkDef + extends GenericMarkDef, + Omit< + MarkConfig & + AreaConfig & + BarConfig & // always extends RectConfig + LineConfig & + TickConfig, + "startAngle" | "endAngle" | "width" | "height" + >, + MarkDefMixins {} + +================================================================================ +`; diff --git a/tests/format/typescript/interface/long-type-parameters/jsfmt.spec.js b/tests/format/typescript/interface/long-type-parameters/jsfmt.spec.js new file mode 100644 index 000000000..03ff9aee6 --- /dev/null +++ b/tests/format/typescript/interface/long-type-parameters/jsfmt.spec.js @@ -0,0 +1,2 @@ +run_spec(__dirname, ["typescript"], { printWidth: 109 }); +run_spec(__dirname, ["typescript"], { printWidth: 110 }); diff --git a/tests/format/typescript/interface/long-type-parameters/long-type-parameters.ts b/tests/format/typescript/interface/long-type-parameters/long-type-parameters.ts new file mode 100644 index 000000000..feedc3486 --- /dev/null +++ b/tests/format/typescript/interface/long-type-parameters/long-type-parameters.ts @@ -0,0 +1,14 @@ +// https://github.com/vega/vega-lite/blob/ae13aff7b480cf9c994031eca08a6b1720e01ab3/src/mark.ts#L602 +export interface MarkDef< + M extends string | Mark = Mark, + ES extends ExprRef | SignalRef = ExprRef | SignalRef +> extends GenericMarkDef, + Omit< + MarkConfig & + AreaConfig & + BarConfig & // always extends RectConfig + LineConfig & + TickConfig, + 'startAngle' | 'endAngle' | 'width' | 'height' + >, + MarkDefMixins {} diff --git a/tests/integration/__tests__/doc-printer.js b/tests/integration/__tests__/doc-printer.js new file mode 100644 index 000000000..04493142b --- /dev/null +++ b/tests/integration/__tests__/doc-printer.js @@ -0,0 +1,27 @@ +"use strict"; + +const prettier = require("prettier-local"); +const { group, ifBreak } = prettier.doc.builders; +const { printDocToString } = prettier.doc.printer; +const docToString = (doc, options) => + printDocToString(doc, { tabSize: 2, ...options }).formatted; + +// Extra group should not effect `ifBreak` inside +test("`ifBreak` inside `group`", () => { + const groupId = Symbol("test-group-id"); + const FLAT_TEXT = "flat"; + const doc = group(ifBreak("break", FLAT_TEXT, { groupId }), { + id: groupId, + }); + const docs = [ + doc, + [group(""), doc], + [doc, group("")], + group(doc), + group(doc, { id: Symbol("wrapper-group-id") }), + ]; + + expect( + docs.map((doc) => docToString(doc, { printWidth: FLAT_TEXT.length })) + ).toStrictEqual(Array.from({ length: docs.length }, () => FLAT_TEXT)); +});