squiggle icon indicating copy to clipboard operation
squiggle copied to clipboard

Formatting long if/else chains

Open berekuk opened this issue 2 years ago • 3 comments

We don't have a switch or match statement yet, so it's natural to emulate it with long if/else chains.

But prettier plugin doesn't format it well (i.e. it never tries to break if/else statements). In the following example, line breaks are inserted only because there are x == N expressions.

Captura de pantalla 2023-10-06 a la(s) 14 49 16

https://www.squiggle-language.com/playground?v=0.8.5#code=eNqrVkpJTUsszSlxzk9JVbJSqlCwVTCOyYvJy0xTALJtFQwVSjJS8xRilHLy89IVEERZYk5pqoJhjJJCak5xqgJUeUyegoIRXh1GWHQY49VhDNMRo%2BTvHxAco6RUCwDZcDn6

Checklist
  • [X] Modify packages/prettier-plugin/src/parser.ts ✓ https://github.com/quantified-uncertainty/squiggle/commit/59d474e70e48323bf4ab392482cc8c042c6472c0
  • [X] Check packages/prettier-plugin/src/parser.ts
  • [X] Modify packages/prettier-plugin/src/printer.ts ✓ https://github.com/quantified-uncertainty/squiggle/commit/3fb2032867213fa055f3b86042839cb0158709a5
  • [X] Check packages/prettier-plugin/src/printer.ts
  • [X] Modify packages/prettier-plugin/test/expressions.test.ts

Flowchart

berekuk avatar Oct 06 '23 20:10 berekuk

I've been running into this. Switch statements might be a preferable thing to prioritize, not sure.

OAGr avatar Oct 24 '23 18:10 OAGr

Here's the PR! https://github.com/quantified-uncertainty/squiggle/pull/2369.

⚡ Sweep Basic Tier: I'm creating this ticket using GPT-4. You have 5 GPT-4 tickets left for the month and 3 for the day. For more GPT-4 tickets, visit our payment portal.

Actions (click)

  • [ ] ↻ Restart Sweep
Install Sweep Configs: Pull Request

Step 1: 🔎 Searching

I found the following snippets in your repository. I will now analyze these snippets and come up with a plan.

Some code snippets I looked at (click to expand). If some file is missing from here, you can mention the path in the ticket description.

https://github.com/quantified-uncertainty/squiggle/blob/13b14b8a9140cbe1e56e9d8576d940cd2dc60b48/packages/website/src/pages/docs/Changelog/v0.8.5.mdx#L1-L37

https://github.com/quantified-uncertainty/squiggle/blob/13b14b8a9140cbe1e56e9d8576d940cd2dc60b48/packages/website/src/pages/docs/Changelog/v0.8.4.mdx#L35-L69

I also found the following external resources that might be helpful:

Summaries of links found in the content:

https://www.squiggle-language.com/playground?v=0.8.5#code=eNqrVkpJTUsszSlxzk9JVbJSqlCwVTCOyYvJy0xTALJtFQwVSjJS8xRilHLy89IVEERZYk5pqoJhjJJCak5xqgJUeUyegoIRXh1GWHQY49VhDNMRo%2BTvHxAco6RUCwDZcDn6:

The page titled "Playground | Squiggle" on the Squiggle website provides a playground environment for experimenting with the Squiggle programming language. The page includes documentation, guides, and various features of the language. It also mentions the lack of a switch or match statement in Squiggle and suggests using long if/else chains as an alternative. However, the user mentions that the prettier plugin does not format if/else statements well. The user provides a code example and a screenshot to illustrate the issue. The page URL is provided for reference.


Step 2: ⌨️ Coding

  • [X] Modify packages/prettier-plugin/src/parser.ts ✓ https://github.com/quantified-uncertainty/squiggle/commit/59d474e70e48323bf4ab392482cc8c042c6472c0
Modify packages/prettier-plugin/src/parser.ts with contents:
• Update the parser logic to correctly identify long if/else chains in the Squiggle code. This could involve adding a new rule or modifying an existing rule in the parser to match if/else chains.
• Ensure that the parser correctly generates the Abstract Syntax Tree (AST) for long if/else chains. The AST should accurately represent the structure of the if/else chain, including the conditions and the corresponding code blocks.
  • [X] Check packages/prettier-plugin/src/parser.ts
