Commit graph

1707 commits

Author SHA1 Message Date
Hong Jiarong
da660ad404 import items and its alias 2025-12-16 19:55:27 +08:00
Hong Jiarong
deb6d82772 simplify dead code checks and enhance diagnostic messages for unused symbols 2025-12-16 19:55:27 +08:00
Hong Jiarong
8c95904042 fix: hash tag 2025-12-16 19:55:27 +08:00
Hong Jiarong
ea1ec20253 feat: add snapshot_testing_with_snapshots function for enhanced snapshot testing 2025-12-16 19:55:27 +08:00
Hong Jiarong
5ee652a0a6 feat: enhance dead code handling with autofix actions for unused symbols 2025-12-16 19:55:27 +08:00
Hong Jiarong
c6dad907af clippy 2025-12-16 19:55:27 +08:00
Hong Jiarong
14c3f19138 it's not tuple.. 2025-12-16 19:55:27 +08:00
Hong Jiarong
ae073f0260 insta 2025-12-16 19:55:27 +08:00
Hong Jiarong
59ecc40bc4 feat: add test cases and snapshots for dead code detection in spread operator 2025-12-16 19:55:27 +08:00
Hong Jiarong
fb95df494c feat: add snapshot for dead code detection in destructuring patterns 2025-12-16 19:55:27 +08:00
Hong Jiarong
e2ecccfbb0 feat: add test cases for dead code detection in destructuring patterns 2025-12-16 19:55:27 +08:00
Hong Jiarong
93fac9789b feat: cross-module reference tracking 2025-12-16 19:55:27 +08:00
Hong Jiarong
32eb0b751c feat: implement dead code detection and diagnostics for Typst 2025-12-16 19:55:26 +08:00
Hong Jiarong
d805281e3c style: suppress unused_mut warning for hooks vector initialization 2025-12-16 19:55:12 +08:00
Hong Jiarong
c62159e1d6 docs: Add documentation comments to project hooks and refactor hook vector initialization. 2025-12-16 19:55:12 +08:00
Hong Jiarong
92aef00c16 refactor: Unify compile event handling with a new CompileHook trait, replacing individual handlers for diagnostics, linting, preview, and export. 2025-12-16 19:55:12 +08:00
Hong Jiarong
f35f25fd86 feat: Separate diagnostic handling into a dedicated DiagHook for compiler diagnostics and a new LintHook for lint-specific diagnostics. 2025-12-16 19:55:12 +08:00
Hong Jiarong
0b70b0a8a0 feat: split lint hook from compiler diagnostics 2025-12-16 19:55:12 +08:00
Hong Jiarong
49fb261a1a refactor: add hook scaffolding 2025-12-16 19:55:12 +08:00
Hong Jiarong
fa443289d4 feat: add clear_diagnostics method to CompileHandlerImpl for better diagnostic management 2025-12-16 19:55:12 +08:00
Hong Jiarong
b1871fbfa3 feat: enhance diagnostics handling by introducing DiagKind and separating compiler/lint diagnostics 2025-12-16 19:55:12 +08:00
Myriad-Dreamin
0bfe655ada
build: bump world crates to v0.14.6-rc2 (#2312)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
2025-12-16 11:37:50 +08:00
Myriad-Dreamin
506a97d495
fix: avoid duplicated @preview packages (#2313) 2025-12-16 08:11:10 +08:00
Hong Jiarong
0e334a2bfd
fix: change checkOnSave to check in .zed/settings.json (#2314)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
To resolve warning `invalid config value: /checkOnSave: invalid type:
map, expected a boolean;`. See rust-lang/rust-analyzer#13799.
2025-12-15 22:14:30 +08:00
Mikkelsej
ede7fcaed7
feat: add char count to vs code status bar (#2308)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
I have added character counter to the vscode status bar with

`const formatString = statusBarFormatString()
    .replace(/\{wordCount\}/g, `${words} ${plural("Word", words)}`)
    .replace(/\{charCount\}/g, `${chars} ${plural("Character", chars)}`)
    .replace(/\{pageCount\}/g, `${pages} ${plural("Page", pages)}`)
    .replace(/\{fileName\}/g, fileNameWithoutExt);
`
in editors/vscode/src/ui-extends.ts, and modified
`en = "Set format string of the server status. For example,
`{compileStatusIcon}{wordCount} [{fileName}]` will format the status as
`$(check) 123 words [main]`. Valid placeholders are:\n\n-
`{compileStatusIcon}`: Icon indicating the compile status\n-
`{wordCount}`: Number of words in the document\n`{charCount}`: Number of
characters in the document\n- `{fileName}`: Name of the file being
compiled\n\nNote: The status bar will be hidden if the format string is
empty."
`
in locales/tinymist-vscode.toml

This small change should make the option charCount possible for the
statusbar in vscode requested in
https://github.com/Myriad-Dreamin/tinymist/issues/2307 and a nice to
have feature.

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-14 10:46:43 +08:00
Myriad-Dreamin
ea824b521f
revert: fix: remove Clone trait bounds from diagnostics iterators (#2136) (#2138)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
2025-12-08 15:51:01 +08:00
Myriad-Dreamin
26f51f7a74
test: avoid test touching fs (#2298) 2025-12-08 14:15:37 +08:00
Myriad-Dreamin
0bc10c4152
feat: clear local package read cache (#2299) 2025-12-08 12:27:24 +08:00
Myriad-Dreamin
991add1a4a
feat: scan namespaces in package directories (#2297)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
This enables package completions in other namespaces like `@npm` or
`@some-org`
2025-12-08 06:44:21 +08:00
QuadnucYard
626c51ce4c
feat: store full package information and cache local packages (#2291)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
from #2095

---------

Co-authored-by: Myriad-Dreamin <camiyoru@gmail.com>
2025-12-07 20:22:40 +08:00
QuadnucYard
c26dc8de85
feat: add new pdf opts and image page number template to exporter (#2281)
Enhanced the exporter tool:
- For PDF format, added `pdf.pdfVersion`, `pdf.pdfValidator` and
`pdf.pdfTags`. `pdf.pdfVersion`, and `pdf.pdfValidator` will be combined
into `pdfStandard`, and `pdf.pdfTags` will be inverted into `noPdfTags`.
- Use `datetime-local` input for `pdf.pdfCreationTimestamp`.
- For image formats, added `pageNumberTemplate` option, since we cannot
customize that with output path for now.

<img width="1028" height="391" alt="image"
src="https://github.com/user-attachments/assets/1c0c44c9-0ea3-4f7c-a316-5a2746cb8a96"
/>

---------

Co-authored-by: Myriad-Dreamin <camiyoru@gmail.com>
2025-12-07 20:00:26 +08:00
ParaN3xus
ff76fb17d6
build: bump version to 0.14.6-rc1 (#2293)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
+tag v0.14.6-rc1
2025-12-04 05:26:48 +08:00
Myriad-Dreamin
6528e36919
feat: only implement Ord for interned values (#2294)
Since we compare values by pointer (`ptr_cmp`), only interned instances
are comparable.
2025-12-04 05:26:12 +08:00
ParaN3xus
ba8f1deaaa
fix: bring back global function handleTypstLocation (#2287)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
This PR fixes #2285
2025-12-02 10:36:41 +08:00
Myriad-Dreamin
a90cd25a87
fix: try impl Ord for typst values (#2279)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
2025-11-27 01:43:17 +08:00
Myriad-Dreamin
8661aea1d0
build: bump version to 0.14.4 (#2282)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / build (push) Blocked by required conditions
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
+tag v0.14.4
2025-11-26 08:13:59 +08:00
Myriad-Dreamin
5954e76ae3
fix: inherit no-pdf-tags flag when running exportPdf command (#2277)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
close #2268
2025-11-25 07:12:37 +08:00
Myriad-Dreamin
5310b9dd98
build: bump version to 0.14.4-rc1 (#2276)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
+tag v0.14.4-rc1
2025-11-25 04:49:27 +08:00
Hong Jiarong
bc61e150ec
feat: add module item layout tracking to expression analysis (#2250)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
This pr adds support for tracking the layout information of module
import items in the source code and refactors the expression analysis
pipeline to accommodate this feature, which introduces a new
`ModuleItemLayout` struct that records the parent module declaration,
the byte range of each import clause, and the bound identifier span.
Expression analysis (`expr_of` / `ExprWorker`) is updated to initialize,
collect, and store this layout data in a new `module_items` field within
`ExprInfoRepr`, which is now also included in its `Hash` implementation.
During import declaration handling, each import item—including renamed
items—is recorded through the new `record_module_item` method, ensuring
that all layout information is captured consistently as part of the
analysis workflow.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-24 02:29:14 +08:00
ParaN3xus
b2e286dfb5
fix: fix preview viewport & scrolling to use the preview container instead of window (#2269)
This is a follow-up to #2145 that fixes a series of resulting issues,
including #2267.
2025-11-23 21:02:30 +08:00
Myriad-Dreamin
3c5bba0ad4
build: bump version to 0.14.2 (#2263)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
+tag v0.14.2
2025-11-22 18:12:55 +08:00
Copilot
0714d19e29
feat: add c alias for compile command (#2261)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
Adds `c` as an alias for the `compile` subcommand to match `typst-cli`
behavior where `c = compile`.

## Changes

- Added `#[clap(alias = "c")]` attribute to the `Compile` command
variant
- Added test coverage for `tinymist c --help` and actual compilation via
alias

## Usage

```bash
# Both commands now work identically
tinymist compile input.typ output.pdf
tinymist c input.typ output.pdf
```

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>Support command alias `c` in tinymist-cli</issue_title>
> <issue_description>### Motivation
> 
> As `typst-cli` has a alias `c = compile`, `tinymist compile` receives
exactly same arguments as `typst compile`, it will be suprise if the
alias itself is not supported.
> 
> May not also applies to other subcommands.
> 
> If this is feasible, I'd be willing to write a PR. This should be
easy.
> 
> ### Description
> 
> _No response_
> 
> ### More Examples/Questions
> 
> _No response_</issue_description>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>

- Fixes Myriad-Dreamin/tinymist#2259

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/Myriad-Dreamin/tinymist/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Myriad-Dreamin <35292584+Myriad-Dreamin@users.noreply.github.com>
2025-11-20 03:29:31 +08:00
Myriad-Dreamin
391d40ce42
build: bump version to 0.14.2-rc1 (#2253)
Some checks failed
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
+tag v0.14.2-rc1
2025-11-18 02:56:04 +08:00
Myriad-Dreamin
2a0a5ab3ae
feat: hot reload compiler respecting typst font, package and library options (#2252)
they were not adding to the `Config::primary_opts` which is used to
detect whther to restart (reconstruct) a compiler.
2025-11-18 01:40:22 +08:00
QuadnucYard
a42700c04b
feat: export tool with page/text preview features (#2182)
Added an editor tool to export and preview documents, with all
configurable options.

Not supported: output path customization (requires changes in server)

<img width="1381" height="1458" alt="image"
src="https://github.com/user-attachments/assets/d27e6e19-bcf4-4d1a-a20e-9bea0258be24"
/>
<img width="1392" height="877" alt="image"
src="https://github.com/user-attachments/assets/53d93601-3e05-4e36-b4fd-26384fda1347"
/>

---------

Co-authored-by: Myriad-Dreamin <camiyoru@gmail.com>
2025-11-17 21:59:12 +08:00
CGMossa
91d11177ba
fix: typo in helix docs (#2251) 2025-11-17 19:30:49 +08:00
Myriad-Dreamin
f3762eb40a
fix: change typo 'Code Compilation' to 'Cold Compilation' (#2249)
Some checks failed
tinymist::ci / Duplicate Actions Detection (push) Has been cancelled
tinymist::auto_tag / auto-tag (push) Has been cancelled
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Has been cancelled
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Has been cancelled
tinymist::ci / prepare-build (push) Has been cancelled
tinymist::gh_pages / build-gh-pages (push) Has been cancelled
tinymist::ci / announce (push) Has been cancelled
tinymist::ci / build (push) Has been cancelled
Updated resource usage terminology for clarity.
2025-11-16 09:35:03 +08:00
Myriad-Dreamin
f5db6e8d31
fix: update code and docs about syntax mode (#2248)
which was detected by gemini review.
2025-11-16 09:15:04 +08:00
Myriad-Dreamin
9d5beb196b
feat: minimal viable support for syntax-only mode (#2247)
Configure whether to enable syntax-only mode for the language server. In
syntax-only mode, the language server will only provide syntax checking
and basic code completion, but will not perform full document
compilation or code analysis. This can be useful for improving
performance on low-end devices, devices under power-saving mode, or when
working with large documents.

Default behavior: Always disable syntax-only mode. The strategy may be
changed in the future, for example, automatically enable syntax-only
mode when the system is in power-saving mode.

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-11-16 08:30:20 +08:00
Hong Jiarong
575b0e301e
fix: destructuring pattern handling in ExprWorker (#2244)
Some checks are pending
tinymist::auto_tag / auto-tag (push) Waiting to run
tinymist::ci / Duplicate Actions Detection (push) Waiting to run
tinymist::ci / Check Clippy, Formatting, Completion, Documentation, and Tests (Linux) (push) Waiting to run
tinymist::ci / Check Minimum Rust version and Tests (Windows) (push) Waiting to run
tinymist::ci / prepare-build (push) Waiting to run
tinymist::ci / announce (push) Blocked by required conditions
tinymist::ci / build (push) Blocked by required conditions
tinymist::gh_pages / build-gh-pages (push) Waiting to run
This PR corrects destructuring handling in `ExprWorker` by switching
`DestructuringItem::Named` to use `named.pattern()` rather than
`named.expr()`. According to ast definition (see `Named::pattern` in
0da0165954/crates/typst-syntax/src/ast.rs (L1418-L1433)
, the rhs of a `Named` pair must be interpreted as a pattern when it
appears inside a destructuring context, not as an expression. This
change ensures nested destructuring patterns are analyzed correctly.
Also, spread items (`..rest`) are normalized into pattern form and
registered as proper declarations.

So that now complex patterns like `#let (x: (used_a, unused_x), y: (c1,
c2, c3)) = (...)` and array spreads like `#let (first, ..rest) = (1, 2,
3)` are allowed to resolve and lint as intended.
2025-11-15 23:41:04 +08:00