Sandbox logs for
pnpm i 1/2 ✓
Scope: all 12 workspace projects
   ╭──────────────────────────────────────────────────────────────────╮
   │                                                                  │
   │                Update available! 8.9.2 → 8.10.0.                 │
   │   Changelog: https://github.com/pnpm/pnpm/releases/tag/v8.10.0   │
   │                Run "pnpm add -g pnpm" to update.                 │
   │                                                                  │
   │      Follow @pnpmjs for updates: https://twitter.com/pnpmjs      │
   │                                                                  │
   ╰──────────────────────────────────────────────────────────────────╯
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +2161
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 2161, reused 0, downloaded 0, added 0
Progress: resolved 2161, reused 0, downloaded 1, added 0
Progress: resolved 2161, reused 0, downloaded 85, added 73
Progress: resolved 2161, reused 0, downloaded 216, added 204
Progress: resolved 2161, reused 0, downloaded 299, added 290
Progress: resolved 2161, reused 0, downloaded 329, added 316
Progress: resolved 2161, reused 0, downloaded 427, added 417
Progress: resolved 2161, reused 0, downloaded 549, added 537
Progress: resolved 2161, reused 0, downloaded 673, added 667
Progress: resolved 2161, reused 0, downloaded 742, added 731
Progress: resolved 2161, reused 0, downloaded 868, added 860
Progress: resolved 2161, reused 0, downloaded 971, added 961
Progress: resolved 2161, reused 0, downloaded 1132, added 1120
Progress: resolved 2161, reused 0, downloaded 1285, added 1277
Progress: resolved 2161, reused 0, downloaded 1448, added 1439
Progress: resolved 2161, reused 0, downloaded 1470, added 1462
Progress: resolved 2161, reused 0, downloaded 1483, added 1478
Progress: resolved 2161, reused 0, downloaded 1484, added 1478
Progress: resolved 2161, reused 0, downloaded 1575, added 1571
Progress: resolved 2161, reused 0, downloaded 1767, added 1765
Progress: resolved 2161, reused 0, downloaded 1891, added 1883
Progress: resolved 2161, reused 0, downloaded 1913, added 1903
Progress: resolved 2161, reused 0, downloaded 2012, added 2004
Progress: resolved 2161, reused 0, downloaded 2158, added 2160
Progress: resolved 2161, reused 0, downloaded 2159, added 2161, done
.../node_modules/@prisma/engines postinstall$ node scripts/postinstall.js
.../node_modules/@prisma/engines postinstall: Done
.../[email protected]/node_modules/esbuild postinstall$ node install.js
.../[email protected]/node_modules/prisma preinstall$ node scripts/preinstall-entry.js
.../[email protected]/node_modules/esbuild postinstall: Done
.../[email protected]/node_modules/prisma preinstall: Done
.../node_modules/@prisma/client postinstall$ node scripts/postinstall.js
.../node_modules/@prisma/client postinstall: prisma:warn We could not find your Prisma schema at `prisma/schema.prisma`.
.../node_modules/@prisma/client postinstall: If you have a Prisma schema file in a custom path, you will need to run
.../node_modules/@prisma/client postinstall: `prisma generate --schema=./path/to/your/schema.prisma` to generate Prisma Client.
.../node_modules/@prisma/client postinstall: If you do not have a Prisma schema file yet, you can ignore this message.
.../node_modules/@prisma/client postinstall: Done
.../[email protected]/node_modules/canvas install$ node-pre-gyp install --fallback-to-build --update-binary
.../[email protected]/node_modules/canvas install: node-pre-gyp info it worked if it ends with ok
.../[email protected]/node_modules/canvas install: node-pre-gyp info using [email protected]
.../[email protected]/node_modules/canvas install: node-pre-gyp info using [email protected] | linux | x64
.../[email protected]/node_modules/canvas install: node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-linux-glibc-x64.tar.gz
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libcairo.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libjpeg.so.62
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libxml2.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgmodule-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpcre.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpixman-1.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/canvas.node
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgdk_pixbuf-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpango-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libstdc++.so.6
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfontconfig.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/canvas.node.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas.node.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/init.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/ImageData.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/register_font.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Backends.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Image.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/PdfBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/Backend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/ImageBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/SvgBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/bmp/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/bmp/BMPParser.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/closure.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Canvas.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/color.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpangoft2-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgio-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas.node
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasPattern.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/register_font.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/closure.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/ImageData.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasGradient.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Backends.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/SvgBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/PdfBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/Backend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/ImageBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasRenderingContext2d.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/init.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/bmp/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/bmp/BMPParser.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/color.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Image.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Canvas.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgif.so.7
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libglib-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/librsvg-2.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfribidi.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpng16.so.16
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libz.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpangocairo-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libffi.so.7
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libcairo-gobject.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgobject-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libexpat.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfreetype.so.6
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libharfbuzz.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info extracted file count: 74 
.../[email protected]/node_modules/canvas install: [canvas] Success: "/repo/node_modules/.pnpm/[email protected]/node_modules/canvas/build/Release/canvas.node" is installed via remote
.../[email protected]/node_modules/canvas install: node-pre-gyp info ok 
.../[email protected]/node_modules/canvas install: Done
.../[email protected]/node_modules/keytar install$ prebuild-install || npm run build
.../[email protected]/node_modules/keytar install: Done
 WARN  Failed to create bin at /repo/packages/components/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/prettier-plugin/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/hub/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/vscode-ext/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
devDependencies:
+ @changesets/cli 2.26.2
+ prettier 3.0.3
+ turbo 1.10.14
+ turbo-ignore 1.10.14
 WARN  Failed to create bin at /repo/packages/prettier-plugin/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/prettier-plugin/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/components/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/components/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/vscode-ext/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/vscode-ext/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/hub/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/hub/node_modules/@quri/squiggle-lang/dist/cli/index.js'
Done in 35.3s
trunk init 2/2 ✓
⡿ Downloading Trunk 1.17.1...
⡿ Downloading Trunk 1.17.1...
⢿ Downloading Trunk 1.17.1...
⣻ Downloading Trunk 1.17.1...
⣽ Downloading Trunk 1.17.1...
⣾ Downloading Trunk 1.17.1...
⣷ Downloading Trunk 1.17.1...
✔ Downloading Trunk 1.17.1... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done


✔ 13 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.26 (7 github-workflow files)
  checkov 3.0.12 (54 json, 16 yaml files)
  git-diff-check (934 files)
  markdownlint 0.37.0 (77 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.2 (1 lockfile file)
  oxipng 9.0.0 (7 png files)
  prettier 3.0.3 (5 css, 1 graphql, 23 javascript, 54 json, 77 markdown, 679 typescript, 15 yaml files)
  shellcheck 0.9.0 (4 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (4 shell files)
  taplo 0.8.1 (1 toml file)
  trivy 0.46.0 (16 yaml files)
  trufflehog 3.60.4 (935 files)
  yamllint 1.32.0 (15 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
  • [X] Modify packages/prettier-plugin/src/printer.ts ✓ https://github.com/quantified-uncertainty/squiggle/commit/3fb2032867213fa055f3b86042839cb0158709a5
Modify packages/prettier-plugin/src/printer.ts with contents:
• Update the printer logic to correctly format long if/else chains. This could involve adding a new case in the printer to handle if/else chains.
• The printer should insert line breaks between the if/else statements to improve the readability of the code. The exact formatting rules can be determined based on the user's feedback and the best practices for the Squiggle language.
• Ensure that the printer correctly handles the AST generated by the parser for long if/else chains. The printed code should accurately reflect the structure of the if/else chain and the corresponding code blocks.
  • [X] Check packages/prettier-plugin/src/printer.ts
Sandbox logs for
pnpm i 1/2 ✓
Scope: all 12 workspace projects
   ╭──────────────────────────────────────────────────────────────────╮
   │                                                                  │
   │                Update available! 8.9.2 → 8.10.0.                 │
   │   Changelog: https://github.com/pnpm/pnpm/releases/tag/v8.10.0   │
   │                Run "pnpm add -g pnpm" to update.                 │
   │                                                                  │
   │      Follow @pnpmjs for updates: https://twitter.com/pnpmjs      │
   │                                                                  │
   ╰──────────────────────────────────────────────────────────────────╯
Lockfile is up to date, resolution step is skipped
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +2161
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 2161, reused 0, downloaded 0, added 0
Progress: resolved 2161, reused 0, downloaded 166, added 163
Progress: resolved 2161, reused 0, downloaded 317, added 307
Progress: resolved 2161, reused 0, downloaded 502, added 495
Progress: resolved 2161, reused 0, downloaded 757, added 755
Progress: resolved 2161, reused 0, downloaded 963, added 957
Progress: resolved 2161, reused 0, downloaded 1295, added 1296
Progress: resolved 2161, reused 0, downloaded 1473, added 1465
Progress: resolved 2161, reused 0, downloaded 1483, added 1478
Progress: resolved 2161, reused 0, downloaded 1498, added 1484
Progress: resolved 2161, reused 0, downloaded 1603, added 1596
Progress: resolved 2161, reused 0, downloaded 1771, added 1768
Progress: resolved 2161, reused 0, downloaded 1856, added 1845
Progress: resolved 2161, reused 0, downloaded 1909, added 1904
Progress: resolved 2161, reused 0, downloaded 1923, added 1911
Progress: resolved 2161, reused 0, downloaded 1938, added 1925
Progress: resolved 2161, reused 0, downloaded 1969, added 1958
Progress: resolved 2161, reused 0, downloaded 2092, added 2083
Progress: resolved 2161, reused 0, downloaded 2158, added 2160
Progress: resolved 2161, reused 0, downloaded 2159, added 2161, done
.../node_modules/@prisma/engines postinstall$ node scripts/postinstall.js
.../node_modules/@prisma/engines postinstall: Done
.../[email protected]/node_modules/esbuild postinstall$ node install.js
.../[email protected]/node_modules/prisma preinstall$ node scripts/preinstall-entry.js
.../[email protected]/node_modules/prisma preinstall: Done
.../[email protected]/node_modules/esbuild postinstall: Done
.../node_modules/@prisma/client postinstall$ node scripts/postinstall.js
.../node_modules/@prisma/client postinstall: prisma:warn We could not find your Prisma schema at `prisma/schema.prisma`.
.../node_modules/@prisma/client postinstall: If you have a Prisma schema file in a custom path, you will need to run
.../node_modules/@prisma/client postinstall: `prisma generate --schema=./path/to/your/schema.prisma` to generate Prisma Client.
.../node_modules/@prisma/client postinstall: If you do not have a Prisma schema file yet, you can ignore this message.
.../node_modules/@prisma/client postinstall: Done
.../[email protected]/node_modules/canvas install$ node-pre-gyp install --fallback-to-build --update-binary
.../[email protected]/node_modules/canvas install: node-pre-gyp info it worked if it ends with ok
.../[email protected]/node_modules/canvas install: node-pre-gyp info using [email protected]
.../[email protected]/node_modules/canvas install: node-pre-gyp info using [email protected] | linux | x64
.../[email protected]/node_modules/canvas install: node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-linux-glibc-x64.tar.gz
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libcairo.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libjpeg.so.62
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libxml2.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgmodule-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpcre.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpixman-1.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/canvas.node
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgdk_pixbuf-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpango-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libstdc++.so.6
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfontconfig.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/canvas.node.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas.node.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/init.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/ImageData.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/register_font.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Backends.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Image.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/PdfBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/Backend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/ImageBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/backend/SvgBackend.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/bmp/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/bmp/BMPParser.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/closure.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/Canvas.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/.deps/Release/obj.target/canvas/src/color.o.d
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpangoft2-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgio-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas.node
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasPattern.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/register_font.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/closure.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/ImageData.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasGradient.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Backends.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/SvgBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/PdfBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/Backend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/backend/ImageBackend.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/CanvasRenderingContext2d.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/init.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/bmp/
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/bmp/BMPParser.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/color.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Image.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/obj.target/canvas/src/Canvas.o
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgif.so.7
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libglib-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/librsvg-2.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfribidi.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpng16.so.16
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libz.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libpangocairo-1.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libffi.so.7
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libcairo-gobject.so.2
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libgobject-2.0.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libexpat.so.1
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libfreetype.so.6
.../[email protected]/node_modules/canvas install: node-pre-gyp info install unpacking Release/libharfbuzz.so.0
.../[email protected]/node_modules/canvas install: node-pre-gyp info extracted file count: 74 
.../[email protected]/node_modules/canvas install: [canvas] Success: "/repo/node_modules/.pnpm/[email protected]/node_modules/canvas/build/Release/canvas.node" is installed via remote
.../[email protected]/node_modules/canvas install: node-pre-gyp info ok 
.../[email protected]/node_modules/canvas install: Done
.../[email protected]/node_modules/keytar install$ prebuild-install || npm run build
.../[email protected]/node_modules/keytar install: Done
 WARN  Failed to create bin at /repo/packages/components/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/prettier-plugin/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/hub/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/vscode-ext/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/squiggle-lang/dist/cli/index.js'
devDependencies:
+ @changesets/cli 2.26.2
+ prettier 3.0.3
+ turbo 1.10.14
+ turbo-ignore 1.10.14
 WARN  Failed to create bin at /repo/packages/prettier-plugin/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/prettier-plugin/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/components/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/components/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/vscode-ext/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/vscode-ext/node_modules/@quri/squiggle-lang/dist/cli/index.js'
 WARN  Failed to create bin at /repo/packages/hub/node_modules/.bin/squiggle. ENOENT: no such file or directory, open '/repo/packages/hub/node_modules/@quri/squiggle-lang/dist/cli/index.js'
Done in 32.6s
trunk init 2/2 ✓
⡿ Downloading Trunk 1.17.1...
⡿ Downloading Trunk 1.17.1...
⢿ Downloading Trunk 1.17.1...
⣻ Downloading Trunk 1.17.1...
⣽ Downloading Trunk 1.17.1...
⣾ Downloading Trunk 1.17.1...
⣷ Downloading Trunk 1.17.1...
✔ Downloading Trunk 1.17.1... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done


✔ 13 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.26 (7 github-workflow files)
  checkov 3.0.12 (54 json, 16 yaml files)
  git-diff-check (934 files)
  markdownlint 0.37.0 (77 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.2 (1 lockfile file)
  oxipng 9.0.0 (7 png files)
  prettier 3.0.3 (5 css, 1 graphql, 23 javascript, 54 json, 77 markdown, 679 typescript, 15 yaml files)
  shellcheck 0.9.0 (4 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (4 shell files)
  taplo 0.8.1 (1 toml file)
  trivy 0.46.0 (16 yaml files)
  trufflehog 3.60.4 (935 files)
  yamllint 1.32.0 (15 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
  • [X] Modify packages/prettier-plugin/test/expressions.test.ts
Modify packages/prettier-plugin/test/expressions.test.ts with contents:
• Add new test cases to verify the correct formatting of long if/else chains. The test cases should cover various scenarios, including different numbers of if/else statements and different lengths of code blocks.
• The test cases should compare the output of the Prettier plugin with the expected formatted code. The expected code should be manually formatted according to the desired formatting rules for long if/else chains.
  • [X] Check packages/prettier-plugin/test/expressions.test.ts
Run packages/prettier-plugin/test/expressions.test.ts through the sandbox.

Step 3: 🔁 Code Review

Here are my self-reviews of my changes at sweep/fix-long-if-else-chains.

Here is the 1st review

The changes made in the parser.ts and printer.ts files are correctly implemented. However, the test file expressions.test.ts was not modified as per the plan.

Please add new test cases to verify the correct formatting of long if/else chains in the expressions.test.ts file. The test cases should cover various scenarios, including different numbers of if/else statements and different lengths of code blocks. The test cases should compare the output of the Prettier plugin with the expected formatted code. The expected code should be manually formatted according to the desired formatting rules for long if/else chains.

I finished incorporating these changes.


🎉 Latest improvements to Sweep:

  • Sweep can now passively improve your repository! Check out Rules to learn more.

💡 To recreate the pull request edit the issue title or description. To tweak the pull request, leave a comment on the pull request. Join Our Discord

Here's one that's done poorly: https://squigglehub.org/models/ozziegooen/helpers image

OAGr avatar Dec 13 '23 14:12 OAGr