diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index bcc55d291..999650853 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -16,9 +16,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -49,9 +52,408 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-python-bindings
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-to-core
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-language-server-release
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-wasm-lib
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-derive-docs
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-bumper
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-language-server
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-lib
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-lib/fuzz
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-test-server
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
+ patch:
+ applies-to: version-updates
+ update-types:
+ - patch
+ major:
+ applies-to: version-updates
+ update-types:
+ - major
+ minor:
+ applies-to: version-updates
+ update-types:
+ - minor
+ - patch
+- package-ecosystem: cargo
+ directory: /rust/kcl-directory-test-macro
+ schedule:
+ interval: weekly
+ day: monday
+ time: '03:00'
+ timezone: America/Los_Angeles
+ open-pull-requests-limit: 5
+ reviewers:
+ - adamchalmers
+ - franknoirot
+ - irev-dev
+ - jessfraz
+ groups:
+ security:
+ applies-to: security-updates
+ update-types:
+ - minor
+ - patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -82,9 +484,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -115,9 +520,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -148,9 +556,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -181,9 +592,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -214,9 +628,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -247,9 +664,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
@@ -280,9 +700,12 @@ updates:
security:
applies-to: security-updates
update-types:
- - major
- minor
- patch
+ security-major:
+ applies-to: security-updates
+ update-types:
+ - major
patch:
applies-to: version-updates
update-types:
diff --git a/.github/workflows/cargo-test.yml b/.github/workflows/cargo-test.yml
index a4c963a39..8508c612c 100644
--- a/.github/workflows/cargo-test.yml
+++ b/.github/workflows/cargo-test.yml
@@ -86,7 +86,8 @@ jobs:
cd rust
cargo nextest run --workspace --features artifact-graph --retries=2 --no-fail-fast --profile ci simulation_tests::kcl_samples 2>&1 | tee /tmp/github-actions.log
env:
- KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
+ KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN_DEV}}
+ ZOO_HOST: https://api.dev.zoo.dev
RUST_BACKTRACE: full
- name: Commit differences
if: steps.path-changes.outputs.outside-kcl-samples == 'false' && steps.cargo-test-kcl-samples.outcome == 'failure'
@@ -116,7 +117,8 @@ jobs:
env:
# The default is auto, and insta behaves differently in CI vs. not.
INSTA_UPDATE: always
- KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
+ KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN_DEV}}
+ ZOO_HOST: https://api.dev.zoo.dev
# Configure nextest when it's run by insta (via just).
NEXTEST_PROFILE: ci
RUST_BACKTRACE: full
@@ -182,5 +184,6 @@ jobs:
--partition count:${{ matrix.partitionIndex}}/${{ matrix.partitionTotal }} \
2>&1 | tee /tmp/github-actions.log
env:
- KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}}
+ KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN_DEV}}
+ ZOO_HOST: https://api.dev.zoo.dev
diff --git a/.github/workflows/generate-website-docs.yml b/.github/workflows/generate-website-docs.yml
index a31a72b38..7e02fbaf3 100644
--- a/.github/workflows/generate-website-docs.yml
+++ b/.github/workflows/generate-website-docs.yml
@@ -40,13 +40,15 @@ jobs:
# cleanup old
rm -rf documentation/content/pages/docs/kcl/*.md
rm -rf documentation/content/pages/docs/kcl/types
- rm -rf documentation/content/pages/docs/kcl/settings
+ rm -rf documentation/content/pages/docs/kcl/functions
rm -rf documentation/content/pages/docs/kcl/consts
# move new
mv -f docs/kcl/*.md documentation/content/pages/docs/kcl/
mv -f docs/kcl/types documentation/content/pages/docs/kcl/
- mv -f docs/kcl/settings documentation/content/pages/docs/kcl/
+ mv -f docs/kcl/functions documentation/content/pages/docs/kcl/
mv -f docs/kcl/consts documentation/content/pages/docs/kcl/
+ # We don't need the README
+ rm documentation/content/pages/docs/kcl/README.md
- name: move kcl-samples
shell: bash
run: |
diff --git a/.github/workflows/kcl-python-bindings.yml b/.github/workflows/kcl-python-bindings.yml
index 55967e294..dfc80d976 100644
--- a/.github/workflows/kcl-python-bindings.yml
+++ b/.github/workflows/kcl-python-bindings.yml
@@ -125,7 +125,8 @@ jobs:
just setup-uv
just test
env:
- KITTYCAD_API_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN }}
+ KITTYCAD_API_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }}
+ ZOO_HOST: https://api.dev.zoo.dev
sdist:
runs-on: ubuntu-latest
diff --git a/.gitignore b/.gitignore
index 3089b837d..6a348c886 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,3 +85,4 @@ venv
.vscode-test
.biome/
+.million
diff --git a/docs/kcl-src/known-issues.md b/docs/kcl-src/known-issues.md
new file mode 100644
index 000000000..eb3025d07
--- /dev/null
+++ b/docs/kcl-src/known-issues.md
@@ -0,0 +1,26 @@
+---
+title: "KCL Known Issues"
+excerpt: "Known issues with the KCL standard library for the Zoo Design Studio."
+layout: manual
+---
+
+The following are bugs that are not in modeling-app or kcl itself. These bugs
+once fixed in engine will just start working here with no language changes.
+
+- **Sketch on Face**: If your sketch is outside the edges of the face (on which you
+ are sketching) you will get multiple models returned instead of one single
+ model for that sketch and its underlying 3D object.
+ If you see a red line around your model, it means this is happening.
+
+- **Import**: Right now you can import a file, even if that file has brep data
+ you cannot edit it, after v1, the engine will account for this.
+
+- **Fillets**: Fillets cannot intersect, you will get an error. Only simple fillet
+ cases work currently.
+
+- **Chamfers**: Chamfers cannot intersect, you will get an error. Only simple
+ chamfer cases work currently.
+
+- **Appearance**: Changing the appearance on a loft does not work.
+
+- **CSG Booleans**: Coplanar (bodies that share a plane) unions, subtractions, and intersections are not currently supported.
diff --git a/docs/kcl-src/modules.md b/docs/kcl-src/modules.md
new file mode 100644
index 000000000..47c4daa9a
--- /dev/null
+++ b/docs/kcl-src/modules.md
@@ -0,0 +1,365 @@
+---
+title: "KCL Modules"
+excerpt: "Documentation of modules for the KCL language for the Zoo Design Studio."
+layout: manual
+---
+
+`KCL` allows splitting code up into multiple files. Each file is somewhat
+isolated from other files as a separate module.
+
+When you define a function, you can use `export` before it to make it available
+to other modules.
+
+```kcl
+// util.kcl
+export fn increment(@x) {
+ return x + 1
+}
+```
+
+Other files in the project can now import functions that have been exported.
+This makes them available to use in another file.
+
+```norun
+// main.kcl
+import increment from "util.kcl"
+
+answer = increment(41)
+```
+
+Imported files _must_ be in the same project so that units are uniform across
+modules. This means that it must be in the same directory.
+
+Import statements must be at the top-level of a file. It is not allowed to have
+an `import` statement inside a function or in the body of an if‑else.
+
+Multiple functions can be exported in a file.
+
+```kcl
+// util.kcl
+export fn increment(@x) {
+ return x + 1
+}
+
+export fn decrement(@x) {
+ return x - 1
+}
+```
+
+When importing, you can import multiple functions at once.
+
+```norun
+import increment, decrement from "util.kcl"
+```
+
+Imported symbols can be renamed for convenience or to avoid name collisions.
+
+```norun
+import increment as inc, decrement as dec from "util.kcl"
+```
+
+---
+
+## Functions vs `clone`
+
+There are two common patterns for re‑using geometry:
+
+1. **Wrap the construction in a function** – flexible and fully parametric.
+2. **Duplicate an existing object with `clone`** – lightning‑fast, but an exact
+ duplicate.
+
+### Parametric function example
+
+```kcl
+fn cube(center) {
+ return startSketchOn(XY)
+ |> startProfile(at = [center[0] - 10, center[1] - 10])
+ |> line(endAbsolute = [center[0] + 10, center[1] - 10])
+ |> line(endAbsolute = [center[0] + 10, center[1] + 10])
+ |> line(endAbsolute = [center[0] - 10, center[1] + 10])
+ |> close()
+ |> extrude(length = 10)
+}
+
+myCube = cube(center = [0, 0])
+```
+
+*Pros*
+- Any argument can be a parameter – size, position, appearance, etc.
+- Works great inside loops, arrays, or optimisation sweeps.
+
+*Cons*
+- Every invocation rebuilds the entire feature tree.
+- **Slower** than a straight duplicate – each call is its own render job.
+
+### `clone` example
+
+```kcl
+sketch001 = startSketchOn(-XZ)
+ |> circle(center = [0, 0], radius = 10)
+ |> extrude(length = 5)
+ |> appearance(color = "#ff0000", metalness = 90, roughness = 90)
+
+sketch002 = clone(sketch001) // ✓ instant copy
+```
+
+*Pros*
+- Roughly an O(1) operation – we just duplicate the underlying engine handle.
+- Perfect when you need ten identical bolts or two copies of the same imported STEP file.
+
+*Cons*
+- **Not parametric** – the clone is exactly the same shape as the source.
+- If you need to tweak dimensions per‑instance, you’re back to a function.
+
+> **Rule of thumb** – Reach for `clone` when the geometry is already what you want. Reach for a function when you need customisation.
+
+---
+
+## Module‑level parallelism
+
+Under the hood, the Design Studio runs **every module in parallel** where it can. This means:
+
+- The top‑level code of `foo.kcl`, `bar.kcl`, and `baz.kcl` all start executing immediately and concurrently.
+- Imports that read foreign files (STEP/OBJ/…) overlap their I/O and background render.
+- CPU‑bound calculations in separate modules get their own worker threads.
+
+### Why modules beat one‑big‑file
+
+If you shoe‑horn everything into `main.kcl`, each statement runs sequentially:
+
+```norun
+import "big.step" as gizmo // blocks main while reading
+
+gizmo |> translate(x=50) // blocks again while waiting for render
+```
+
+Split `gizmo` into its own file and the read/render can overlap whatever else `main.kcl` is doing.
+
+```norun
+// gizmo.kcl (worker A)
+import "big.step"
+
+// main.kcl (worker B)
+import "gizmo.kcl" as gizmo // non‑blocking
+
+// ... other setup ...
+
+gizmo |> translate(x=50) // only blocks here
+```
+
+### Gotcha: defining but **not** calling functions
+
+Defining a function inside a module is instantaneous – we just record the byte‑code. The heavy lifting happens when the function is **called**. So:
+
+```norun
+// util.kcl
+export fn makeBolt(size) { /* … expensive CAD … */ }
+```
+
+If `main.kcl` waits until the very end to call `makeBolt`, *none* of that work was parallelised – you’ve pushed the cost back onto the serial tail of your script.
+
+**Better:** call it early or move the invocation into another module.
+
+```norun
+// bolt_instance.kcl
+import makeBolt from "util.kcl"
+bolt = makeBolt(5) // executed in parallel
+bolt
+```
+
+Now `main.kcl` can `import "bolt_instance.kcl" as bolt` and get the result that was rendered while it was busy doing other things.
+
+---
+
+## Whole module import
+
+You can also import the whole module. This is useful if you want to use the
+result of a module as a variable, like a part.
+
+```norun
+import "tests/inputs/cube.kcl" as cube
+cube
+ |> translate(x=10)
+```
+
+This imports the whole module and makes it available as `cube`. You can then
+use it like any other object. The `cube` variable is now a reference to the
+result of the module. This means that if you change the module, the `cube`
+variable will change as well.
+
+In `cube.kcl`, you cannot have multiple objects. It has to be a single part. If
+you have multiple objects, you will get an error. This is because the module is
+expected to return a single object that can be used as a variable.
+
+The last expression or variable definition becomes the module's return value.
+The module is expected to return a single object that can be used as a variable
+by whatever imports it.
+
+So for example, this is allowed:
+
+```norun
+... a bunch of code to create cube and cube2 ...
+
+myUnion = union([cube, cube2])
+```
+
+You can also do this:
+
+```norun
+... a bunch of code to create cube and cube2 ...
+
+union([cube, cube2])
+```
+
+Either way, the last line will return the union of the two objects.
+
+Or what you could do instead is:
+
+```norun
+... a bunch of code to create cube and cube2 ...
+
+myUnion = union([cube, cube2])
+myUnion
+```
+
+This will assign the union of the two objects to a variable, and then return it
+on the last statement. It's simply another way of doing the same thing.
+
+The final statement is what's important because it's the return value of the
+entire module. The module is expected to return a single object that can be used
+as a variable by the file that imports it.
+
+---
+
+## Multiple instances of the same import
+
+Whether you are importing a file from another CAD system or a KCL file, that
+file represents object(s) in memory. If you import the same file multiple times,
+it will only be rendered once.
+
+If you want to have multiple instances of the same object, you can use the
+[`clone`](/docs/kcl/clone) function. This will render a new instance of the object in memory.
+
+```norun
+import cube from "tests/inputs/cube.kcl"
+
+cube
+ |> translate(x=10)
+clone(cube)
+ |> translate(x=20)
+```
+
+In the sample above, the `cube` object is imported from a KCL file. The first
+instance is translated 10 units in the x direction. The second instance is
+cloned and translated 20 units in the x direction. The two instances are now
+separate objects in memory, and can be manipulated independently.
+
+Here is an example with a file from another CAD system:
+
+```kcl
+import "tests/inputs/cube.step" as cube
+
+cube
+ |> translate(x=10)
+clone(cube)
+ |> translate(x=20)
+```
+
+---
+
+## Importing files from other CAD systems
+
+`import` can also be used to import files from other CAD systems. The format of the statement is the
+same as for KCL files. You can only import the whole file, not items from it. E.g.,
+
+```norun
+import "tests/inputs/cube.obj"
+
+// Use `cube` just like a KCL object.
+```
+
+```kcl
+import "tests/inputs/cube.sldprt" as cube
+
+// Use `cube` just like a KCL object.
+```
+
+For formats lacking unit data (such as STL, OBJ, or PLY files), the default
+unit of measurement is millimeters. Alternatively you may specify the unit
+by using an attribute. Likewise, you can also specify a coordinate system. E.g.,
+
+```kcl
+@(lengthUnit = ft, coords = opengl)
+import "tests/inputs/cube.obj"
+```
+
+When importing a GLTF file, the bin file will be imported as well.
+
+Import paths are relative to the current project directory. Imports currently only work when
+using the native Design Studio, not in the browser.
+
+### Supported values
+
+File formats: `fbx`, `gltf`/`glb`, `obj`+, `ply`+, `sldprt`, `step`/`stp`, `stl`+. (Those marked with a
+'+' support customising the length unit and coordinate system).
+
+Length units: `mm` (the default), `cm`, `m`, `inch`, `ft`, `yd`.
+
+Coordinate systems:
+
+- `zoo` (the default), forward: -Y, up: +Z, handedness: right
+- `opengl`, forward: +Z, up: +Y, handedness: right
+- `vulkan`, forward: +Z, up: -Y, handedness: left
+
+---
+
+## Performance deep‑dive for foreign‑file imports
+
+Parallelized foreign‑file imports now let you overlap file reads, initialization,
+and rendering. To maximize throughput, you need to understand the three distinct
+stages—reading, initializing (background render start), and invocation (blocking)
+—and structure your code to defer blocking operations until the end.
+
+### Foreign import execution stages
+
+1. **Import (Read / Initialization) Stage**
+ ```kcl
+ import "tests/inputs/cube.step" as cube
+ ```
+ - Reads the file from disk and makes its API available.
+ - Starts engine rendering but **does not block** your script.
+ - This kick‑starts the render pipeline while you keep executing other code.
+
+2. **Invocation (Blocking) Stage**
+ ```kcl
+ import "tests/inputs/cube.step" as cube
+
+ cube
+ |> translate(z=10) // ← blocks here only
+ ```
+ - Any method call (e.g., `translate`, `scale`, `rotate`) waits for the background render to finish before applying transformations.
+
+### Best practices
+
+#### 1. Defer blocking calls
+
+```kcl
+import "tests/inputs/cube.step" as cube // 1) Read / Background render starts
+
+
+// --- perform other operations and calculations here ---
+
+
+cube
+ |> translate(z=10) // 2) Blocks only here
+```
+
+#### 2. Split heavy work into separate modules
+
+Place computationally expensive or IO‑heavy work into its own module so it can render in parallel while `main.kcl` continues.
+
+#### Future improvements
+
+Upcoming releases will auto‑analyse dependencies and only block when truly necessary. Until then, explicit deferral will give you the best performance.
+
+
diff --git a/docs/kcl-src/settings.md b/docs/kcl-src/settings.md
new file mode 100644
index 000000000..fef877621
--- /dev/null
+++ b/docs/kcl-src/settings.md
@@ -0,0 +1,45 @@
+---
+title: "KCL Settings"
+excerpt: "Documentation of settings for the KCL language and Zoo Design Studio."
+layout: manual
+---
+
+# KCL Settings
+
+There are three levels of settings available in Zoo Design Studio:
+
+1. [User Settings](/docs/kcl/settings-user): Global settings that apply to all projects, stored in `user.toml`
+2. [Project Settings](/docs/kcl/settings-project): Settings specific to a project, stored in `project.toml`
+3. Per-file Settings: Settings that apply to a single KCL file, specified using the `@settings` attribute
+
+## Configuration Files
+
+Zoo Design Studio uses TOML files for configuration:
+
+* **User Settings**: `user.toml` - See [complete documentation](/docs/kcl/settings-user)
+* **Project Settings**: `project.toml` - See [complete documentation](/docs/kcl/settings-project)
+
+## Per-file settings
+
+Settings which affect a single file are configured using the settings attribute.
+This must be at the top of the KCL file (comments before the attribute are permitted).
+For example:
+
+```kcl
+// The settings attribute.
+@settings(defaultLengthUnit = in)
+
+// The rest of your KCL code goes below...
+
+x = 42 // Represents 42 inches.
+```
+
+The settings attribute may contain multiple properties separated by commas.
+Valid properties are:
+
+- `defaultLengthUnit`: the default length unit to use for numbers declared in this file.
+ - Accepted values: `mm`, `cm`, `m`, `in` (inches), `ft` (feet), `yd` (yards).
+- `defaultAngleUnit`: the default angle unit to use for numbers declared in this file.
+ - Accepted values: `deg` (degrees), `rad` (radians).
+
+These settings override any project-wide settings (configured in project.toml or via the UI).
diff --git a/docs/kcl-src/types.md b/docs/kcl-src/types.md
new file mode 100644
index 000000000..7cea7be5a
--- /dev/null
+++ b/docs/kcl-src/types.md
@@ -0,0 +1,299 @@
+---
+title: "KCL Types"
+excerpt: "Documentation of types for the KCL standard library for the Zoo Design Studio."
+layout: manual
+---
+
+`KCL` defines the following types and keywords the language.
+
+All these types can be nested in various forms where nesting applies. Like
+arrays can hold objects and vice versa.
+
+## Constant declaration
+
+Constants are defined with a name and a value, like so:
+
+```
+myBool = false
+```
+
+Currently you cannot redeclare a constant.
+
+## Arrays
+
+An array is defined with `[]` braces. What is inside the brackets can
+be of any type. For example, the following is completely valid:
+
+```
+myArray = ["thing", 2, false]
+```
+
+If you want to get a value from an array you can use the index like so:
+`myArray[0]`.
+
+
+## Objects
+
+An object is defined with `{}` braces. Here is an example object:
+
+```
+myObj = { a = 0, b = "thing" }
+```
+
+We support two different ways of getting properties from objects, you can call
+`myObj.a` or `myObj["a"]` both work.
+
+## `ImportedGeometry`
+
+Using `import` you can import geometry defined using other CAD software. In KCL,
+these objects have type `ImportedGeometry` and can mostly be treated like any
+other solid (they can be rotated, scaled, etc.), although there is no access to
+their internal components. See the [modules and imports docs](modules) for more
+detail on importing geometry.
+
+
+## Binary expressions
+
+You can also do math! Let's show an example below:
+
+```
+myMathExpression = 3 + 1 * 2 / 3 - 7
+```
+
+You can nest expressions in parenthesis as well:
+
+```
+myMathExpression = 3 + (1 * 2 / (3 - 7))
+```
+
+## Functions
+
+We also have support for defining your own functions. Functions can take in any
+type of argument. Below is an example of the syntax:
+
+```
+fn myFn(x) {
+ return x
+}
+```
+
+As you can see above `myFn` just returns whatever it is given.
+
+KCL's early drafts used positional arguments, but we now use keyword arguments:
+
+```
+// If you declare a function like this
+fn add(left, right) {
+ return left + right
+}
+
+// You can call it like this:
+total = add(left = 1, right = 2)
+```
+
+Functions can also declare one *unlabeled* arg. If you do want to declare an unlabeled arg, it must
+be the first arg declared.
+
+```
+// The @ indicates an argument can be used without a label.
+// Note that only the first argument can use @.
+fn increment(@x) {
+ return x + 1
+}
+
+fn add(@x, delta) {
+ return x + delta
+}
+
+two = increment(1)
+three = add(1, delta = 2)
+```
+
+## Pipelines
+
+It can be hard to read repeated function calls, because of all the nested brackets.
+
+```norun
+i = 1
+x = h(g(f(i)))
+```
+
+You can make this easier to read by breaking it into many declarations, but that is a bit annoying.
+
+```norun
+i = 1
+x0 = f(i)
+x1 = g(x0)
+x = h(x1)
+```
+
+Instead, you can use the pipeline operator (`|>`) to simplify this.
+
+Basically, `x |> f(%)` is a shorthand for `f(x)`. The left-hand side of the `|>` gets put into
+the `%` in the right-hand side.
+
+So, this means `x |> f(%) |> g(%)` is shorthand for `g(f(x))`. The code example above, with its
+somewhat-clunky `x0` and `x1` constants could be rewritten as
+
+```norun
+i = 1
+x = i
+ |> f(%)
+ |> g(%)
+ |> h(%)
+```
+
+This helps keep your code neat and avoid unnecessary declarations.
+
+## Pipelines and keyword arguments
+
+Say you have a long pipeline of sketch functions, like this:
+
+```norun
+startSketchOn(XZ)
+ |> line(%, end = [3, 4])
+ |> line(%, end = [10, 10])
+ |> line(%, end = [-13, -14])
+ |> close(%)
+```
+
+In this example, each function call outputs a sketch, and it gets put into the next function call via
+the `%`, into the first (unlabeled) argument.
+
+If a function call uses an unlabeled first parameter, it will default to `%` if it's not given. This
+means that `|> line(%, end = [3, 4])` and `|> line(end = [3, 4])` are equivalent! So the above
+could be rewritten as
+
+```norun
+startSketchOn(XZ)
+ |> line(end = [3, 4])
+ |> line(end = [10, 10])
+ |> line(end = [-13, -14])
+ |> close()
+```
+
+Note that we are still in the process of migrating KCL's standard library to use keyword arguments. So some
+functions are still unfortunately using positional arguments. We're moving them over, so keep checking back.
+Some functions are still using the old positional argument syntax.
+Check the docs page for each function and look at its examples to see.
+
+## Tags
+
+Tags are used to give a name (tag) to a specific path.
+
+### `TagDeclarator`
+
+The syntax for declaring a tag is `$myTag` you would use it in the following
+way:
+
+```norun
+startSketchOn(XZ)
+ |> startProfile(at = origin)
+ |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001)
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001) - 90,
+ length = 196.99,
+ tag = $rectangleSegmentB001,
+ )
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001),
+ length = -segLen(rectangleSegmentA001),
+ tag = $rectangleSegmentC001,
+ )
+ |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
+ |> close()
+```
+
+### `TagIdentifier`
+
+As per the example above you can use the tag identifier to get a reference to the
+tagged object. The syntax for this is `myTag`.
+
+In the example above we use the tag identifier to get the angle of the segment
+`segAng(rectangleSegmentA001, %)`.
+
+### `Start`
+
+There is a special tag, `START` (with type `Start`, although under the cover, it's a string)
+for identifying the face of a solid which was the start of an extrusion (i.e., the surface which
+is extruded).
+
+### `End`
+
+There is a special tag, `END` (with type `End`, although under the cover, it's a string)
+for identifying the face of a solid which was finishes an extrusion.
+
+### Tag Scope
+
+Tags are scoped globally if in the root context meaning in this example you can
+use the tag `rectangleSegmentA001` in any function or expression in the file.
+
+However if the code was written like this:
+
+```norun
+fn rect(origin) {
+ return startSketchOn(XZ)
+ |> startProfile(at = origin)
+ |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001)
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001) - 90,
+ length = 196.99,
+ tag = $rectangleSegmentB001,
+ )
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001),
+ length = -segLen(rectangleSegmentA001),
+ tag = $rectangleSegmentC001,
+ )
+ |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
+ |> close()
+}
+
+rect(origin = [0, 0])
+rect(origin = [20, 0])
+```
+
+Those tags would only be available in the `rect` function and not globally.
+
+However you likely want to use those tags somewhere outside the `rect` function.
+
+Tags are accessible through the sketch group they are declared in.
+For example the following code works.
+
+```norun
+fn rect(origin) {
+ return startSketchOn(XZ)
+ |> startProfile(at = origin)
+ |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001)
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001) - 90,
+ length = 196.99,
+ tag = $rectangleSegmentB001,
+ )
+ |> angledLine(
+ angle = segAng(rectangleSegmentA001),
+ length = -segLen(rectangleSegmentA001),
+ tag = $rectangleSegmentC001,
+ )
+ |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
+ |> close()
+}
+
+rect(origin = [0, 0])
+myRect = rect(origin = [20, 0])
+
+myRect
+ |> extrude(length = 10)
+ |> fillet(radius = 0.5, tags = [myRect.tags.rectangleSegmentA001])
+```
+
+See how we use the tag `rectangleSegmentA001` in the `fillet` function outside
+the `rect` function. This is because the `rect` function is returning the
+sketch group that contains the tags.
+
+
+---
+
+If you find any issues using any of the above expressions or syntax,
+please file an issue with the `ast` label on the [modeling-app
+repo](https://github.com/KittyCAD/modeling-app/issues/new).
diff --git a/docs/kcl/README.md b/docs/kcl/README.md
new file mode 100644
index 000000000..f1dff1f1b
--- /dev/null
+++ b/docs/kcl/README.md
@@ -0,0 +1,5 @@
+# Autogenerated docs
+
+Everything in this directory and its subdirectories (except this file) is automatically generated. Do not edit anything in this directory directly, your changes will be lost.
+
+The directory contents are generated by running the `test_generate_stdlib_markdown_docs` test in `/rust/kcl-lib/src/docs/gen_std_tests.rs`. Files are generated from the standard library declared in KCL (`/rust/kcl-lib/std`) and in Rust (`/rust/kcl-lib/src/std`), and by copying files from `../kcl-src`.
\ No newline at end of file
diff --git a/docs/kcl/angledLine.md b/docs/kcl/angledLine.md
index 94177f263..70fc315af 100644
--- a/docs/kcl/angledLine.md
+++ b/docs/kcl/angledLine.md
@@ -10,15 +10,15 @@ Draw a line segment relative to the current origin using the polar measure of so
```kcl
angledLine(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- angle: [number](/docs/kcl/types/number),
- length?: [number](/docs/kcl/types/number),
- lengthX?: [number](/docs/kcl/types/number),
- lengthY?: [number](/docs/kcl/types/number),
- endAbsoluteX?: [number](/docs/kcl/types/number),
- endAbsoluteY?: [number](/docs/kcl/types/number),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ angle: number,
+ length?: number,
+ lengthX?: number,
+ lengthY?: number,
+ endAbsoluteX?: number,
+ endAbsoluteY?: number,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -26,18 +26,18 @@ angledLine(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes |
-| `length` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
-| `lengthX` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
-| `lengthY` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
-| `endAbsoluteX` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
-| `endAbsoluteY` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `angle` | [`number`](/docs/kcl/types/std-types-number) | Which angle should the line be drawn at? | Yes |
+| `length` | [`number`](/docs/kcl/types/std-types-number) | Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
+| `lengthX` | [`number`](/docs/kcl/types/std-types-number) | Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
+| `lengthY` | [`number`](/docs/kcl/types/std-types-number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
+| `endAbsoluteX` | [`number`](/docs/kcl/types/std-types-number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
+| `endAbsoluteY` | [`number`](/docs/kcl/types/std-types-number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/angledLineThatIntersects.md b/docs/kcl/angledLineThatIntersects.md
index ea0dbc699..aa5d08743 100644
--- a/docs/kcl/angledLineThatIntersects.md
+++ b/docs/kcl/angledLineThatIntersects.md
@@ -10,12 +10,12 @@ Draw an angled line from the current origin, constructing a line segment such th
```kcl
angledLineThatIntersects(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- angle: [number](/docs/kcl/types/number),
- intersectTag: [TagIdentifier](/docs/kcl/types#tag-identifier),
- offset?: [number](/docs/kcl/types/number),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ angle: number,
+ intersectTag: TagIdentifier,
+ offset?: number,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -23,15 +23,15 @@ angledLineThatIntersects(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes |
-| `intersectTag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The tag of the line to intersect with | Yes |
-| `offset` | [`number`](/docs/kcl/types/number) | The offset from the intersecting line. Defaults to 0. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `angle` | [`number`](/docs/kcl/types/std-types-number) | Which angle should the line be drawn at? | Yes |
+| `intersectTag` | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The tag of the line to intersect with | Yes |
+| `offset` | [`number`](/docs/kcl/types/std-types-number) | The offset from the intersecting line. Defaults to 0. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/appearance.md b/docs/kcl/appearance.md
index 28bea674a..4cb592631 100644
--- a/docs/kcl/appearance.md
+++ b/docs/kcl/appearance.md
@@ -10,11 +10,11 @@ This will work on any solid, including extruded solids, revolved solids, and she
```kcl
appearance(
- solids: [[Solid](/docs/kcl/types/Solid)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)OrImportedGeometry),
- color: String,
- metalness?: [number](/docs/kcl/types/number),
- roughness?: [number](/docs/kcl/types/number),
-): [[Solid](/docs/kcl/types/Solid)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)OrImportedGeometry)
+ solids: [Solid] | ImportedGeometry,
+ color: string,
+ metalness?: number,
+ roughness?: number,
+): [Solid] | ImportedGeometry
```
@@ -22,14 +22,14 @@ appearance(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`SolidOrImportedGeometry`](/docs/kcl/types/SolidOrImportedGeometry) | The solid(s) whose appearance is being set | Yes |
-| `color` | `String` | Color of the new material, a hex string like '#ff0000' | Yes |
-| `metalness` | [`number`](/docs/kcl/types/number) | Metalness of the new material, a percentage like 95.7. | No |
-| `roughness` | [`number`](/docs/kcl/types/number) | Roughness of the new material, a percentage like 95.7. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) | The solid(s) whose appearance is being set | Yes |
+| `color` | [`string`](/docs/kcl/types/std-types-string) | Color of the new material, a hex string like '#ff0000' | Yes |
+| `metalness` | [`number`](/docs/kcl/types/std-types-number) | Metalness of the new material, a percentage like 95.7. | No |
+| `roughness` | [`number`](/docs/kcl/types/std-types-number) | Roughness of the new material, a percentage like 95.7. | No |
### Returns
-[`SolidOrImportedGeometry`](/docs/kcl/types/SolidOrImportedGeometry) - Data for a solid or an imported geometry.
+[`[Solid]`](/docs/kcl/types/std-types-Solid) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) - Data for a solid or an imported geometry.
### Examples
@@ -72,9 +72,9 @@ fn cube(center) {
|> extrude(length = 10)
}
-example0 = cube([0, 0])
-example1 = cube([20, 0])
-example2 = cube([40, 0])
+example0 = cube(center = [0, 0])
+example1 = cube(center = [20, 0])
+example2 = cube(center = [40, 0])
appearance(
[example0, example1],
diff --git a/docs/kcl/arc.md b/docs/kcl/arc.md
index 9b1328922..f38d50477 100644
--- a/docs/kcl/arc.md
+++ b/docs/kcl/arc.md
@@ -12,14 +12,14 @@ Unless this makes a lot of sense and feels like what you're looking for to const
```kcl
arc(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- angleStart?: [number](/docs/kcl/types/number),
- angleEnd?: [number](/docs/kcl/types/number),
- radius?: [number](/docs/kcl/types/number),
- interiorAbsolute?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- endAbsolute?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ angleStart?: number,
+ angleEnd?: number,
+ radius?: number,
+ interiorAbsolute?: Point2d,
+ endAbsolute?: Point2d,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -27,17 +27,17 @@ arc(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `angleStart` | [`number`](/docs/kcl/types/number) | Where along the circle should this arc start? | No |
-| `angleEnd` | [`number`](/docs/kcl/types/number) | Where along the circle should this arc end? | No |
-| `radius` | [`number`](/docs/kcl/types/number) | How large should the circle be? | No |
-| `interiorAbsolute` | [`[number]`](/docs/kcl/types/number) | Any point between the arc's start and end? Requires `endAbsolute`. Incompatible with `angleStart` or `angleEnd` | No |
-| `endAbsolute` | [`[number]`](/docs/kcl/types/number) | Where should this arc end? Requires `interiorAbsolute`. Incompatible with `angleStart` or `angleEnd` | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `angleStart` | [`number`](/docs/kcl/types/std-types-number) | Where along the circle should this arc start? | No |
+| `angleEnd` | [`number`](/docs/kcl/types/std-types-number) | Where along the circle should this arc end? | No |
+| `radius` | [`number`](/docs/kcl/types/std-types-number) | How large should the circle be? | No |
+| `interiorAbsolute` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Any point between the arc's start and end? Requires `endAbsolute`. Incompatible with `angleStart` or `angleEnd` | No |
+| `endAbsolute` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Where should this arc end? Requires `interiorAbsolute`. Incompatible with `angleStart` or `angleEnd` | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/assert.md b/docs/kcl/assert.md
index edd4b1371..e0e3caabf 100644
--- a/docs/kcl/assert.md
+++ b/docs/kcl/assert.md
@@ -10,14 +10,14 @@ Check a value meets some expected conditions at runtime. Program terminates with
```kcl
assert(
- actual: [number](/docs/kcl/types/number),
- isGreaterThan?: [number](/docs/kcl/types/number),
- isLessThan?: [number](/docs/kcl/types/number),
- isGreaterThanOrEqual?: [number](/docs/kcl/types/number),
- isLessThanOrEqual?: [number](/docs/kcl/types/number),
- isEqualTo?: [number](/docs/kcl/types/number),
- tolerance?: [number](/docs/kcl/types/number),
- error?: String,
+ actual: number,
+ isGreaterThan?: number,
+ isLessThan?: number,
+ isGreaterThanOrEqual?: number,
+ isLessThanOrEqual?: number,
+ isEqualTo?: number,
+ tolerance?: number,
+ error?: string,
): ()
```
@@ -26,14 +26,14 @@ assert(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `actual` | [`number`](/docs/kcl/types/number) | Value to check. It will be compared with one of the comparison arguments. | Yes |
-| `isGreaterThan` | [`number`](/docs/kcl/types/number) | Comparison argument. If given, checks the `actual` value is greater than this. | No |
-| `isLessThan` | [`number`](/docs/kcl/types/number) | Comparison argument. If given, checks the `actual` value is less than this. | No |
-| `isGreaterThanOrEqual` | [`number`](/docs/kcl/types/number) | Comparison argument. If given, checks the `actual` value is greater than or equal to this. | No |
-| `isLessThanOrEqual` | [`number`](/docs/kcl/types/number) | Comparison argument. If given, checks the `actual` value is less than or equal to this. | No |
-| `isEqualTo` | [`number`](/docs/kcl/types/number) | Comparison argument. If given, checks the `actual` value is less than or equal to this. | No |
-| `tolerance` | [`number`](/docs/kcl/types/number) | If `isEqualTo` is used, this is the tolerance to allow for the comparison. This tolerance is used because KCL's number system has some floating-point imprecision when used with very large decimal places. | No |
-| `error` | `String` | If the value was false, the program will terminate with this error message | No |
+| `actual` | [`number`](/docs/kcl/types/std-types-number) | Value to check. It will be compared with one of the comparison arguments. | Yes |
+| `isGreaterThan` | [`number`](/docs/kcl/types/std-types-number) | Comparison argument. If given, checks the `actual` value is greater than this. | No |
+| `isLessThan` | [`number`](/docs/kcl/types/std-types-number) | Comparison argument. If given, checks the `actual` value is less than this. | No |
+| `isGreaterThanOrEqual` | [`number`](/docs/kcl/types/std-types-number) | Comparison argument. If given, checks the `actual` value is greater than or equal to this. | No |
+| `isLessThanOrEqual` | [`number`](/docs/kcl/types/std-types-number) | Comparison argument. If given, checks the `actual` value is less than or equal to this. | No |
+| `isEqualTo` | [`number`](/docs/kcl/types/std-types-number) | Comparison argument. If given, checks the `actual` value is less than or equal to this. | No |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | If `isEqualTo` is used, this is the tolerance to allow for the comparison. This tolerance is used because KCL's number system has some floating-point imprecision when used with very large decimal places. | No |
+| `error` | [`string`](/docs/kcl/types/std-types-string) | If the value was false, the program will terminate with this error message | No |
### Returns
diff --git a/docs/kcl/assertIs.md b/docs/kcl/assertIs.md
index 0b7b6e5b3..78593851a 100644
--- a/docs/kcl/assertIs.md
+++ b/docs/kcl/assertIs.md
@@ -10,8 +10,8 @@ Asserts that a value is the boolean value true.
```kcl
assertIs(
- actual: [bool](/docs/kcl/types/bool),
- error?: String,
+ actual: bool,
+ error?: string,
): ()
```
@@ -20,8 +20,8 @@ assertIs(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `actual` | [`bool`](/docs/kcl/types/bool) | Value to check. If this is the boolean value true, assert passes. Otherwise it fails. | Yes |
-| `error` | `String` | If the value was false, the program will terminate with this error message | No |
+| `actual` | [`bool`](/docs/kcl/types/std-types-bool) | Value to check. If this is the boolean value true, assert passes. Otherwise it fails. | Yes |
+| `error` | [`string`](/docs/kcl/types/std-types-string) | If the value was false, the program will terminate with this error message | No |
### Returns
diff --git a/docs/kcl/bezierCurve.md b/docs/kcl/bezierCurve.md
index 787c29c77..27b9ccd99 100644
--- a/docs/kcl/bezierCurve.md
+++ b/docs/kcl/bezierCurve.md
@@ -10,12 +10,12 @@ Draw a smooth, continuous, curved line segment from the current origin to the de
```kcl
bezierCurve(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- control1: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- control2: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- end: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ control1: Point2d,
+ control2: Point2d,
+ end: Point2d,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -23,15 +23,15 @@ bezierCurve(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `control1` | [`[number]`](/docs/kcl/types/number) | First control point for the cubic | Yes |
-| `control2` | [`[number]`](/docs/kcl/types/number) | Second control point for the cubic | Yes |
-| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this line go? | Yes |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `control1` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | First control point for the cubic | Yes |
+| `control2` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Second control point for the cubic | Yes |
+| `end` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | How far away (along the X and Y axes) should this line go? | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/circleThreePoint.md b/docs/kcl/circleThreePoint.md
index 0c7e7247d..07158f0e2 100644
--- a/docs/kcl/circleThreePoint.md
+++ b/docs/kcl/circleThreePoint.md
@@ -10,12 +10,12 @@ Construct a circle derived from 3 points.
```kcl
circleThreePoint(
- sketchSurfaceOrGroup: [[Sketch](/docs/kcl/types/Sketch)OrSurface](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)OrSurface),
- p1: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- p2: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- p3: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketchSurfaceOrGroup: Sketch | Plane | Face,
+ p1: Point2d,
+ p2: Point2d,
+ p3: Point2d,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -23,15 +23,15 @@ circleThreePoint(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketchSurfaceOrGroup` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | Plane or surface to sketch on. | Yes |
-| `p1` | [`[number]`](/docs/kcl/types/number) | 1st point to derive the circle. | Yes |
-| `p2` | [`[number]`](/docs/kcl/types/number) | 2nd point to derive the circle. | Yes |
-| `p3` | [`[number]`](/docs/kcl/types/number) | 3rd point to derive the circle. | Yes |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Identifier for the circle to reference elsewhere. | No |
+| `sketchSurfaceOrGroup` | [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`Plane`](/docs/kcl/types/std-types-Plane) or [`Face`](/docs/kcl/types/std-types-Face) | Plane or surface to sketch on. | Yes |
+| `p1` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | 1st point to derive the circle. | Yes |
+| `p2` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | 2nd point to derive the circle. | Yes |
+| `p3` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | 3rd point to derive the circle. | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Identifier for the circle to reference elsewhere. | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/clone.md b/docs/kcl/clone.md
index 62c88791f..37f51ef55 100644
--- a/docs/kcl/clone.md
+++ b/docs/kcl/clone.md
@@ -13,7 +13,7 @@ This doesn't really have much utility unless you need the equivalent of a double
Really only use this function if YOU ARE SURE you need it. In most cases you do not need clone and using a pattern with `instance = 2` is more appropriate.
```kcl
-clone(geometry: [GeometryWithImportedGeometry](/docs/kcl/types/GeometryWithImportedGeometry)): [GeometryWithImportedGeometry](/docs/kcl/types/GeometryWithImportedGeometry)
+clone(geometry: Solid | Sketch | ImportedGeometry): Solid | Sketch | ImportedGeometry
```
@@ -21,11 +21,11 @@ clone(geometry: [GeometryWithImportedGeometry](/docs/kcl/types/GeometryWithImpor
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `geometry` | [`GeometryWithImportedGeometry`](/docs/kcl/types/GeometryWithImportedGeometry) | The sketch, solid, or imported geometry to be cloned | Yes |
+| `geometry` | [`Solid`](/docs/kcl/types/std-types-Solid) or [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) | The sketch, solid, or imported geometry to be cloned | Yes |
### Returns
-[`GeometryWithImportedGeometry`](/docs/kcl/types/GeometryWithImportedGeometry) - A geometry including an imported geometry.
+[`Solid`](/docs/kcl/types/std-types-Solid) or [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) - A geometry including an imported geometry.
### Examples
diff --git a/docs/kcl/close.md b/docs/kcl/close.md
index 72d74fbae..dd731e779 100644
--- a/docs/kcl/close.md
+++ b/docs/kcl/close.md
@@ -10,9 +10,9 @@ Construct a line segment from the current origin back to the profile's origin, e
```kcl
close(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -20,12 +20,12 @@ close(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | The sketch you want to close | Yes |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | The sketch you want to close | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/e.md b/docs/kcl/e.md
deleted file mode 100644
index 7ae401b60..000000000
--- a/docs/kcl/e.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: "e"
-excerpt: "Return the value of Euler’s number `e`."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Return the value of Euler’s number `e`.
-
-**DEPRECATED** use the constant E
-
-```js
-e(): number
-```
-
-### Tags
-
-* `math`
-
-
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-exampleSketch = startSketchOn(XZ)
- |> startProfile(at = [0, 0])
- |> angledLine(angle = 30, length = 2 * e() ^ 2)
- |> yLine(endAbsolute = 0)
- |> close()
-
-example = extrude(exampleSketch, length = 10)
-```
-
-
-
-
diff --git a/docs/kcl/extrude.md b/docs/kcl/extrude.md
index 7a0d18735..6c9e0ebdf 100644
--- a/docs/kcl/extrude.md
+++ b/docs/kcl/extrude.md
@@ -10,13 +10,13 @@ You can provide more than one sketch to extrude, and they will all be extruded i
```kcl
extrude(
- sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- length: [number](/docs/kcl/types/number),
- symmetric?: [bool](/docs/kcl/types/bool),
- bidirectionalLength?: [number](/docs/kcl/types/number),
- tagStart?: [TagDeclarator](/docs/kcl/types#tag-declaration),
- tagEnd?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ sketches: [Sketch],
+ length: number,
+ symmetric?: bool,
+ bidirectionalLength?: number,
+ tagStart?: TagDeclarator,
+ tagEnd?: TagDeclarator,
+): [Solid]
```
@@ -24,16 +24,16 @@ extrude(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketch or sketches should be extruded | Yes |
-| `length` | [`number`](/docs/kcl/types/number) | How far to extrude the given sketches | Yes |
-| `symmetric` | [`bool`](/docs/kcl/types/bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the | No |
-| `bidirectionalLength` | [`number`](/docs/kcl/types/number) | If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored. | No |
-| `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the extrusion, i.e. the original sketch | No |
-| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch | No |
+| `sketches` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | Which sketch or sketches should be extruded | Yes |
+| `length` | [`number`](/docs/kcl/types/std-types-number) | How far to extrude the given sketches | Yes |
+| `symmetric` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the | No |
+| `bidirectionalLength` | [`number`](/docs/kcl/types/std-types-number) | If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored. | No |
+| `tagStart` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the start of the extrusion, i.e. the original sketch | No |
+| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/fromCm.md b/docs/kcl/fromCm.md
deleted file mode 100644
index 152a4e6c7..000000000
--- a/docs/kcl/fromCm.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromCm"
-excerpt: "Converts a number from centimeters to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from centimeters to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42cm`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in centimeters.
-
-For example, if the current file uses inches, `fromCm(1)` will return `0.393701`. If the current file uses millimeters, `fromCm(1)` will return `10`. If the current file uses centimeters, `fromCm(1)` will return `1`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromCm(10)` is more readable that your intent is "I want 10 centimeters" than `10 * 10`, if the file settings are in millimeters.
-
-```js
-fromCm(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = fromCm(10)
-```
-
-
-
-
diff --git a/docs/kcl/fromFt.md b/docs/kcl/fromFt.md
deleted file mode 100644
index 945e6ada3..000000000
--- a/docs/kcl/fromFt.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromFt"
-excerpt: "Converts a number from feet to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from feet to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42ft`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in feet.
-
-For example, if the current file uses inches, `fromFt(1)` will return `12`. If the current file uses millimeters, `fromFt(1)` will return `304.8`. If the current file uses feet, `fromFt(1)` will return `1`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromFt(10)` is more readable that your intent is "I want 10 feet" than `10 * 304.8`, if the file settings are in millimeters.
-
-```js
-fromFt(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = fromFt(10)
-```
-
-
-
-
diff --git a/docs/kcl/fromInches.md b/docs/kcl/fromInches.md
deleted file mode 100644
index d64a2477b..000000000
--- a/docs/kcl/fromInches.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromInches"
-excerpt: "Converts a number from inches to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from inches to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42inch`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in inches.
-
-For example, if the current file uses inches, `fromInches(1)` will return `1`. If the current file uses millimeters, `fromInches(1)` will return `25.4`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromInches(10)` is more readable that your intent is "I want 10 inches" than `10 * 25.4`, if the file settings are in millimeters.
-
-```js
-fromInches(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = fromInches(10)
-```
-
-
-
-
diff --git a/docs/kcl/fromM.md b/docs/kcl/fromM.md
deleted file mode 100644
index 3fe12845f..000000000
--- a/docs/kcl/fromM.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromM"
-excerpt: "Converts a number from meters to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from meters to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42m`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in meters.
-
-For example, if the current file uses inches, `fromM(1)` will return `39.3701`. If the current file uses millimeters, `fromM(1)` will return `1000`. If the current file uses meters, `fromM(1)` will return `1`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromM(10)` is more readable that your intent is "I want 10 meters" than `10 * 1000`, if the file settings are in millimeters.
-
-```js
-fromM(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = 10 * fromM(10)
-```
-
-
-
-
diff --git a/docs/kcl/fromMm.md b/docs/kcl/fromMm.md
deleted file mode 100644
index 40fc7b45e..000000000
--- a/docs/kcl/fromMm.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromMm"
-excerpt: "Converts a number from mm to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from mm to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42mm`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in millimeters.
-
-For example, if the current file uses inches, `fromMm(1)` will return `1/25.4`. If the current file uses millimeters, `fromMm(1)` will return `1`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromMm(10)` is more readable that your intent is "I want 10 millimeters" than `10 * (1/25.4)`, if the file settings are in inches.
-
-```js
-fromMm(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = fromMm(10)
-```
-
-
-
-
diff --git a/docs/kcl/fromYd.md b/docs/kcl/fromYd.md
deleted file mode 100644
index 01c4707d5..000000000
--- a/docs/kcl/fromYd.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "fromYd"
-excerpt: "Converts a number from yards to the current default unit."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Converts a number from yards to the current default unit.
-
-*DEPRECATED* prefer using explicit numeric suffixes (e.g., `42yd`) or the `to...` conversion functions.
-
-No matter what units the current file uses, this function will always return a number equivalent to the input in yards.
-
-For example, if the current file uses inches, `fromYd(1)` will return `36`. If the current file uses millimeters, `fromYd(1)` will return `914.4`. If the current file uses yards, `fromYd(1)` will return `1`.
-
-**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.
-
-We merely provide these functions for convenience and readability, as `fromYd(10)` is more readable that your intent is "I want 10 yards" than `10 * 914.4`, if the file settings are in millimeters.
-
-```js
-fromYd(input: number): number
-```
-
-### Tags
-
-* `units`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-totalWidth = fromYd(10)
-```
-
-
-
-
diff --git a/docs/kcl/std-helix.md b/docs/kcl/functions/std-helix.md
similarity index 99%
rename from docs/kcl/std-helix.md
rename to docs/kcl/functions/std-helix.md
index d1a89818b..5b018d334 100644
--- a/docs/kcl/std-helix.md
+++ b/docs/kcl/functions/std-helix.md
@@ -10,14 +10,14 @@ Create a helix.
```kcl
helix(
- revolutions: [number](/docs/kcl/types/number)(_),
- angleStart: [number](/docs/kcl/types/number)(Angle),
- ccw?: [bool](/docs/kcl/types/bool),
- radius?: [number](/docs/kcl/types/number)(Length),
- axis?: [Axis3d](/docs/kcl/types/Axis3d) | [Edge](/docs/kcl/types/Edge),
- length?: [number](/docs/kcl/types/number)(Length),
- cylinder?: [Solid](/docs/kcl/types/Solid),
-): [Helix](/docs/kcl/types/Helix)
+ revolutions: number(_),
+ angleStart: number(Angle),
+ ccw?: bool,
+ radius?: number(Length),
+ axis?: Axis3d | Edge,
+ length?: number(Length),
+ cylinder?: Solid,
+): Helix
```
@@ -27,15 +27,15 @@ helix(
|----------|------|-------------|----------|
| `revolutions` | `number(_)` | Number of revolutions. | Yes |
| `angleStart` | `number(Angle)` | Start angle. | Yes |
-| `ccw` | [`bool`](/docs/kcl/types/bool) | Is the helix rotation counter clockwise? The default is `false`. | No |
+| `ccw` | [`bool`](/docs/kcl/types/std-types-bool) | Is the helix rotation counter clockwise? The default is `false`. | No |
| `radius` | `number(Length)` | Radius of the helix. | No |
-| `axis` | [`Axis3d`](/docs/kcl/types/Axis3d) or [`Edge`](/docs/kcl/types/Edge) | Axis to use for the helix. | No |
+| `axis` | [`Axis3d`](/docs/kcl/types/std-types-Axis3d) or [`Edge`](/docs/kcl/types/std-types-Edge) | Axis to use for the helix. | No |
| `length` | `number(Length)` | Length of the helix. This is not necessary if the helix is created around an edge. If not given the length of the edge is used. | No |
-| `cylinder` | [`Solid`](/docs/kcl/types/Solid) | Cylinder to create the helix on. | No |
+| `cylinder` | [`Solid`](/docs/kcl/types/std-types-Solid) | Cylinder to create the helix on. | No |
### Returns
-[`Helix`](/docs/kcl/types/Helix)
+[`Helix`](/docs/kcl/types/std-types-Helix)
### Examples
diff --git a/docs/kcl/std-math-abs.md b/docs/kcl/functions/std-math-abs.md
similarity index 99%
rename from docs/kcl/std-math-abs.md
rename to docs/kcl/functions/std-math-abs.md
index 775bf770d..795b87b02 100644
--- a/docs/kcl/std-math-abs.md
+++ b/docs/kcl/functions/std-math-abs.md
@@ -9,7 +9,7 @@ Compute the absolute value of a number.
```kcl
-abs(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+abs(@input: number): number
```
@@ -17,11 +17,11 @@ abs(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-acos.md b/docs/kcl/functions/std-math-acos.md
similarity index 99%
rename from docs/kcl/std-math-acos.md
rename to docs/kcl/functions/std-math-acos.md
index 6ca5b68fb..a7751c2a4 100644
--- a/docs/kcl/std-math-acos.md
+++ b/docs/kcl/functions/std-math-acos.md
@@ -9,7 +9,7 @@ Compute the arccosine of a number.
```kcl
-acos(@num: [number](/docs/kcl/types/number)(_)): [number](/docs/kcl/types/number)(rad)
+acos(@num: number(_)): number(rad)
```
diff --git a/docs/kcl/std-math-asin.md b/docs/kcl/functions/std-math-asin.md
similarity index 99%
rename from docs/kcl/std-math-asin.md
rename to docs/kcl/functions/std-math-asin.md
index c475f99a9..50d982300 100644
--- a/docs/kcl/std-math-asin.md
+++ b/docs/kcl/functions/std-math-asin.md
@@ -9,7 +9,7 @@ Compute the arcsine of a number.
```kcl
-asin(@num: [number](/docs/kcl/types/number)(_)): [number](/docs/kcl/types/number)(rad)
+asin(@num: number(_)): number(rad)
```
diff --git a/docs/kcl/std-math-atan.md b/docs/kcl/functions/std-math-atan.md
similarity index 87%
rename from docs/kcl/std-math-atan.md
rename to docs/kcl/functions/std-math-atan.md
index b3a873324..63d6a7bea 100644
--- a/docs/kcl/std-math-atan.md
+++ b/docs/kcl/functions/std-math-atan.md
@@ -9,7 +9,7 @@ Compute the arctangent of a number.
Consider using `atan2()` instead for the true inverse of tangent.
```kcl
-atan(@num: [number](/docs/kcl/types/number)(_)): [number](/docs/kcl/types/number)(rad)
+atan(@num: number(_)): number(rad)
```
diff --git a/docs/kcl/std-math-atan2.md b/docs/kcl/functions/std-math-atan2.md
similarity index 99%
rename from docs/kcl/std-math-atan2.md
rename to docs/kcl/functions/std-math-atan2.md
index 8df61ef69..30432058d 100644
--- a/docs/kcl/std-math-atan2.md
+++ b/docs/kcl/functions/std-math-atan2.md
@@ -10,9 +10,9 @@ Compute the four quadrant arctangent of Y and X.
```kcl
atan2(
- y: [number](/docs/kcl/types/number)(Length),
- x: [number](/docs/kcl/types/number)(Length),
-): [number](/docs/kcl/types/number)(rad)
+ y: number(Length),
+ x: number(Length),
+): number(rad)
```
diff --git a/docs/kcl/std-math-ceil.md b/docs/kcl/functions/std-math-ceil.md
similarity index 99%
rename from docs/kcl/std-math-ceil.md
rename to docs/kcl/functions/std-math-ceil.md
index 376b22b96..d5e0612b1 100644
--- a/docs/kcl/std-math-ceil.md
+++ b/docs/kcl/functions/std-math-ceil.md
@@ -9,7 +9,7 @@ Compute the smallest integer greater than or equal to a number.
```kcl
-ceil(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+ceil(@input: number): number
```
@@ -17,11 +17,11 @@ ceil(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-cos.md b/docs/kcl/functions/std-math-cos.md
similarity index 99%
rename from docs/kcl/std-math-cos.md
rename to docs/kcl/functions/std-math-cos.md
index d5d447067..92b39e469 100644
--- a/docs/kcl/std-math-cos.md
+++ b/docs/kcl/functions/std-math-cos.md
@@ -9,7 +9,7 @@ Compute the cosine of a number.
```kcl
-cos(@num: [number](/docs/kcl/types/number)(Angle)): [number](/docs/kcl/types/number)(_)
+cos(@num: number(Angle)): number(_)
```
diff --git a/docs/kcl/std-math-floor.md b/docs/kcl/functions/std-math-floor.md
similarity index 99%
rename from docs/kcl/std-math-floor.md
rename to docs/kcl/functions/std-math-floor.md
index 9c410ab66..6745622ac 100644
--- a/docs/kcl/std-math-floor.md
+++ b/docs/kcl/functions/std-math-floor.md
@@ -9,7 +9,7 @@ Compute the largest integer less than or equal to a number.
```kcl
-floor(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+floor(@input: number): number
```
@@ -17,11 +17,11 @@ floor(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-ln.md b/docs/kcl/functions/std-math-ln.md
similarity index 99%
rename from docs/kcl/std-math-ln.md
rename to docs/kcl/functions/std-math-ln.md
index a958f9cb6..bf5a20aaa 100644
--- a/docs/kcl/std-math-ln.md
+++ b/docs/kcl/functions/std-math-ln.md
@@ -9,7 +9,7 @@ Compute the natural logarithm of the number.
```kcl
-ln(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+ln(@input: number): number
```
@@ -17,11 +17,11 @@ ln(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-log.md b/docs/kcl/functions/std-math-log.md
similarity index 99%
rename from docs/kcl/std-math-log.md
rename to docs/kcl/functions/std-math-log.md
index c4492573c..46c25b1d4 100644
--- a/docs/kcl/std-math-log.md
+++ b/docs/kcl/functions/std-math-log.md
@@ -12,9 +12,9 @@ and `log10` can produce more accurate results for base 10.
```kcl
log(
- @input: [number](/docs/kcl/types/number),
- base: [number](/docs/kcl/types/number)(_),
-): [number](/docs/kcl/types/number)
+ @input: number,
+ base: number(_),
+): number
```
@@ -22,12 +22,12 @@ log(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | The number to compute the logarithm of. | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | The number to compute the logarithm of. | Yes |
| `base` | `number(_)` | The base of the logarithm. | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-log10.md b/docs/kcl/functions/std-math-log10.md
similarity index 99%
rename from docs/kcl/std-math-log10.md
rename to docs/kcl/functions/std-math-log10.md
index dba8b68c9..a7be136a2 100644
--- a/docs/kcl/std-math-log10.md
+++ b/docs/kcl/functions/std-math-log10.md
@@ -9,7 +9,7 @@ Compute the base 10 logarithm of the number.
```kcl
-log10(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+log10(@input: number): number
```
@@ -17,11 +17,11 @@ log10(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-log2.md b/docs/kcl/functions/std-math-log2.md
similarity index 99%
rename from docs/kcl/std-math-log2.md
rename to docs/kcl/functions/std-math-log2.md
index 474f3dd0f..c607e63cf 100644
--- a/docs/kcl/std-math-log2.md
+++ b/docs/kcl/functions/std-math-log2.md
@@ -9,7 +9,7 @@ Compute the base 2 logarithm of the number.
```kcl
-log2(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+log2(@input: number): number
```
@@ -17,11 +17,11 @@ log2(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-max.md b/docs/kcl/functions/std-math-max.md
similarity index 99%
rename from docs/kcl/std-math-max.md
rename to docs/kcl/functions/std-math-max.md
index 4ce618be6..891c68ec4 100644
--- a/docs/kcl/std-math-max.md
+++ b/docs/kcl/functions/std-math-max.md
@@ -9,7 +9,7 @@ Compute the maximum of the given arguments.
```kcl
-max(@input: [[number](/docs/kcl/types/number); 1+]): [number](/docs/kcl/types/number)
+max(@input: [number; 1+]): number
```
@@ -17,11 +17,11 @@ max(@input: [[number](/docs/kcl/types/number); 1+]): [number](/docs/kcl/types/nu
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | `[number; 1+]` | An array of numbers to compute the maximum of. | Yes |
+| `input` | [`[number; 1+]`](/docs/kcl/types/std-types-number) | An array of numbers to compute the maximum of. | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-min.md b/docs/kcl/functions/std-math-min.md
similarity index 99%
rename from docs/kcl/std-math-min.md
rename to docs/kcl/functions/std-math-min.md
index ecac801d0..05222ceb0 100644
--- a/docs/kcl/std-math-min.md
+++ b/docs/kcl/functions/std-math-min.md
@@ -9,7 +9,7 @@ Compute the minimum of the given arguments.
```kcl
-min(@input: [[number](/docs/kcl/types/number); 1+]): [number](/docs/kcl/types/number)
+min(@input: [number; 1+]): number
```
@@ -17,11 +17,11 @@ min(@input: [[number](/docs/kcl/types/number); 1+]): [number](/docs/kcl/types/nu
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | `[number; 1+]` | An array of numbers to compute the minimum of. | Yes |
+| `input` | [`[number; 1+]`](/docs/kcl/types/std-types-number) | An array of numbers to compute the minimum of. | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-polar.md b/docs/kcl/functions/std-math-polar.md
similarity index 99%
rename from docs/kcl/std-math-polar.md
rename to docs/kcl/functions/std-math-polar.md
index 8873e2b5f..190839a08 100644
--- a/docs/kcl/std-math-polar.md
+++ b/docs/kcl/functions/std-math-polar.md
@@ -11,9 +11,9 @@ cartesian (x/y/z grid) coordinates.
```kcl
polar(
- angle: [number](/docs/kcl/types/number)(rad),
- length: [number](/docs/kcl/types/number)(Length),
-): [Point2d](/docs/kcl/types/Point2d)
+ angle: number(rad),
+ length: number(Length),
+): Point2d
```
@@ -26,7 +26,7 @@ polar(
### Returns
-[`Point2d`](/docs/kcl/types/Point2d)
+[`Point2d`](/docs/kcl/types/std-types-Point2d)
### Examples
diff --git a/docs/kcl/std-math-pow.md b/docs/kcl/functions/std-math-pow.md
similarity index 99%
rename from docs/kcl/std-math-pow.md
rename to docs/kcl/functions/std-math-pow.md
index 5a06e0bca..165fef823 100644
--- a/docs/kcl/std-math-pow.md
+++ b/docs/kcl/functions/std-math-pow.md
@@ -10,9 +10,9 @@ Compute the number to a power.
```kcl
pow(
- @input: [number](/docs/kcl/types/number),
- exp: [number](/docs/kcl/types/number)(_),
-): [number](/docs/kcl/types/number)
+ @input: number,
+ exp: number(_),
+): number
```
@@ -20,12 +20,12 @@ pow(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | The number to raise. | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | The number to raise. | Yes |
| `exp` | `number(_)` | The power to raise to. | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-rem.md b/docs/kcl/functions/std-math-rem.md
similarity index 98%
rename from docs/kcl/std-math-rem.md
rename to docs/kcl/functions/std-math-rem.md
index 95667f036..aa1a5ad2f 100644
--- a/docs/kcl/std-math-rem.md
+++ b/docs/kcl/functions/std-math-rem.md
@@ -11,9 +11,9 @@ If `num` is negative, the result will be too.
```kcl
rem(
- @num: [number](/docs/kcl/types/number),
- divisor: [number](/docs/kcl/types/number),
-): [number](/docs/kcl/types/number)
+ @num: number,
+ divisor: number,
+): number
```
@@ -21,12 +21,12 @@ rem(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `num` | [`number`](/docs/kcl/types/number) | The number which will be divided by `divisor`. | Yes |
-| `divisor` | [`number`](/docs/kcl/types/number) | The number which will divide `num`. | Yes |
+| `num` | [`number`](/docs/kcl/types/std-types-number) | The number which will be divided by `divisor`. | Yes |
+| `divisor` | [`number`](/docs/kcl/types/std-types-number) | The number which will divide `num`. | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-round.md b/docs/kcl/functions/std-math-round.md
similarity index 99%
rename from docs/kcl/std-math-round.md
rename to docs/kcl/functions/std-math-round.md
index 0bb9ed4de..9d643595b 100644
--- a/docs/kcl/std-math-round.md
+++ b/docs/kcl/functions/std-math-round.md
@@ -9,7 +9,7 @@ Round a number to the nearest integer.
```kcl
-round(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+round(@input: number): number
```
@@ -17,11 +17,11 @@ round(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-sin.md b/docs/kcl/functions/std-math-sin.md
similarity index 99%
rename from docs/kcl/std-math-sin.md
rename to docs/kcl/functions/std-math-sin.md
index 965ff8ebd..b325aedd8 100644
--- a/docs/kcl/std-math-sin.md
+++ b/docs/kcl/functions/std-math-sin.md
@@ -9,7 +9,7 @@ Compute the sine of a number.
```kcl
-sin(@num: [number](/docs/kcl/types/number)(Angle)): [number](/docs/kcl/types/number)(_)
+sin(@num: number(Angle)): number(_)
```
diff --git a/docs/kcl/std-math-sqrt.md b/docs/kcl/functions/std-math-sqrt.md
similarity index 99%
rename from docs/kcl/std-math-sqrt.md
rename to docs/kcl/functions/std-math-sqrt.md
index 2b07cc97a..945a7689f 100644
--- a/docs/kcl/std-math-sqrt.md
+++ b/docs/kcl/functions/std-math-sqrt.md
@@ -9,7 +9,7 @@ Compute the square root of a number.
```kcl
-sqrt(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
+sqrt(@input: number): number
```
@@ -17,11 +17,11 @@ sqrt(@input: [number](/docs/kcl/types/number)): [number](/docs/kcl/types/number)
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `input` | [`number`](/docs/kcl/types/number) | | Yes |
+| `input` | [`number`](/docs/kcl/types/std-types-number) | | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/std-math-tan.md b/docs/kcl/functions/std-math-tan.md
similarity index 99%
rename from docs/kcl/std-math-tan.md
rename to docs/kcl/functions/std-math-tan.md
index 22ceb195b..034c58c0f 100644
--- a/docs/kcl/std-math-tan.md
+++ b/docs/kcl/functions/std-math-tan.md
@@ -9,7 +9,7 @@ Compute the tangent of a number.
```kcl
-tan(@num: [number](/docs/kcl/types/number)(Angle)): [number](/docs/kcl/types/number)(_)
+tan(@num: number(Angle)): number(_)
```
diff --git a/docs/kcl/std-offsetPlane.md b/docs/kcl/functions/std-offsetPlane.md
similarity index 99%
rename from docs/kcl/std-offsetPlane.md
rename to docs/kcl/functions/std-offsetPlane.md
index 5d26f6d3f..40b4fda23 100644
--- a/docs/kcl/std-offsetPlane.md
+++ b/docs/kcl/functions/std-offsetPlane.md
@@ -10,10 +10,10 @@ For example, if you offset the `XZ` plane by 10, the new plane will be parallel
plane and 10 units away from it.
```kcl
-offset[Plane](/docs/kcl/types/Plane)(
- @plane: [Plane](/docs/kcl/types/Plane),
- offset: [number](/docs/kcl/types/number)(Length),
-): [Plane](/docs/kcl/types/Plane)
+offsetPlane(
+ @plane: Plane,
+ offset: number(Length),
+): Plane
```
@@ -21,12 +21,12 @@ offset[Plane](/docs/kcl/types/Plane)(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `plane` | [`Plane`](/docs/kcl/types/Plane) | The plane (e.g. `XY`) which this new plane is created from. | Yes |
+| `plane` | [`Plane`](/docs/kcl/types/std-types-Plane) | The plane (e.g. `XY`) which this new plane is created from. | Yes |
| `offset` | `number(Length)` | Distance from the standard plane this new plane will be created at. | Yes |
### Returns
-[`Plane`](/docs/kcl/types/Plane)
+[`Plane`](/docs/kcl/types/std-types-Plane)
### Examples
diff --git a/docs/kcl/std-revolve.md b/docs/kcl/functions/std-revolve.md
similarity index 99%
rename from docs/kcl/std-revolve.md
rename to docs/kcl/functions/std-revolve.md
index f59bf77c1..53990f087 100644
--- a/docs/kcl/std-revolve.md
+++ b/docs/kcl/functions/std-revolve.md
@@ -19,15 +19,15 @@ revolved around the same axis.
```kcl
revolve(
- @sketches: [[Sketch](/docs/kcl/types/Sketch); 1+],
- axis: [Axis2d](/docs/kcl/types/Axis2d) | [Edge](/docs/kcl/types/Edge),
- angle?: [number](/docs/kcl/types/number)(Angle),
- tolerance?: [number](/docs/kcl/types/number)(Length),
- symmetric?: [bool](/docs/kcl/types/bool),
- bidirectionalAngle?: [number](/docs/kcl/types/number)(Angle),
+ @sketches: [Sketch; 1+],
+ axis: Axis2d | Edge,
+ angle?: number(Angle),
+ tolerance?: number(Length),
+ symmetric?: bool,
+ bidirectionalAngle?: number(Angle),
tagStart?: tag,
tagEnd?: tag,
-): [Solid](/docs/kcl/types/Solid)
+): Solid
```
@@ -35,18 +35,18 @@ revolve(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | `[Sketch; 1+]` | The sketch or set of sketches that should be revolved | Yes |
-| `axis` | [`Axis2d`](/docs/kcl/types/Axis2d) or [`Edge`](/docs/kcl/types/Edge) | Axis of revolution. | Yes |
+| `sketches` | [`[Sketch; 1+]`](/docs/kcl/types/std-types-Sketch) | The sketch or set of sketches that should be revolved | Yes |
+| `axis` | [`Axis2d`](/docs/kcl/types/std-types-Axis2d) or [`Edge`](/docs/kcl/types/std-types-Edge) | Axis of revolution. | Yes |
| `angle` | `number(Angle)` | Angle to revolve (in degrees). Default is 360. | No |
| `tolerance` | `number(Length)` | Tolerance for the revolve operation. | No |
-| `symmetric` | [`bool`](/docs/kcl/types/bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. | No |
+| `symmetric` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. | No |
| `bidirectionalAngle` | `number(Angle)` | If specified, will also revolve in the opposite direction to 'angle' to the specified angle. If 'symmetric' is true, this value is ignored. | No |
-| `tagStart` | `tag` | A named tag for the face at the start of the revolve, i.e. the original sketch. | No |
-| `tagEnd` | `tag` | A named tag for the face at the end of the revolve. | No |
+| `tagStart` | [`tag`](/docs/kcl/types/std-types-tag) | A named tag for the face at the start of the revolve, i.e. the original sketch. | No |
+| `tagEnd` | [`tag`](/docs/kcl/types/std-types-tag) | A named tag for the face at the end of the revolve. | No |
### Returns
-[`Solid`](/docs/kcl/types/Solid)
+[`Solid`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/std-sketch-circle.md b/docs/kcl/functions/std-sketch-circle.md
similarity index 99%
rename from docs/kcl/std-sketch-circle.md
rename to docs/kcl/functions/std-sketch-circle.md
index 288158cc9..3b62f4f2f 100644
--- a/docs/kcl/std-sketch-circle.md
+++ b/docs/kcl/functions/std-sketch-circle.md
@@ -11,11 +11,11 @@ the provided (x, y) origin point.
```kcl
circle(
- @sketch_or_surface: [Sketch](/docs/kcl/types/Sketch) | [Plane](/docs/kcl/types/Plane) | [Face](/docs/kcl/types/Face),
- center: [Point2d](/docs/kcl/types/Point2d),
- radius: [number](/docs/kcl/types/number)(Length),
+ @sketch_or_surface: Sketch | Plane | Face,
+ center: Point2d,
+ radius: number(Length),
tag?: tag,
-): [Sketch](/docs/kcl/types/Sketch)
+): Sketch
```
@@ -23,14 +23,14 @@ circle(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch_or_surface` | [`Sketch`](/docs/kcl/types/Sketch) or [`Plane`](/docs/kcl/types/Plane) or [`Face`](/docs/kcl/types/Face) | Sketch to extend, or plane or surface to sketch on. | Yes |
-| `center` | [`Point2d`](/docs/kcl/types/Point2d) | The center of the circle. | Yes |
+| `sketch_or_surface` | [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`Plane`](/docs/kcl/types/std-types-Plane) or [`Face`](/docs/kcl/types/std-types-Face) | Sketch to extend, or plane or surface to sketch on. | Yes |
+| `center` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | The center of the circle. | Yes |
| `radius` | `number(Length)` | The radius of the circle. | Yes |
-| `tag` | `tag` | Create a new tag which refers to this circle. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`tag`](/docs/kcl/types/std-types-tag) | Create a new tag which refers to this circle. | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/std-sketch-mirror2d.md b/docs/kcl/functions/std-sketch-mirror2d.md
similarity index 99%
rename from docs/kcl/std-sketch-mirror2d.md
rename to docs/kcl/functions/std-sketch-mirror2d.md
index 53ea5ed58..fa4b9e23a 100644
--- a/docs/kcl/std-sketch-mirror2d.md
+++ b/docs/kcl/functions/std-sketch-mirror2d.md
@@ -12,9 +12,9 @@ Mirror occurs around a local sketch axis rather than a global axis.
```kcl
mirror2d(
- @sketches: [[Sketch](/docs/kcl/types/Sketch); 1+],
- axis: [Axis2d](/docs/kcl/types/Axis2d) | [Edge](/docs/kcl/types/Edge),
-): [Sketch](/docs/kcl/types/Sketch)
+ @sketches: [Sketch; 1+],
+ axis: Axis2d | Edge,
+): Sketch
```
@@ -22,12 +22,12 @@ mirror2d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | `[Sketch; 1+]` | The sketch or sketches to be reflected. | Yes |
-| `axis` | [`Axis2d`](/docs/kcl/types/Axis2d) or [`Edge`](/docs/kcl/types/Edge) | The axis to reflect around. | Yes |
+| `sketches` | [`[Sketch; 1+]`](/docs/kcl/types/std-types-Sketch) | The sketch or sketches to be reflected. | Yes |
+| `axis` | [`Axis2d`](/docs/kcl/types/std-types-Axis2d) or [`Edge`](/docs/kcl/types/std-types-Edge) | The axis to reflect around. | Yes |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/std-solid-chamfer.md b/docs/kcl/functions/std-solid-chamfer.md
similarity index 99%
rename from docs/kcl/std-solid-chamfer.md
rename to docs/kcl/functions/std-solid-chamfer.md
index 2c9fbf23f..087d3ae4e 100644
--- a/docs/kcl/std-solid-chamfer.md
+++ b/docs/kcl/functions/std-solid-chamfer.md
@@ -12,11 +12,11 @@ a sharp, straight transitional edge.
```kcl
chamfer(
- @solid: [Solid](/docs/kcl/types/Solid),
- length: [number](/docs/kcl/types/number)(Length),
- tags: [[Edge](/docs/kcl/types/Edge); 1+],
+ @solid: Solid,
+ length: number(Length),
+ tags: [Edge; 1+],
tag?: tag,
-): [Solid](/docs/kcl/types/Solid)
+): Solid
```
@@ -24,14 +24,14 @@ chamfer(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solid` | [`Solid`](/docs/kcl/types/Solid) | The solid whose edges should be chamfered | Yes |
+| `solid` | [`Solid`](/docs/kcl/types/std-types-Solid) | The solid whose edges should be chamfered | Yes |
| `length` | `number(Length)` | The length of the chamfer | Yes |
-| `tags` | `[Edge; 1+]` | The paths you want to chamfer | Yes |
-| `tag` | `tag` | Create a new tag which refers to this chamfer | No |
+| `tags` | [`[Edge; 1+]`](/docs/kcl/types/std-types-Edge) | The paths you want to chamfer | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`tag`](/docs/kcl/types/std-types-tag) | Create a new tag which refers to this chamfer | No |
### Returns
-[`Solid`](/docs/kcl/types/Solid)
+[`Solid`](/docs/kcl/types/std-types-Solid)
### Examples
@@ -76,7 +76,7 @@ sg = startSketchOn(XY)
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close(tag = $line1)
|> extrude(length = 20)
// We tag the chamfer to reference it later.
diff --git a/docs/kcl/std-solid-fillet.md b/docs/kcl/functions/std-solid-fillet.md
similarity index 99%
rename from docs/kcl/std-solid-fillet.md
rename to docs/kcl/functions/std-solid-fillet.md
index c7c67a103..bfa7bb36d 100644
--- a/docs/kcl/std-solid-fillet.md
+++ b/docs/kcl/functions/std-solid-fillet.md
@@ -12,12 +12,12 @@ will smoothly blend the transition.
```kcl
fillet(
- @solid: [Solid](/docs/kcl/types/Solid),
- radius: [number](/docs/kcl/types/number)(Length),
- tags: [[Edge](/docs/kcl/types/Edge); 1+],
- tolerance?: [number](/docs/kcl/types/number)(Length),
+ @solid: Solid,
+ radius: number(Length),
+ tags: [Edge; 1+],
+ tolerance?: number(Length),
tag?: tag,
-): [Solid](/docs/kcl/types/Solid)
+): Solid
```
@@ -25,15 +25,15 @@ fillet(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solid` | [`Solid`](/docs/kcl/types/Solid) | The solid whose edges should be filletted | Yes |
+| `solid` | [`Solid`](/docs/kcl/types/std-types-Solid) | The solid whose edges should be filletted | Yes |
| `radius` | `number(Length)` | The radius of the fillet | Yes |
-| `tags` | `[Edge; 1+]` | The paths you want to fillet | Yes |
+| `tags` | [`[Edge; 1+]`](/docs/kcl/types/std-types-Edge) | The paths you want to fillet | Yes |
| `tolerance` | `number(Length)` | The tolerance for this fillet | No |
-| `tag` | `tag` | Create a new tag which refers to this fillet | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`tag`](/docs/kcl/types/std-types-tag) | Create a new tag which refers to this fillet | No |
### Returns
-[`Solid`](/docs/kcl/types/Solid)
+[`Solid`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/std-solid-hollow.md b/docs/kcl/functions/std-solid-hollow.md
similarity index 99%
rename from docs/kcl/std-solid-hollow.md
rename to docs/kcl/functions/std-solid-hollow.md
index dfc41a983..bcaba01aa 100644
--- a/docs/kcl/std-solid-hollow.md
+++ b/docs/kcl/functions/std-solid-hollow.md
@@ -11,9 +11,9 @@ provided thickness remains around the exterior of the shape.
```kcl
hollow(
- @solid: [Solid](/docs/kcl/types/Solid),
- thickness: [number](/docs/kcl/types/number)(Length),
-): [Solid](/docs/kcl/types/Solid)
+ @solid: Solid,
+ thickness: number(Length),
+): Solid
```
@@ -21,12 +21,12 @@ hollow(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solid` | [`Solid`](/docs/kcl/types/Solid) | Which solid to hollow out | Yes |
+| `solid` | [`Solid`](/docs/kcl/types/std-types-Solid) | Which solid to hollow out | Yes |
| `thickness` | `number(Length)` | The thickness of the remaining shell | Yes |
### Returns
-[`Solid`](/docs/kcl/types/Solid)
+[`Solid`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/std-solid-shell.md b/docs/kcl/functions/std-solid-shell.md
similarity index 99%
rename from docs/kcl/std-solid-shell.md
rename to docs/kcl/functions/std-solid-shell.md
index 38a28970a..2f119ced7 100644
--- a/docs/kcl/std-solid-shell.md
+++ b/docs/kcl/functions/std-solid-shell.md
@@ -11,10 +11,10 @@ provided thickness remains, taking volume starting at the providedface, leaving
```kcl
shell(
- @solids: [[Solid](/docs/kcl/types/Solid); 1+],
- thickness: [number](/docs/kcl/types/number)(Length),
+ @solids: [Solid; 1+],
+ thickness: number(Length),
faces: [tag; 1+],
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+): [Solid]
```
@@ -22,13 +22,13 @@ shell(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | `[Solid; 1+]` | Which solid (or solids) to shell out | Yes |
+| `solids` | [`[Solid; 1+]`](/docs/kcl/types/std-types-Solid) | Which solid (or solids) to shell out | Yes |
| `thickness` | `number(Length)` | The thickness of the shell | Yes |
-| `faces` | `[tag; 1+]` | The faces you want removed | Yes |
+| `faces` | [`[tag; 1+]`](/docs/kcl/types/std-types-tag) | The faces you want removed | Yes |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/std-units-toCentimeters.md b/docs/kcl/functions/std-units-toCentimeters.md
similarity index 77%
rename from docs/kcl/std-units-toCentimeters.md
rename to docs/kcl/functions/std-units-toCentimeters.md
index ace5545d1..91b4ee4bd 100644
--- a/docs/kcl/std-units-toCentimeters.md
+++ b/docs/kcl/functions/std-units-toCentimeters.md
@@ -9,7 +9,7 @@ Convert a number to centimeters from its current units.
```kcl
-units::toCentimeters(@num: [number](/docs/kcl/types/number)(cm)): [number](/docs/kcl/types/number)(cm)
+units::toCentimeters(@num: number(cm)): number(cm)
```
diff --git a/docs/kcl/std-units-toDegrees.md b/docs/kcl/functions/std-units-toDegrees.md
similarity index 99%
rename from docs/kcl/std-units-toDegrees.md
rename to docs/kcl/functions/std-units-toDegrees.md
index f933d817f..269f2ee83 100644
--- a/docs/kcl/std-units-toDegrees.md
+++ b/docs/kcl/functions/std-units-toDegrees.md
@@ -9,7 +9,7 @@ Converts a number to degrees from its current units.
```kcl
-units::toDegrees(@num: [number](/docs/kcl/types/number)(deg)): [number](/docs/kcl/types/number)(deg)
+units::toDegrees(@num: number(deg)): number(deg)
```
diff --git a/docs/kcl/std-units-toFeet.md b/docs/kcl/functions/std-units-toFeet.md
similarity index 78%
rename from docs/kcl/std-units-toFeet.md
rename to docs/kcl/functions/std-units-toFeet.md
index e641eb290..389efa16d 100644
--- a/docs/kcl/std-units-toFeet.md
+++ b/docs/kcl/functions/std-units-toFeet.md
@@ -9,7 +9,7 @@ Convert a number to feet from its current units.
```kcl
-units::toFeet(@num: [number](/docs/kcl/types/number)(ft)): [number](/docs/kcl/types/number)(ft)
+units::toFeet(@num: number(ft)): number(ft)
```
diff --git a/docs/kcl/std-units-toInches.md b/docs/kcl/functions/std-units-toInches.md
similarity index 78%
rename from docs/kcl/std-units-toInches.md
rename to docs/kcl/functions/std-units-toInches.md
index 4b5e96720..c38ed2379 100644
--- a/docs/kcl/std-units-toInches.md
+++ b/docs/kcl/functions/std-units-toInches.md
@@ -9,7 +9,7 @@ Convert a number to inches from its current units.
```kcl
-units::toInches(@num: [number](/docs/kcl/types/number)(in)): [number](/docs/kcl/types/number)(in)
+units::toInches(@num: number(in)): number(in)
```
diff --git a/docs/kcl/std-units-toMeters.md b/docs/kcl/functions/std-units-toMeters.md
similarity index 78%
rename from docs/kcl/std-units-toMeters.md
rename to docs/kcl/functions/std-units-toMeters.md
index e8b059b99..d9e214e67 100644
--- a/docs/kcl/std-units-toMeters.md
+++ b/docs/kcl/functions/std-units-toMeters.md
@@ -9,7 +9,7 @@ Convert a number to meters from its current units.
```kcl
-units::toMeters(@num: [number](/docs/kcl/types/number)(m)): [number](/docs/kcl/types/number)(m)
+units::toMeters(@num: number(m)): number(m)
```
diff --git a/docs/kcl/std-units-toMillimeters.md b/docs/kcl/functions/std-units-toMillimeters.md
similarity index 77%
rename from docs/kcl/std-units-toMillimeters.md
rename to docs/kcl/functions/std-units-toMillimeters.md
index 1a485b2b5..dafde0542 100644
--- a/docs/kcl/std-units-toMillimeters.md
+++ b/docs/kcl/functions/std-units-toMillimeters.md
@@ -9,7 +9,7 @@ Convert a number to millimeters from its current units.
```kcl
-units::toMillimeters(@num: [number](/docs/kcl/types/number)(mm)): [number](/docs/kcl/types/number)(mm)
+units::toMillimeters(@num: number(mm)): number(mm)
```
diff --git a/docs/kcl/std-units-toRadians.md b/docs/kcl/functions/std-units-toRadians.md
similarity index 99%
rename from docs/kcl/std-units-toRadians.md
rename to docs/kcl/functions/std-units-toRadians.md
index 6857f4bd7..4fd89d332 100644
--- a/docs/kcl/std-units-toRadians.md
+++ b/docs/kcl/functions/std-units-toRadians.md
@@ -9,7 +9,7 @@ Converts a number to radians from its current units.
```kcl
-units::toRadians(@num: [number](/docs/kcl/types/number)(rad)): [number](/docs/kcl/types/number)(rad)
+units::toRadians(@num: number(rad)): number(rad)
```
diff --git a/docs/kcl/std-units-toYards.md b/docs/kcl/functions/std-units-toYards.md
similarity index 78%
rename from docs/kcl/std-units-toYards.md
rename to docs/kcl/functions/std-units-toYards.md
index 26de1bbfc..52293f421 100644
--- a/docs/kcl/std-units-toYards.md
+++ b/docs/kcl/functions/std-units-toYards.md
@@ -9,7 +9,7 @@ Converts a number to yards from its current units.
```kcl
-units::toYards(@num: [number](/docs/kcl/types/number)(yd)): [number](/docs/kcl/types/number)(yd)
+units::toYards(@num: number(yd)): number(yd)
```
diff --git a/docs/kcl/getCommonEdge.md b/docs/kcl/getCommonEdge.md
index e3e4ec748..32b65ab72 100644
--- a/docs/kcl/getCommonEdge.md
+++ b/docs/kcl/getCommonEdge.md
@@ -9,7 +9,7 @@ Get the shared edge between two faces.
```kcl
-getCommon[Edge](/docs/kcl/types/Edge)(faces: [[TagIdentifier](/docs/kcl/types#tag-identifier)]): Uuid
+getCommonEdge(faces: [TagIdentifier]): Uuid
```
@@ -17,7 +17,7 @@ getCommon[Edge](/docs/kcl/types/Edge)(faces: [[TagIdentifier](/docs/kcl/types#ta
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `faces` | `[TagIdentifier]` | The tags of the faces you want to find the common edge between | Yes |
+| `faces` | [`[TagIdentifier]`](/docs/kcl/types#TagIdentifier) | The tags of the faces you want to find the common edge between | Yes |
### Returns
diff --git a/docs/kcl/getNextAdjacentEdge.md b/docs/kcl/getNextAdjacentEdge.md
index efb08372b..1619bde57 100644
--- a/docs/kcl/getNextAdjacentEdge.md
+++ b/docs/kcl/getNextAdjacentEdge.md
@@ -9,7 +9,7 @@ Get the next adjacent edge to the edge given.
```kcl
-getNextAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
+getNextAdjacentEdge(edge: TagIdentifier): Uuid
```
@@ -17,7 +17,7 @@ getNextAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/type
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `edge` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The tag of the edge you want to find the next adjacent edge of. | Yes |
+| `edge` | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The tag of the edge you want to find the next adjacent edge of. | Yes |
### Returns
diff --git a/docs/kcl/getOppositeEdge.md b/docs/kcl/getOppositeEdge.md
index 5503c82fa..430e56cd8 100644
--- a/docs/kcl/getOppositeEdge.md
+++ b/docs/kcl/getOppositeEdge.md
@@ -9,7 +9,7 @@ Get the opposite edge to the edge given.
```kcl
-getOpposite[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
+getOppositeEdge(edge: TagIdentifier): Uuid
```
@@ -17,7 +17,7 @@ getOpposite[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#ta
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `edge` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The tag of the edge you want to find the opposite edge of. | Yes |
+| `edge` | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The tag of the edge you want to find the opposite edge of. | Yes |
### Returns
diff --git a/docs/kcl/getPreviousAdjacentEdge.md b/docs/kcl/getPreviousAdjacentEdge.md
index 07f7dca58..75fe03a09 100644
--- a/docs/kcl/getPreviousAdjacentEdge.md
+++ b/docs/kcl/getPreviousAdjacentEdge.md
@@ -9,7 +9,7 @@ Get the previous adjacent edge to the edge given.
```kcl
-getPreviousAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/types#tag-identifier)): Uuid
+getPreviousAdjacentEdge(edge: TagIdentifier): Uuid
```
@@ -17,7 +17,7 @@ getPreviousAdjacent[Edge](/docs/kcl/types/Edge)(edge: [TagIdentifier](/docs/kcl/
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `edge` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The tag of the edge you want to find the previous adjacent edge of. | Yes |
+| `edge` | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The tag of the edge you want to find the previous adjacent edge of. | Yes |
### Returns
diff --git a/docs/kcl/index.md b/docs/kcl/index.md
index 2ad34ff11..59ae2a4a2 100644
--- a/docs/kcl/index.md
+++ b/docs/kcl/index.md
@@ -12,24 +12,10 @@ layout: manual
* [`Modules`](kcl/modules)
* [`Settings`](kcl/settings)
* [`Known Issues`](kcl/known-issues)
-* [`Constants`](kcl/consts)
-### Standard library
+### Functions
-* **Primitive types**
- * [`bool`](kcl/types/bool)
- * [`number`](kcl/types/number)
- * [`string`](kcl/types/string)
- * [`tag`](kcl/types/tag)
* **std**
- * [`END`](kcl/consts/std-END)
- * [`START`](kcl/consts/std-START)
- * [`X`](kcl/consts/std-X)
- * [`XY`](kcl/consts/std-XY)
- * [`XZ`](kcl/consts/std-XZ)
- * [`Y`](kcl/consts/std-Y)
- * [`YZ`](kcl/consts/std-YZ)
- * [`Z`](kcl/consts/std-Z)
* [`angledLine`](kcl/angledLine)
* [`angledLineThatIntersects`](kcl/angledLineThatIntersects)
* [`appearance`](kcl/appearance)
@@ -45,7 +31,7 @@ layout: manual
* [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge)
* [`getOppositeEdge`](kcl/getOppositeEdge)
* [`getPreviousAdjacentEdge`](kcl/getPreviousAdjacentEdge)
- * [`helix`](kcl/std-helix)
+ * [`helix`](kcl/functions/std-helix)
* [`intersect`](kcl/intersect)
* [`involuteCircular`](kcl/involuteCircular)
* [`lastSegX`](kcl/lastSegX)
@@ -56,7 +42,7 @@ layout: manual
* [`line`](kcl/line)
* [`loft`](kcl/loft)
* [`map`](kcl/map)
- * [`offsetPlane`](kcl/std-offsetPlane)
+ * [`offsetPlane`](kcl/functions/std-offsetPlane)
* [`patternCircular2d`](kcl/patternCircular2d)
* [`patternCircular3d`](kcl/patternCircular3d)
* [`patternLinear2d`](kcl/patternLinear2d)
@@ -70,7 +56,7 @@ layout: manual
* [`profileStartY`](kcl/profileStartY)
* [`push`](kcl/push)
* [`reduce`](kcl/reduce)
- * [`revolve`](kcl/std-revolve)
+ * [`revolve`](kcl/functions/std-revolve)
* [`rotate`](kcl/rotate)
* [`scale`](kcl/scale)
* [`segAng`](kcl/segAng)
@@ -92,61 +78,90 @@ layout: manual
* [`union`](kcl/union)
* [`xLine`](kcl/xLine)
* [`yLine`](kcl/yLine)
+* **std::math**
+ * [`abs`](kcl/functions/std-math-abs)
+ * [`acos`](kcl/functions/std-math-acos)
+ * [`asin`](kcl/functions/std-math-asin)
+ * [`atan`](kcl/functions/std-math-atan)
+ * [`atan2`](kcl/functions/std-math-atan2)
+ * [`ceil`](kcl/functions/std-math-ceil)
+ * [`cos`](kcl/functions/std-math-cos)
+ * [`floor`](kcl/functions/std-math-floor)
+ * [`ln`](kcl/functions/std-math-ln)
+ * [`log`](kcl/functions/std-math-log)
+ * [`log10`](kcl/functions/std-math-log10)
+ * [`log2`](kcl/functions/std-math-log2)
+ * [`max`](kcl/functions/std-math-max)
+ * [`min`](kcl/functions/std-math-min)
+ * [`polar`](kcl/functions/std-math-polar)
+ * [`pow`](kcl/functions/std-math-pow)
+ * [`rem`](kcl/functions/std-math-rem)
+ * [`round`](kcl/functions/std-math-round)
+ * [`sin`](kcl/functions/std-math-sin)
+ * [`sqrt`](kcl/functions/std-math-sqrt)
+ * [`tan`](kcl/functions/std-math-tan)
+* **std::sketch**
+ * [`circle`](kcl/functions/std-sketch-circle)
+ * [`mirror2d`](kcl/functions/std-sketch-mirror2d)
+* **std::solid**
+ * [`chamfer`](kcl/functions/std-solid-chamfer)
+ * [`fillet`](kcl/functions/std-solid-fillet)
+ * [`hollow`](kcl/functions/std-solid-hollow)
+ * [`shell`](kcl/functions/std-solid-shell)
+* **std::units**
+ * [`units::toCentimeters`](kcl/functions/std-units-toCentimeters)
+ * [`units::toDegrees`](kcl/functions/std-units-toDegrees)
+ * [`units::toFeet`](kcl/functions/std-units-toFeet)
+ * [`units::toInches`](kcl/functions/std-units-toInches)
+ * [`units::toMeters`](kcl/functions/std-units-toMeters)
+ * [`units::toMillimeters`](kcl/functions/std-units-toMillimeters)
+ * [`units::toRadians`](kcl/functions/std-units-toRadians)
+ * [`units::toYards`](kcl/functions/std-units-toYards)
+
+### Constants
+
+* **std**
+ * [`END`](kcl/consts/std-END)
+ * [`START`](kcl/consts/std-START)
+ * [`X`](kcl/consts/std-X)
+ * [`XY`](kcl/consts/std-XY)
+ * [`XZ`](kcl/consts/std-XZ)
+ * [`Y`](kcl/consts/std-Y)
+ * [`YZ`](kcl/consts/std-YZ)
+ * [`Z`](kcl/consts/std-Z)
* **std::math**
* [`E`](kcl/consts/std-math-E)
* [`PI`](kcl/consts/std-math-PI)
* [`TAU`](kcl/consts/std-math-TAU)
- * [`abs`](kcl/std-math-abs)
- * [`acos`](kcl/std-math-acos)
- * [`asin`](kcl/std-math-asin)
- * [`atan`](kcl/std-math-atan)
- * [`atan2`](kcl/std-math-atan2)
- * [`ceil`](kcl/std-math-ceil)
- * [`cos`](kcl/std-math-cos)
- * [`floor`](kcl/std-math-floor)
- * [`ln`](kcl/std-math-ln)
- * [`log`](kcl/std-math-log)
- * [`log10`](kcl/std-math-log10)
- * [`log2`](kcl/std-math-log2)
- * [`max`](kcl/std-math-max)
- * [`min`](kcl/std-math-min)
- * [`polar`](kcl/std-math-polar)
- * [`pow`](kcl/std-math-pow)
- * [`rem`](kcl/std-math-rem)
- * [`round`](kcl/std-math-round)
- * [`sin`](kcl/std-math-sin)
- * [`sqrt`](kcl/std-math-sqrt)
- * [`tan`](kcl/std-math-tan)
-* **std::sketch**
- * [`circle`](kcl/std-sketch-circle)
- * [`mirror2d`](kcl/std-sketch-mirror2d)
-* **std::solid**
- * [`chamfer`](kcl/std-solid-chamfer)
- * [`fillet`](kcl/std-solid-fillet)
- * [`hollow`](kcl/std-solid-hollow)
- * [`shell`](kcl/std-solid-shell)
* **std::turns**
* [`turns::HALF_TURN`](kcl/consts/std-turns-HALF_TURN)
* [`turns::QUARTER_TURN`](kcl/consts/std-turns-QUARTER_TURN)
* [`turns::THREE_QUARTER_TURN`](kcl/consts/std-turns-THREE_QUARTER_TURN)
* [`turns::ZERO`](kcl/consts/std-turns-ZERO)
+
+### Types
+
+See also the [types overview](types)
+
+* **Primitive types**
+ * [`End`](kcl/types.md#End)
+ * [`ImportedGeometry`](kcl/types.md#ImportedGeometry)
+ * [`Start`](kcl/types.md#Start)
+ * [`TagDeclarator`](kcl/types.md#TagDeclarator)
+ * [`TagIdentifier`](kcl/types.md#TagIdentifier)
+ * [`any`](kcl/types/std-types-any)
+ * [`bool`](kcl/types/std-types-bool)
+ * [`number`](kcl/types/std-types-number)
+ * [`string`](kcl/types/std-types-string)
+ * [`tag`](kcl/types/std-types-tag)
* **std::types**
- * [`Axis2d`](kcl/types/Axis2d)
- * [`Axis3d`](kcl/types/Axis3d)
- * [`Edge`](kcl/types/Edge)
- * [`Face`](kcl/types/Face)
- * [`Helix`](kcl/types/Helix)
- * [`Plane`](kcl/types/Plane)
- * [`Point2d`](kcl/types/Point2d)
- * [`Point3d`](kcl/types/Point3d)
- * [`Sketch`](kcl/types/Sketch)
- * [`Solid`](kcl/types/Solid)
-* **std::units**
- * [`units::toCentimeters`](kcl/std-units-toCentimeters)
- * [`units::toDegrees`](kcl/std-units-toDegrees)
- * [`units::toFeet`](kcl/std-units-toFeet)
- * [`units::toInches`](kcl/std-units-toInches)
- * [`units::toMeters`](kcl/std-units-toMeters)
- * [`units::toMillimeters`](kcl/std-units-toMillimeters)
- * [`units::toRadians`](kcl/std-units-toRadians)
- * [`units::toYards`](kcl/std-units-toYards)
+ * [`Axis2d`](kcl/types/std-types-Axis2d)
+ * [`Axis3d`](kcl/types/std-types-Axis3d)
+ * [`Edge`](kcl/types/std-types-Edge)
+ * [`Face`](kcl/types/std-types-Face)
+ * [`Helix`](kcl/types/std-types-Helix)
+ * [`Plane`](kcl/types/std-types-Plane)
+ * [`Point2d`](kcl/types/std-types-Point2d)
+ * [`Point3d`](kcl/types/std-types-Point3d)
+ * [`Sketch`](kcl/types/std-types-Sketch)
+ * [`Solid`](kcl/types/std-types-Solid)
diff --git a/docs/kcl/int.md b/docs/kcl/int.md
deleted file mode 100644
index 1ff85f72b..000000000
--- a/docs/kcl/int.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: "int"
-excerpt: "Convert a number to an integer."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Convert a number to an integer.
-
-DEPRECATED use floor(), ceil(), or round().
-
-```js
-int(num: number): number
-```
-
-### Tags
-
-* `convert`
-
-
-### Arguments
-
-| Name | Type | Description | Required |
-|----------|------|-------------|----------|
-| `num` | [`number`](/docs/kcl/types/number) | | Yes |
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-n = int(ceil(5 / 2))
-assert(n, isEqualTo = 3, error = "5/2 = 2.5, rounded up makes 3")
-// Draw n cylinders.
-startSketchOn(XZ)
- |> circle(center = [0, 0], radius = 2)
- |> extrude(length = 5)
- |> patternTransform(
- instances = n,
- transform = fn(id) {
- return { translate = [4 * id, 0, 0] }
- },
- )
-```
-
-
-
-
diff --git a/docs/kcl/intersect.md b/docs/kcl/intersect.md
index 91911bbc0..22da99281 100644
--- a/docs/kcl/intersect.md
+++ b/docs/kcl/intersect.md
@@ -10,9 +10,9 @@ Intersect computes the geometric intersection of multiple solid bodies, returnin
```kcl
intersect(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- tolerance?: [number](/docs/kcl/types/number),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ solids: [Solid],
+ tolerance?: number,
+): [Solid]
```
@@ -20,12 +20,12 @@ intersect(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to intersect. | Yes |
-| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the intersection operation. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solids to intersect. | Yes |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | The tolerance to use for the intersection operation. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
@@ -44,8 +44,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
intersectedPart = intersect([part001, part002])
@@ -69,8 +69,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
// This is the equivalent of: intersect([part001, part002])
diff --git a/docs/kcl/involuteCircular.md b/docs/kcl/involuteCircular.md
index d36928247..cd0c1a27e 100644
--- a/docs/kcl/involuteCircular.md
+++ b/docs/kcl/involuteCircular.md
@@ -10,13 +10,13 @@ Extend the current sketch with a new involute circular curve.
```kcl
involuteCircular(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- startRadius: [number](/docs/kcl/types/number),
- endRadius: [number](/docs/kcl/types/number),
- angle: [number](/docs/kcl/types/number),
- reverse?: [bool](/docs/kcl/types/bool),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ startRadius: number,
+ endRadius: number,
+ angle: number,
+ reverse?: bool,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -24,16 +24,16 @@ involuteCircular(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `startRadius` | [`number`](/docs/kcl/types/number) | The involute is described between two circles, start_radius is the radius of the inner circle. | Yes |
-| `endRadius` | [`number`](/docs/kcl/types/number) | The involute is described between two circles, end_radius is the radius of the outer circle. | Yes |
-| `angle` | [`number`](/docs/kcl/types/number) | The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve. | Yes |
-| `reverse` | [`bool`](/docs/kcl/types/bool) | If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `startRadius` | [`number`](/docs/kcl/types/std-types-number) | The involute is described between two circles, start_radius is the radius of the inner circle. | Yes |
+| `endRadius` | [`number`](/docs/kcl/types/std-types-number) | The involute is described between two circles, end_radius is the radius of the outer circle. | Yes |
+| `angle` | [`number`](/docs/kcl/types/std-types-number) | The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve. | Yes |
+| `reverse` | [`bool`](/docs/kcl/types/std-types-bool) | If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/lastSegX.md b/docs/kcl/lastSegX.md
index f1d2807e9..db5c4a4b4 100644
--- a/docs/kcl/lastSegX.md
+++ b/docs/kcl/lastSegX.md
@@ -9,7 +9,7 @@ Extract the 'x' axis value of the last line segment in the provided 2-d sketch.
```kcl
-lastSegX(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
+lastSegX(sketch: Sketch): number
```
@@ -17,11 +17,11 @@ lastSegX(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/num
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | The sketch whose line segment is being queried | Yes |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | The sketch whose line segment is being queried | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/lastSegY.md b/docs/kcl/lastSegY.md
index 3d1d078eb..638df839d 100644
--- a/docs/kcl/lastSegY.md
+++ b/docs/kcl/lastSegY.md
@@ -9,7 +9,7 @@ Extract the 'y' axis value of the last line segment in the provided 2-d sketch.
```kcl
-lastSegY(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
+lastSegY(sketch: Sketch): number
```
@@ -17,11 +17,11 @@ lastSegY(sketch: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/num
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | The sketch whose line segment is being queried | Yes |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | The sketch whose line segment is being queried | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/legAngX.md b/docs/kcl/legAngX.md
index ea374a70c..b0134682e 100644
--- a/docs/kcl/legAngX.md
+++ b/docs/kcl/legAngX.md
@@ -10,9 +10,9 @@ Compute the angle of the given leg for x.
```kcl
legAngX(
- hypotenuse: [number](/docs/kcl/types/number),
- leg: [number](/docs/kcl/types/number),
-): [number](/docs/kcl/types/number)
+ hypotenuse: number,
+ leg: number,
+): number
```
### Tags
@@ -24,12 +24,12 @@ legAngX(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `hypotenuse` | [`number`](/docs/kcl/types/number) | The length of the triangle's hypotenuse | Yes |
-| `leg` | [`number`](/docs/kcl/types/number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
+| `hypotenuse` | [`number`](/docs/kcl/types/std-types-number) | The length of the triangle's hypotenuse | Yes |
+| `leg` | [`number`](/docs/kcl/types/std-types-number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/legAngY.md b/docs/kcl/legAngY.md
index 2396c499b..7ecd6ea3b 100644
--- a/docs/kcl/legAngY.md
+++ b/docs/kcl/legAngY.md
@@ -10,9 +10,9 @@ Compute the angle of the given leg for y.
```kcl
legAngY(
- hypotenuse: [number](/docs/kcl/types/number),
- leg: [number](/docs/kcl/types/number),
-): [number](/docs/kcl/types/number)
+ hypotenuse: number,
+ leg: number,
+): number
```
### Tags
@@ -24,12 +24,12 @@ legAngY(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `hypotenuse` | [`number`](/docs/kcl/types/number) | The length of the triangle's hypotenuse | Yes |
-| `leg` | [`number`](/docs/kcl/types/number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
+| `hypotenuse` | [`number`](/docs/kcl/types/std-types-number) | The length of the triangle's hypotenuse | Yes |
+| `leg` | [`number`](/docs/kcl/types/std-types-number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/legLen.md b/docs/kcl/legLen.md
index 052b01a8c..9fc976ef7 100644
--- a/docs/kcl/legLen.md
+++ b/docs/kcl/legLen.md
@@ -10,9 +10,9 @@ Compute the length of the given leg.
```kcl
legLen(
- hypotenuse: [number](/docs/kcl/types/number),
- leg: [number](/docs/kcl/types/number),
-): [number](/docs/kcl/types/number)
+ hypotenuse: number,
+ leg: number,
+): number
```
### Tags
@@ -24,12 +24,12 @@ legLen(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `hypotenuse` | [`number`](/docs/kcl/types/number) | The length of the triangle's hypotenuse | Yes |
-| `leg` | [`number`](/docs/kcl/types/number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
+| `hypotenuse` | [`number`](/docs/kcl/types/std-types-number) | The length of the triangle's hypotenuse | Yes |
+| `leg` | [`number`](/docs/kcl/types/std-types-number) | The length of one of the triangle's legs (i.e. non-hypotenuse side) | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/line.md b/docs/kcl/line.md
index 89b9d7da5..768f50940 100644
--- a/docs/kcl/line.md
+++ b/docs/kcl/line.md
@@ -10,11 +10,11 @@ Extend the current sketch with a new straight line.
```kcl
line(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- endAbsolute?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- end?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ endAbsolute?: Point2d,
+ end?: Point2d,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -22,14 +22,14 @@ line(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `endAbsolute` | [`[number]`](/docs/kcl/types/number) | Which absolute point should this line go to? Incompatible with `end`. | No |
-| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this line go? Incompatible with `endAbsolute`. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `endAbsolute` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Which absolute point should this line go to? Incompatible with `end`. | No |
+| `end` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | How far away (along the X and Y axes) should this line go? Incompatible with `endAbsolute`. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/loft.md b/docs/kcl/loft.md
index 3f629fbaf..5e9619237 100644
--- a/docs/kcl/loft.md
+++ b/docs/kcl/loft.md
@@ -10,14 +10,14 @@ The sketches need to closed and on the same plane.
```kcl
loft(
- sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- vDegree: NonZeroU32,
- bezApproximateRational: [bool](/docs/kcl/types/bool),
- baseCurveIndex?: integer,
- tolerance?: [number](/docs/kcl/types/number),
- tagStart?: [TagDeclarator](/docs/kcl/types#tag-declaration),
- tagEnd?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Solid](/docs/kcl/types/Solid)
+ sketches: [Sketch],
+ vDegree: number,
+ bezApproximateRational: bool,
+ baseCurveIndex?: number,
+ tolerance?: number,
+ tagStart?: TagDeclarator,
+ tagEnd?: TagDeclarator,
+): Solid
```
@@ -25,17 +25,17 @@ loft(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketches to loft. Must include at least 2 sketches. | Yes |
-| `vDegree` | `NonZeroU32` | Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified. | Yes |
-| `bezApproximateRational` | [`bool`](/docs/kcl/types/bool) | Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary. | Yes |
-| `baseCurveIndex` | `integer` | This can be set to override the automatically determined topological base curve, which is usually the first section encountered. | No |
-| `tolerance` | [`number`](/docs/kcl/types/number) | Tolerance for the loft operation. | No |
-| `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the loft, i.e. the original sketch | No |
-| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the loft, i.e. the last sketch | No |
+| `sketches` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | Which sketches to loft. Must include at least 2 sketches. | Yes |
+| `vDegree` | [`number`](/docs/kcl/types/std-types-number) | Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified. | Yes |
+| `bezApproximateRational` | [`bool`](/docs/kcl/types/std-types-bool) | Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary. | Yes |
+| `baseCurveIndex` | [`number`](/docs/kcl/types/std-types-number) | This can be set to override the automatically determined topological base curve, which is usually the first section encountered. | No |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | Tolerance for the loft operation. | No |
+| `tagStart` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the start of the loft, i.e. the original sketch | No |
+| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the end of the loft, i.e. the last sketch | No |
### Returns
-[`Solid`](/docs/kcl/types/Solid)
+[`Solid`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/map.md b/docs/kcl/map.md
index 76bfb8754..490420335 100644
--- a/docs/kcl/map.md
+++ b/docs/kcl/map.md
@@ -10,9 +10,9 @@ Given a list like `[a, b, c]`, and a function like `f`, returns `[f(a), f(b), f(
```kcl
map(
- array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue)),
+ array: [any],
f: FunctionSource,
-): [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue))
+): [any]
```
@@ -20,19 +20,19 @@ map(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | Input array. The output array is this input array, but every element has had the function `f` run on it. | Yes |
+| `array` | [`[any]`](/docs/kcl/types/std-types-any) | Input array. The output array is this input array, but every element has had the function `f` run on it. | Yes |
| `f` | `FunctionSource` | A function. The output array is just the input array, but `f` has been run on every item. | Yes |
### Returns
-[`[KclValue]`](/docs/kcl/types/KclValue)
+[`[any]`](/docs/kcl/types/std-types-any)
### Examples
```kcl
r = 10 // radius
-fn drawCircle(id) {
+fn drawCircle(@id) {
return startSketchOn(XY)
|> circle(center = [id * 2 * r, 0], radius = r)
}
diff --git a/docs/kcl/modules.md b/docs/kcl/modules.md
index 262780c51..47c4daa9a 100644
--- a/docs/kcl/modules.md
+++ b/docs/kcl/modules.md
@@ -12,7 +12,7 @@ to other modules.
```kcl
// util.kcl
-export fn increment(x) {
+export fn increment(@x) {
return x + 1
}
```
@@ -37,11 +37,11 @@ Multiple functions can be exported in a file.
```kcl
// util.kcl
-export fn increment(x) {
+export fn increment(@x) {
return x + 1
}
-export fn decrement(x) {
+export fn decrement(@x) {
return x - 1
}
```
@@ -81,7 +81,7 @@ fn cube(center) {
|> extrude(length = 10)
}
-myCube = cube([0, 0])
+myCube = cube(center = [0, 0])
```
*Pros*
diff --git a/docs/kcl/patternCircular2d.md b/docs/kcl/patternCircular2d.md
index baf651308..00eaf2ea3 100644
--- a/docs/kcl/patternCircular2d.md
+++ b/docs/kcl/patternCircular2d.md
@@ -10,13 +10,13 @@ Repeat a 2-dimensional sketch some number of times along a partial or complete c
```kcl
patternCircular2d(
- sketchSet: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- instances: integer,
- center: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- arcDegrees: [number](/docs/kcl/types/number),
- rotateDuplicates: [bool](/docs/kcl/types/bool),
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
+ sketchSet: [Sketch],
+ instances: number,
+ center: Point2d,
+ arcDegrees: number,
+ rotateDuplicates: bool,
+ useOriginal?: bool,
+): [Sketch]
```
@@ -24,16 +24,16 @@ patternCircular2d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketchSet` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketch(es) to pattern | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
-| `center` | [`[number]`](/docs/kcl/types/number) | The center about which to make the pattern. This is a 2D vector. | Yes |
-| `arcDegrees` | [`number`](/docs/kcl/types/number) | The arc angle (in degrees) to place the repetitions. Must be greater than 0. | Yes |
-| `rotateDuplicates` | [`bool`](/docs/kcl/types/bool) | Whether or not to rotate the duplicates as they are copied. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `sketchSet` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | Which sketch(es) to pattern | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `center` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | The center about which to make the pattern. This is a 2D vector. | Yes |
+| `arcDegrees` | [`number`](/docs/kcl/types/std-types-number) | The arc angle (in degrees) to place the repetitions. Must be greater than 0. | Yes |
+| `rotateDuplicates` | [`bool`](/docs/kcl/types/std-types-bool) | Whether or not to rotate the duplicates as they are copied. | Yes |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Sketch]`](/docs/kcl/types/Sketch)
+[`[Sketch]`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/patternCircular3d.md b/docs/kcl/patternCircular3d.md
index a7eb350ed..0276595e7 100644
--- a/docs/kcl/patternCircular3d.md
+++ b/docs/kcl/patternCircular3d.md
@@ -10,14 +10,14 @@ Repeat a 3-dimensional solid some number of times along a partial or complete ci
```kcl
patternCircular3d(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- instances: integer,
- axis: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- center: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- arcDegrees: [number](/docs/kcl/types/number),
- rotateDuplicates: [bool](/docs/kcl/types/bool),
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ solids: [Solid],
+ instances: number,
+ axis: [number],
+ center: Point3d,
+ arcDegrees: number,
+ rotateDuplicates: bool,
+ useOriginal?: bool,
+): [Solid]
```
@@ -25,17 +25,17 @@ patternCircular3d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | Which solid(s) to pattern | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
-| `axis` | [`[number]`](/docs/kcl/types/number) | The axis around which to make the pattern. This is a 3D vector | Yes |
-| `center` | [`[number]`](/docs/kcl/types/number) | The center about which to make the pattern. This is a 3D vector. | Yes |
-| `arcDegrees` | [`number`](/docs/kcl/types/number) | The arc angle (in degrees) to place the repetitions. Must be greater than 0. | Yes |
-| `rotateDuplicates` | [`bool`](/docs/kcl/types/bool) | Whether or not to rotate the duplicates as they are copied. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | Which solid(s) to pattern | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `axis` | [`[number]`](/docs/kcl/types/std-types-number) | The axis around which to make the pattern. This is a 3D vector | Yes |
+| `center` | [`Point3d`](/docs/kcl/types/std-types-Point3d) | The center about which to make the pattern. This is a 3D vector. | Yes |
+| `arcDegrees` | [`number`](/docs/kcl/types/std-types-number) | The arc angle (in degrees) to place the repetitions. Must be greater than 0. | Yes |
+| `rotateDuplicates` | [`bool`](/docs/kcl/types/std-types-bool) | Whether or not to rotate the duplicates as they are copied. | Yes |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/patternLinear2d.md b/docs/kcl/patternLinear2d.md
index ac9fc71ad..5a8916700 100644
--- a/docs/kcl/patternLinear2d.md
+++ b/docs/kcl/patternLinear2d.md
@@ -10,12 +10,12 @@ Repeat a 2-dimensional sketch along some dimension, with a dynamic amount of dis
```kcl
patternLinear2d(
- sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- instances: integer,
- distance: [number](/docs/kcl/types/number),
- axis: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
+ sketches: [Sketch],
+ instances: number,
+ distance: number,
+ axis: Point2d,
+ useOriginal?: bool,
+): [Sketch]
```
@@ -23,15 +23,15 @@ patternLinear2d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | The sketch(es) to duplicate | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
-| `distance` | [`number`](/docs/kcl/types/number) | Distance between each repetition. Also known as 'spacing'. | Yes |
-| `axis` | [`[number]`](/docs/kcl/types/number) | The axis of the pattern. A 2D vector. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `sketches` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | The sketch(es) to duplicate | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `distance` | [`number`](/docs/kcl/types/std-types-number) | Distance between each repetition. Also known as 'spacing'. | Yes |
+| `axis` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | The axis of the pattern. A 2D vector. | Yes |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Sketch]`](/docs/kcl/types/Sketch)
+[`[Sketch]`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/patternLinear3d.md b/docs/kcl/patternLinear3d.md
index f6c556eae..6aca53d0f 100644
--- a/docs/kcl/patternLinear3d.md
+++ b/docs/kcl/patternLinear3d.md
@@ -10,12 +10,12 @@ Repeat a 3-dimensional solid along a linear path, with a dynamic amount of dista
```kcl
patternLinear3d(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- instances: integer,
- distance: [number](/docs/kcl/types/number),
- axis: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ solids: [Solid],
+ instances: number,
+ distance: number,
+ axis: Point3d,
+ useOriginal?: bool,
+): [Solid]
```
@@ -23,15 +23,15 @@ patternLinear3d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solid(s) to duplicate | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
-| `distance` | [`number`](/docs/kcl/types/number) | Distance between each repetition. Also known as 'spacing'. | Yes |
-| `axis` | [`[number]`](/docs/kcl/types/number) | The axis of the pattern. A 2D vector. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solid(s) to duplicate | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `distance` | [`number`](/docs/kcl/types/std-types-number) | Distance between each repetition. Also known as 'spacing'. | Yes |
+| `axis` | [`Point3d`](/docs/kcl/types/std-types-Point3d) | The axis of the pattern. A 2D vector. | Yes |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/patternTransform.md b/docs/kcl/patternTransform.md
index 943e3ee60..7702b50a7 100644
--- a/docs/kcl/patternTransform.md
+++ b/docs/kcl/patternTransform.md
@@ -36,11 +36,11 @@ The transform function returns a transform object. All properties of the object
```kcl
patternTransform(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- instances: integer,
+ solids: [Solid],
+ instances: number,
transform: FunctionSource,
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ useOriginal?: bool,
+): [Solid]
```
@@ -48,21 +48,21 @@ patternTransform(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solid(s) to duplicate | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solid(s) to duplicate | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
| `transform` | `FunctionSource` | How each replica should be transformed. The transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
```kcl
// Each instance will be shifted along the X axis.
-fn transform(id) {
+fn transform(@id) {
return { translate = [4 * id, 0, 0] }
}
@@ -79,7 +79,7 @@ sketch001 = startSketchOn(XZ)
// Each instance will be shifted along the X axis,
// with a gap between the original (at x = 0) and the first replica
// (at x = 8). This is because `id` starts at 1.
-fn transform(id) {
+fn transform(@id) {
return { translate = [4 * (1 + id), 0, 0] }
}
@@ -112,7 +112,7 @@ fn cube(length, center) {
}
width = 20
-fn transform(i) {
+fn transform(@i) {
return {
// Move down each time.
translate = [0, 0, -i * width],
@@ -127,7 +127,7 @@ fn transform(i) {
}
}
-myCubes = cube(width, [100, 0])
+myCubes = cube(length = width, center = [100, 0])
|> patternTransform(instances = 25, transform = transform)
```
@@ -154,7 +154,7 @@ fn cube(length, center) {
}
width = 20
-fn transform(i) {
+fn transform(@i) {
return {
translate = [0, 0, -i * width],
rotation = {
@@ -164,7 +164,7 @@ fn transform(i) {
}
}
}
-myCubes = cube(width, [100, 100])
+myCubes = cube(length = width, center = [100, 100])
|> patternTransform(instances = 4, transform = transform)
```
@@ -177,7 +177,7 @@ h = 10 // layer height
t = 0.005 // taper factor [0-1)
// Defines how to modify each layer of the vase.
// Each replica is shifted up the Z axis, and has a smoothly-varying radius
-fn transform(replicaId) {
+fn transform(@replicaId) {
scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))
return {
translate = [0, 0, replicaId * 10],
@@ -200,7 +200,7 @@ vase = layer()

```kcl
-fn transform(i) {
+fn transform(@i) {
// Transform functions can return multiple transforms. They'll be applied in order.
return [
{ translate = [30 * i, 0, 0] },
diff --git a/docs/kcl/patternTransform2d.md b/docs/kcl/patternTransform2d.md
index 0b4cb79b1..87e03a22d 100644
--- a/docs/kcl/patternTransform2d.md
+++ b/docs/kcl/patternTransform2d.md
@@ -10,11 +10,11 @@ Just like patternTransform, but works on 2D sketches not 3D solids.
```kcl
patternTransform2d(
- sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- instances: integer,
+ sketches: [Sketch],
+ instances: number,
transform: FunctionSource,
- useOriginal?: [bool](/docs/kcl/types/bool),
-): [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch))
+ useOriginal?: bool,
+): [Sketch]
```
@@ -22,21 +22,21 @@ patternTransform2d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | The sketch(es) to duplicate | Yes |
-| `instances` | `integer` | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
+| `sketches` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | The sketch(es) to duplicate | Yes |
+| `instances` | [`number`](/docs/kcl/types/std-types-number) | The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect. | Yes |
| `transform` | `FunctionSource` | How each replica should be transformed. The transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples. | Yes |
-| `useOriginal` | [`bool`](/docs/kcl/types/bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
+| `useOriginal` | [`bool`](/docs/kcl/types/std-types-bool) | If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. | No |
### Returns
-[`[Sketch]`](/docs/kcl/types/Sketch)
+[`[Sketch]`](/docs/kcl/types/std-types-Sketch)
### Examples
```kcl
// Each instance will be shifted along the X axis.
-fn transform(id) {
+fn transform(@id) {
return { translate = [4 * id, 0] }
}
diff --git a/docs/kcl/pi.md b/docs/kcl/pi.md
deleted file mode 100644
index 9f96bbd79..000000000
--- a/docs/kcl/pi.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "pi"
-excerpt: "Return the value of `pi`. Archimedes’ constant (π)."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Return the value of `pi`. Archimedes’ constant (π).
-
-**DEPRECATED** use the constant PI
-
-```js
-pi(): number
-```
-
-### Tags
-
-* `math`
-
-
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-circumference = 70
-
-exampleSketch = startSketchOn(XZ)
- |> circle(center = [0, 0], radius = circumference / (2 * pi()))
-
-example = extrude(exampleSketch, length = 5)
-```
-
-
-
-
diff --git a/docs/kcl/polygon.md b/docs/kcl/polygon.md
index 9db5c25b6..c2fd2d04a 100644
--- a/docs/kcl/polygon.md
+++ b/docs/kcl/polygon.md
@@ -10,12 +10,12 @@ Create a regular polygon with the specified number of sides that is either inscr
```kcl
polygon(
- sketchSurfaceOrGroup: [[Sketch](/docs/kcl/types/Sketch)OrSurface](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)OrSurface),
- radius: [number](/docs/kcl/types/number),
+ sketchSurfaceOrGroup: Sketch | Plane | Face,
+ radius: number,
numSides: u64,
- center: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- inscribed?: [bool](/docs/kcl/types/bool),
-): [Sketch](/docs/kcl/types/Sketch)
+ center: Point2d,
+ inscribed?: bool,
+): Sketch
```
@@ -23,15 +23,15 @@ polygon(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketchSurfaceOrGroup` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | Plane or surface to sketch on | Yes |
-| `radius` | [`number`](/docs/kcl/types/number) | The radius of the polygon | Yes |
+| `sketchSurfaceOrGroup` | [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`Plane`](/docs/kcl/types/std-types-Plane) or [`Face`](/docs/kcl/types/std-types-Face) | Plane or surface to sketch on | Yes |
+| `radius` | [`number`](/docs/kcl/types/std-types-number) | The radius of the polygon | Yes |
| `numSides` | `u64` | The number of sides in the polygon | Yes |
-| `center` | [`[number]`](/docs/kcl/types/number) | The center point of the polygon | Yes |
-| `inscribed` | [`bool`](/docs/kcl/types/bool) | Whether the polygon is inscribed (true, the default) or circumscribed (false) about a circle with the specified radius | No |
+| `center` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | The center point of the polygon | Yes |
+| `inscribed` | [`bool`](/docs/kcl/types/std-types-bool) | Whether the polygon is inscribed (true, the default) or circumscribed (false) about a circle with the specified radius | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/pop.md b/docs/kcl/pop.md
index 39e0f83f3..184bf1d39 100644
--- a/docs/kcl/pop.md
+++ b/docs/kcl/pop.md
@@ -9,7 +9,7 @@ Remove the last element from an array.
Returns a new array with the last element removed.
```kcl
-pop(array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue))): [KclValue](/docs/kcl/types/KclValue)
+pop(array: [any]): any
```
@@ -17,11 +17,11 @@ pop(array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | The array to pop from. Must not be empty. | Yes |
+| `array` | [`[any]`](/docs/kcl/types/std-types-any) | The array to pop from. Must not be empty. | Yes |
### Returns
-[`KclValue`](/docs/kcl/types/KclValue) - Any KCL value.
+[`any`](/docs/kcl/types/std-types-any) - Any KCL value.
### Examples
diff --git a/docs/kcl/profileStart.md b/docs/kcl/profileStart.md
index 7d9b17c8e..997d951c8 100644
--- a/docs/kcl/profileStart.md
+++ b/docs/kcl/profileStart.md
@@ -9,7 +9,7 @@ Extract the provided 2-dimensional sketch's profile's origin value.
```kcl
-profileStart(profile: [Sketch](/docs/kcl/types/Sketch)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
+profileStart(profile: Sketch): [number]
```
@@ -17,11 +17,11 @@ profileStart(profile: [Sketch](/docs/kcl/types/Sketch)): [[[number](/docs/kcl/ty
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `profile` | [`Sketch`](/docs/kcl/types/Sketch) | Profile whose start is being used | Yes |
+| `profile` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Profile whose start is being used | Yes |
### Returns
-[`[number]`](/docs/kcl/types/number)
+[`[number]`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/profileStartX.md b/docs/kcl/profileStartX.md
index a0cf57202..dcff89a53 100644
--- a/docs/kcl/profileStartX.md
+++ b/docs/kcl/profileStartX.md
@@ -9,7 +9,7 @@ Extract the provided 2-dimensional sketch's profile's origin's 'x' value.
```kcl
-profileStartX(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
+profileStartX(profile: Sketch): number
```
@@ -17,11 +17,11 @@ profileStartX(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/typ
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `profile` | [`Sketch`](/docs/kcl/types/Sketch) | Profile whose start is being used | Yes |
+| `profile` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Profile whose start is being used | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/profileStartY.md b/docs/kcl/profileStartY.md
index 86bd57fa8..7c02b8243 100644
--- a/docs/kcl/profileStartY.md
+++ b/docs/kcl/profileStartY.md
@@ -9,7 +9,7 @@ Extract the provided 2-dimensional sketch's profile's origin's 'y' value.
```kcl
-profileStartY(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/types/number)
+profileStartY(profile: Sketch): number
```
@@ -17,11 +17,11 @@ profileStartY(profile: [Sketch](/docs/kcl/types/Sketch)): [number](/docs/kcl/typ
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `profile` | [`Sketch`](/docs/kcl/types/Sketch) | Profile whose start is being used | Yes |
+| `profile` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Profile whose start is being used | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/push.md b/docs/kcl/push.md
index 442a78cc5..19a1c64e0 100644
--- a/docs/kcl/push.md
+++ b/docs/kcl/push.md
@@ -10,9 +10,9 @@ Returns a new array with the element appended.
```kcl
push(
- array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue)),
- item: [KclValue](/docs/kcl/types/KclValue),
-): [KclValue](/docs/kcl/types/KclValue)
+ array: [any],
+ item: any,
+): any
```
@@ -20,12 +20,12 @@ push(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | The array which you're adding a new item to. | Yes |
-| `item` | [`KclValue`](/docs/kcl/types/KclValue) | The new item to add to the array | Yes |
+| `array` | [`[any]`](/docs/kcl/types/std-types-any) | The array which you're adding a new item to. | Yes |
+| `item` | [`any`](/docs/kcl/types/std-types-any) | The new item to add to the array | Yes |
### Returns
-[`KclValue`](/docs/kcl/types/KclValue) - Any KCL value.
+[`any`](/docs/kcl/types/std-types-any) - Any KCL value.
### Examples
diff --git a/docs/kcl/reduce.md b/docs/kcl/reduce.md
index 64f131f36..b7dd42e1e 100644
--- a/docs/kcl/reduce.md
+++ b/docs/kcl/reduce.md
@@ -10,10 +10,10 @@ Take a starting value. Then, for each element of an array, calculate the next va
```kcl
reduce(
- array: [[[KclValue](/docs/kcl/types/KclValue)]](/docs/kcl/types/[KclValue](/docs/kcl/types/KclValue)),
- initial: [KclValue](/docs/kcl/types/KclValue),
+ array: [any],
+ initial: any,
f: FunctionSource,
-): [KclValue](/docs/kcl/types/KclValue)
+): any
```
@@ -21,13 +21,13 @@ reduce(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | Each element of this array gets run through the function `f`, combined with the previous output from `f`, and then used for the next run. | Yes |
-| `initial` | [`KclValue`](/docs/kcl/types/KclValue) | The first time `f` is run, it will be called with the first item of `array` and this initial starting value. | Yes |
+| `array` | [`[any]`](/docs/kcl/types/std-types-any) | Each element of this array gets run through the function `f`, combined with the previous output from `f`, and then used for the next run. | Yes |
+| `initial` | [`any`](/docs/kcl/types/std-types-any) | The first time `f` is run, it will be called with the first item of `array` and this initial starting value. | Yes |
| `f` | `FunctionSource` | Run once per item in the input `array`. This function takes an item from the array, and the previous output from `f` (or `initial` on the very first run). The final time `f` is run, its output is returned as the final output from `reduce`. | Yes |
### Returns
-[`KclValue`](/docs/kcl/types/KclValue) - Any KCL value.
+[`any`](/docs/kcl/types/std-types-any) - Any KCL value.
### Examples
@@ -41,7 +41,7 @@ fn add(a, b) {
// This function adds an array of numbers.
// It uses the `reduce` function, to call the `add` function on every
// element of the `arr` parameter. The starting value is 0.
-fn sum(arr) {
+fn sum(@arr) {
return reduce(arr, initial = 0, f = add)
}
@@ -91,7 +91,7 @@ assert(
```kcl
// Declare a function that sketches a decagon.
-fn decagon(radius) {
+fn decagon(@radius) {
// Each side of the decagon is turned this many radians from the previous angle.
stepAngle = (1 / 10 * TAU): number(rad)
diff --git a/docs/kcl/rotate.md b/docs/kcl/rotate.md
index 922db39bd..e5f7be9a5 100644
--- a/docs/kcl/rotate.md
+++ b/docs/kcl/rotate.md
@@ -28,14 +28,14 @@ When rotating a part around an axis, you specify the axis of rotation and the an
```kcl
rotate(
- objects: [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry),
- roll?: [number](/docs/kcl/types/number),
- pitch?: [number](/docs/kcl/types/number),
- yaw?: [number](/docs/kcl/types/number),
- axis?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- angle?: [number](/docs/kcl/types/number),
- global?: [bool](/docs/kcl/types/bool),
-): [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry)
+ objects: [Solid] | [Sketch] | ImportedGeometry,
+ roll?: number,
+ pitch?: number,
+ yaw?: number,
+ axis?: [number],
+ angle?: number,
+ global?: bool,
+): [Solid] | [Sketch] | ImportedGeometry
```
@@ -43,17 +43,17 @@ rotate(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `objects` | [`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) | The solid, sketch, or set of solids or sketches to rotate. | Yes |
-| `roll` | [`number`](/docs/kcl/types/number) | The roll angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
-| `pitch` | [`number`](/docs/kcl/types/number) | The pitch angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
-| `yaw` | [`number`](/docs/kcl/types/number) | The yaw angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
-| `axis` | [`[number]`](/docs/kcl/types/number) | The axis to rotate around. Must be used with `angle`. | No |
-| `angle` | [`number`](/docs/kcl/types/number) | The angle to rotate in degrees. Must be used with `axis`. Must be between -360 and 360. | No |
-| `global` | [`bool`](/docs/kcl/types/bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
+| `objects` | [`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) | The solid, sketch, or set of solids or sketches to rotate. | Yes |
+| `roll` | [`number`](/docs/kcl/types/std-types-number) | The roll angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
+| `pitch` | [`number`](/docs/kcl/types/std-types-number) | The pitch angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
+| `yaw` | [`number`](/docs/kcl/types/std-types-number) | The yaw angle in degrees. Must be between -360 and 360. Default is 0 if not given. | No |
+| `axis` | [`[number]`](/docs/kcl/types/std-types-number) | The axis to rotate around. Must be used with `angle`. | No |
+| `angle` | [`number`](/docs/kcl/types/std-types-number) | The angle to rotate in degrees. Must be used with `axis`. Must be between -360 and 360. | No |
+| `global` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
### Returns
-[`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) - Data for a solid, sketch, or an imported geometry.
+[`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) - Data for a solid, sketch, or an imported geometry.
### Examples
diff --git a/docs/kcl/scale.md b/docs/kcl/scale.md
index 70671ef43..901a7424a 100644
--- a/docs/kcl/scale.md
+++ b/docs/kcl/scale.md
@@ -16,12 +16,12 @@ If you want to apply the transform in global space, set `global` to `true`. The
```kcl
scale(
- objects: [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry),
- x?: [number](/docs/kcl/types/number),
- y?: [number](/docs/kcl/types/number),
- z?: [number](/docs/kcl/types/number),
- global?: [bool](/docs/kcl/types/bool),
-): [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry)
+ objects: [Solid] | [Sketch] | ImportedGeometry,
+ x?: number,
+ y?: number,
+ z?: number,
+ global?: bool,
+): [Solid] | [Sketch] | ImportedGeometry
```
@@ -29,15 +29,15 @@ scale(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `objects` | [`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) | The solid, sketch, or set of solids or sketches to scale. | Yes |
-| `x` | [`number`](/docs/kcl/types/number) | The scale factor for the x axis. Default is 1 if not provided. | No |
-| `y` | [`number`](/docs/kcl/types/number) | The scale factor for the y axis. Default is 1 if not provided. | No |
-| `z` | [`number`](/docs/kcl/types/number) | The scale factor for the z axis. Default is 1 if not provided. | No |
-| `global` | [`bool`](/docs/kcl/types/bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
+| `objects` | [`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) | The solid, sketch, or set of solids or sketches to scale. | Yes |
+| `x` | [`number`](/docs/kcl/types/std-types-number) | The scale factor for the x axis. Default is 1 if not provided. | No |
+| `y` | [`number`](/docs/kcl/types/std-types-number) | The scale factor for the y axis. Default is 1 if not provided. | No |
+| `z` | [`number`](/docs/kcl/types/std-types-number) | The scale factor for the z axis. Default is 1 if not provided. | No |
+| `global` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
### Returns
-[`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) - Data for a solid, sketch, or an imported geometry.
+[`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) - Data for a solid, sketch, or an imported geometry.
### Examples
diff --git a/docs/kcl/segAng.md b/docs/kcl/segAng.md
index c70a1a886..e9aef8b9b 100644
--- a/docs/kcl/segAng.md
+++ b/docs/kcl/segAng.md
@@ -9,7 +9,7 @@ Compute the angle (in degrees) of the provided line segment.
```kcl
-segAng(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segAng(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segAng(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/segEnd.md b/docs/kcl/segEnd.md
index f4c396042..29323fccd 100644
--- a/docs/kcl/segEnd.md
+++ b/docs/kcl/segEnd.md
@@ -9,7 +9,7 @@ Compute the ending point of the provided line segment.
```kcl
-segEnd(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
+segEnd(tag: TagIdentifier): Point2d
```
@@ -17,11 +17,11 @@ segEnd(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs/k
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`[number]`](/docs/kcl/types/number)
+[`Point2d`](/docs/kcl/types/std-types-Point2d)
### Examples
@@ -44,10 +44,10 @@ fn cylinder(radius, tag) {
|> extrude(length = radius)
}
-cylinder(1, line1)
-cylinder(2, line2)
-cylinder(3, line3)
-cylinder(4, line4)
+cylinder(radius = 1, tag = line1)
+cylinder(radius = 2, tag = line2)
+cylinder(radius = 3, tag = line3)
+cylinder(radius = 4, tag = line4)
```

diff --git a/docs/kcl/segEndX.md b/docs/kcl/segEndX.md
index 8ae1ed0a4..c150680dd 100644
--- a/docs/kcl/segEndX.md
+++ b/docs/kcl/segEndX.md
@@ -9,7 +9,7 @@ Compute the ending point of the provided line segment along the 'x' axis.
```kcl
-segEndX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segEndX(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segEndX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kc
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/segEndY.md b/docs/kcl/segEndY.md
index d02209c00..14b828d93 100644
--- a/docs/kcl/segEndY.md
+++ b/docs/kcl/segEndY.md
@@ -9,7 +9,7 @@ Compute the ending point of the provided line segment along the 'y' axis.
```kcl
-segEndY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segEndY(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segEndY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kc
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/segLen.md b/docs/kcl/segLen.md
index fc3736075..da9fcb62a 100644
--- a/docs/kcl/segLen.md
+++ b/docs/kcl/segLen.md
@@ -9,7 +9,7 @@ Compute the length of the provided line segment.
```kcl
-segLen(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segLen(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segLen(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/segStart.md b/docs/kcl/segStart.md
index f981f7c2c..86e1e50d5 100644
--- a/docs/kcl/segStart.md
+++ b/docs/kcl/segStart.md
@@ -9,7 +9,7 @@ Compute the starting point of the provided line segment.
```kcl
-segStart(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number))
+segStart(tag: TagIdentifier): Point2d
```
@@ -17,11 +17,11 @@ segStart(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [[[number](/docs
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`[number]`](/docs/kcl/types/number)
+[`Point2d`](/docs/kcl/types/std-types-Point2d)
### Examples
@@ -44,10 +44,10 @@ fn cylinder(radius, tag) {
|> extrude(length = radius)
}
-cylinder(1, line1)
-cylinder(2, line2)
-cylinder(3, line3)
-cylinder(4, line4)
+cylinder(radius = 1, tag = line1)
+cylinder(radius = 2, tag = line2)
+cylinder(radius = 3, tag = line3)
+cylinder(radius = 4, tag = line4)
```

diff --git a/docs/kcl/segStartX.md b/docs/kcl/segStartX.md
index 15373381a..ccc7ff055 100644
--- a/docs/kcl/segStartX.md
+++ b/docs/kcl/segStartX.md
@@ -9,7 +9,7 @@ Compute the starting point of the provided line segment along the 'x' axis.
```kcl
-segStartX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segStartX(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segStartX(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/segStartY.md b/docs/kcl/segStartY.md
index 579eec013..7cf9b259f 100644
--- a/docs/kcl/segStartY.md
+++ b/docs/kcl/segStartY.md
@@ -9,7 +9,7 @@ Compute the starting point of the provided line segment along the 'y' axis.
```kcl
-segStartY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+segStartY(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ segStartY(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/settings/project.md b/docs/kcl/settings-project.md
similarity index 100%
rename from docs/kcl/settings/project.md
rename to docs/kcl/settings-project.md
diff --git a/docs/kcl/settings/user.md b/docs/kcl/settings-user.md
similarity index 100%
rename from docs/kcl/settings/user.md
rename to docs/kcl/settings-user.md
diff --git a/docs/kcl/settings.md b/docs/kcl/settings.md
index 4aaaeb783..fef877621 100644
--- a/docs/kcl/settings.md
+++ b/docs/kcl/settings.md
@@ -8,16 +8,16 @@ layout: manual
There are three levels of settings available in Zoo Design Studio:
-1. [User Settings](/docs/kcl/settings/user): Global settings that apply to all projects, stored in `user.toml`
-2. [Project Settings](/docs/kcl/settings/project): Settings specific to a project, stored in `project.toml`
+1. [User Settings](/docs/kcl/settings-user): Global settings that apply to all projects, stored in `user.toml`
+2. [Project Settings](/docs/kcl/settings-project): Settings specific to a project, stored in `project.toml`
3. Per-file Settings: Settings that apply to a single KCL file, specified using the `@settings` attribute
## Configuration Files
Zoo Design Studio uses TOML files for configuration:
-* **User Settings**: `user.toml` - See [complete documentation](/docs/kcl/settings/user)
-* **Project Settings**: `project.toml` - See [complete documentation](/docs/kcl/settings/project)
+* **User Settings**: `user.toml` - See [complete documentation](/docs/kcl/settings-user)
+* **Project Settings**: `project.toml` - See [complete documentation](/docs/kcl/settings-project)
## Per-file settings
@@ -25,7 +25,7 @@ Settings which affect a single file are configured using the settings attribute.
This must be at the top of the KCL file (comments before the attribute are permitted).
For example:
-```js
+```kcl
// The settings attribute.
@settings(defaultLengthUnit = in)
diff --git a/docs/kcl/startProfile.md b/docs/kcl/startProfile.md
index fbf1aa4f4..41fb9074e 100644
--- a/docs/kcl/startProfile.md
+++ b/docs/kcl/startProfile.md
@@ -10,10 +10,10 @@ Start a new profile at a given point.
```kcl
startProfile(
- sketchSurface: [[Sketch](/docs/kcl/types/Sketch)Surface](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)Surface),
- at: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketchSurface: Plane | Face,
+ at: Point2d,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -21,13 +21,13 @@ startProfile(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketchSurface` | [`SketchSurface`](/docs/kcl/types/SketchSurface) | What to start the profile on | Yes |
-| `at` | [`[number]`](/docs/kcl/types/number) | Where to start the profile. An absolute point. | Yes |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Tag this first starting point | No |
+| `sketchSurface` | [`Plane`](/docs/kcl/types/std-types-Plane) or [`Face`](/docs/kcl/types/std-types-Face) | What to start the profile on | Yes |
+| `at` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Where to start the profile. An absolute point. | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Tag this first starting point | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/startSketchOn.md b/docs/kcl/startSketchOn.md
index caf341b63..7069fabc2 100644
--- a/docs/kcl/startSketchOn.md
+++ b/docs/kcl/startSketchOn.md
@@ -17,10 +17,10 @@ This is important to understand because if you were to then sketch on the result
The point is if you want to export the result of a sketch on a face, you only need to export the final Solid that was created from the sketch on the face, since it will include all the parent faces and Solids.
```kcl
-start[Sketch](/docs/kcl/types/Sketch)On(
- planeOr[Solid](/docs/kcl/types/Solid): [[Sketch](/docs/kcl/types/Sketch)Data](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)Data),
- face?: [[Face](/docs/kcl/types/Face)Tag](/docs/kcl/types/[Face](/docs/kcl/types/Face)Tag),
-): [[Sketch](/docs/kcl/types/Sketch)Surface](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)Surface)
+startSketchOn(
+ planeOrSolid: Plane | Solid,
+ face?: TagIdentifier | Start | End,
+): Plane | Face
```
@@ -28,12 +28,12 @@ start[Sketch](/docs/kcl/types/Sketch)On(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `planeOrSolid` | [`SketchData`](/docs/kcl/types/SketchData) | The plane or solid to sketch on | Yes |
-| `face` | [`FaceTag`](/docs/kcl/types/FaceTag) | Identify a face of a solid if a solid is specified as the input argument (`plane_or_solid`) | No |
+| `planeOrSolid` | [`Plane`](/docs/kcl/types/std-types-Plane) or [`Solid`](/docs/kcl/types/std-types-Solid) | The plane or solid to sketch on | Yes |
+| `face` | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) or [`Start`](/docs/kcl/types#Start) or [`End`](/docs/kcl/types#End) | Identify a face of a solid if a solid is specified as the input argument (`plane_or_solid`) | No |
### Returns
-[`SketchSurface`](/docs/kcl/types/SketchSurface) - A sketch type.
+[`Plane`](/docs/kcl/types/std-types-Plane) or [`Face`](/docs/kcl/types/std-types-Face) - A sketch type.
### Examples
diff --git a/docs/kcl/std.json b/docs/kcl/std.json
index 79f357358..b33ee21e4 100644
--- a/docs/kcl/std.json
+++ b/docs/kcl/std.json
@@ -26035,7 +26035,7 @@
},
{
"name": "color",
- "type": "String",
+ "type": "string",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "String",
@@ -32507,7 +32507,7 @@
"examples": [
"// Add color to an extruded solid.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n // There are other options besides 'color', but they're optional.\n |> appearance(color = '#ff0000')",
"// Add color to a revolved solid.\nsketch001 = startSketchOn(XY)\n |> circle(center = [15, 0], radius = 5)\n |> revolve(angle = 360, axis = Y)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)",
- "// Add color to different solids.\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\nexample0 = cube([0, 0])\nexample1 = cube([20, 0])\nexample2 = cube([40, 0])\n\nappearance(\n [example0, example1],\n color = '#ff0000',\n metalness = 50,\n roughness = 50,\n)\nappearance(\n example2,\n color = '#00ff00',\n metalness = 50,\n roughness = 50,\n)",
+ "// Add color to different solids.\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\nexample0 = cube(center = [0, 0])\nexample1 = cube(center = [20, 0])\nexample2 = cube(center = [40, 0])\n\nappearance(\n [example0, example1],\n color = '#ff0000',\n metalness = 50,\n roughness = 50,\n)\nappearance(\n example2,\n color = '#00ff00',\n metalness = 50,\n roughness = 50,\n)",
"// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _after_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfile(at = [-12, 12])\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\nshell(firstSketch, faces = [END], thickness = 0.25)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)",
"// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _before_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfile(at = [-12, 12])\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n\nshell(firstSketch, faces = [END], thickness = 0.25)",
"// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.\n// This example shows _before_ the pattern.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)",
@@ -39018,7 +39018,7 @@
},
{
"name": "interiorAbsolute",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -40627,7 +40627,7 @@
},
{
"name": "endAbsolute",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -45676,7 +45676,7 @@
},
{
"name": "error",
- "type": "String",
+ "type": "string",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_String",
@@ -45734,7 +45734,7 @@
},
{
"name": "error",
- "type": "String",
+ "type": "string",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_String",
@@ -47438,7 +47438,7 @@
},
{
"name": "control1",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -49047,7 +49047,7 @@
},
{
"name": "control2",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -50656,7 +50656,7 @@
},
{
"name": "end",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -57163,7 +57163,7 @@
},
{
"name": "p1",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -58772,7 +58772,7 @@
},
{
"name": "p2",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -60381,7 +60381,7 @@
},
{
"name": "p3",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -90118,8 +90118,8 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// Intersect two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nintersectedPart = intersect([part001, part002])",
- "// Intersect two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: intersect([part001, part002])\nintersectedPart = part001 & part002"
+ "// Intersect two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nintersectedPart = intersect([part001, part002])",
+ "// Intersect two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: intersect([part001, part002])\nintersectedPart = part001 & part002"
]
},
{
@@ -106721,7 +106721,7 @@
},
{
"name": "endAbsolute",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -108330,7 +108330,7 @@
},
{
"name": "end",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -114833,7 +114833,7 @@
},
{
"name": "vDegree",
- "type": "NonZeroU32",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "NonZeroU32",
@@ -118043,7 +118043,7 @@
},
{
"name": "baseCurveIndex",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_uint32",
@@ -133614,7 +133614,7 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "r = 10 // radius\nfn drawCircle(id) {\n return startSketchOn(XY)\n |> circle(center = [id * 2 * r, 0], radius = r)\n}\n\n// Call `drawCircle`, passing in each element of the array.\n// The outputs from each `drawCircle` form a new array,\n// which is the return value from `map`.\ncircles = map([1..3], f = drawCircle)",
+ "r = 10 // radius\nfn drawCircle(@id) {\n return startSketchOn(XY)\n |> circle(center = [id * 2 * r, 0], radius = r)\n}\n\n// Call `drawCircle`, passing in each element of the array.\n// The outputs from each `drawCircle` form a new array,\n// which is the return value from `map`.\ncircles = map([1..3], f = drawCircle)",
"r = 10 // radius\n// Call `map`, using an anonymous function instead of a named one.\ncircles = map(\n [1..3],\n f = fn(id) {\n return startSketchOn(XY)\n |> circle(center = [id * 2 * r, 0], radius = r)\n },\n)"
]
},
@@ -135234,7 +135234,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -136840,7 +136840,7 @@
},
{
"name": "center",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -146489,7 +146489,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -149705,7 +149705,7 @@
},
{
"name": "center",
- "type": "[number]",
+ "type": "Point3d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_3_of_TyF64",
@@ -159354,7 +159354,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -162565,7 +162565,7 @@
},
{
"name": "axis",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -169005,7 +169005,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -172216,7 +172216,7 @@
},
{
"name": "axis",
- "type": "[number]",
+ "type": "Point3d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_3_of_TyF64",
@@ -178658,7 +178658,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -185080,12 +185080,12 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// Each instance will be shifted along the X axis.\nfn transform(id) {\n return { translate = [4 * id, 0, 0] }\n}\n\n// Sketch 4 cylinders.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)",
- "// Each instance will be shifted along the X axis,\n// with a gap between the original (at x = 0) and the first replica\n// (at x = 8). This is because `id` starts at 1.\nfn transform(id) {\n return { translate = [4 * (1 + id), 0, 0] }\n}\n\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)",
- "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(i) {\n return {\n // Move down each time.\n translate = [0, 0, -i * width],\n // Make the cube longer, wider and flatter each time.\n scale = [\n pow(1.1, exp = i),\n pow(1.1, exp = i),\n pow(0.9, exp = i)\n ],\n // Turn by 15 degrees each time.\n rotation = { angle = 15 * i, origin = \"local\" }\n }\n}\n\nmyCubes = cube(width, [100, 0])\n |> patternTransform(instances = 25, transform = transform)",
- "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(i) {\n return {\n translate = [0, 0, -i * width],\n rotation = {\n angle = 90 * i,\n // Rotate around the overall scene's origin.\n origin = \"global\"\n }\n }\n}\nmyCubes = cube(width, [100, 100])\n |> patternTransform(instances = 4, transform = transform)",
- "// Parameters\nr = 50 // base radius\nh = 10 // layer height\nt = 0.005 // taper factor [0-1)\n// Defines how to modify each layer of the vase.\n// Each replica is shifted up the Z axis, and has a smoothly-varying radius\nfn transform(replicaId) {\n scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))\n return {\n translate = [0, 0, replicaId * 10],\n scale = [scale, scale, 0]\n }\n}\n// Each layer is just a pretty thin cylinder.\nfn layer() {\n return startSketchOn(XY)\n // or some other plane idk\n |> circle(center = [0, 0], radius = 1, tag = $tag1)\n |> extrude(length = h)\n}\n// The vase is 100 layers tall.\n// The 100 layers are replica of each other, with a slight transformation applied to each.\nvase = layer()\n |> patternTransform(instances = 100, transform = transform)",
- "fn transform(i) {\n // Transform functions can return multiple transforms. They'll be applied in order.\n return [\n { translate = [30 * i, 0, 0] },\n { rotation = { angle = 45 * i } }\n ]\n}\nstartSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> polygon(\n radius = 10,\n numSides = 4,\n center = [0, 0],\n inscribed = false,\n )\n |> extrude(length = 4)\n |> patternTransform(instances = 3, transform = transform)"
+ "// Each instance will be shifted along the X axis.\nfn transform(@id) {\n return { translate = [4 * id, 0, 0] }\n}\n\n// Sketch 4 cylinders.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)",
+ "// Each instance will be shifted along the X axis,\n// with a gap between the original (at x = 0) and the first replica\n// (at x = 8). This is because `id` starts at 1.\nfn transform(@id) {\n return { translate = [4 * (1 + id), 0, 0] }\n}\n\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)",
+ "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n return {\n // Move down each time.\n translate = [0, 0, -i * width],\n // Make the cube longer, wider and flatter each time.\n scale = [\n pow(1.1, exp = i),\n pow(1.1, exp = i),\n pow(0.9, exp = i)\n ],\n // Turn by 15 degrees each time.\n rotation = { angle = 15 * i, origin = \"local\" }\n }\n}\n\nmyCubes = cube(length = width, center = [100, 0])\n |> patternTransform(instances = 25, transform = transform)",
+ "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n return {\n translate = [0, 0, -i * width],\n rotation = {\n angle = 90 * i,\n // Rotate around the overall scene's origin.\n origin = \"global\"\n }\n }\n}\nmyCubes = cube(length = width, center = [100, 100])\n |> patternTransform(instances = 4, transform = transform)",
+ "// Parameters\nr = 50 // base radius\nh = 10 // layer height\nt = 0.005 // taper factor [0-1)\n// Defines how to modify each layer of the vase.\n// Each replica is shifted up the Z axis, and has a smoothly-varying radius\nfn transform(@replicaId) {\n scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))\n return {\n translate = [0, 0, replicaId * 10],\n scale = [scale, scale, 0]\n }\n}\n// Each layer is just a pretty thin cylinder.\nfn layer() {\n return startSketchOn(XY)\n // or some other plane idk\n |> circle(center = [0, 0], radius = 1, tag = $tag1)\n |> extrude(length = h)\n}\n// The vase is 100 layers tall.\n// The 100 layers are replica of each other, with a slight transformation applied to each.\nvase = layer()\n |> patternTransform(instances = 100, transform = transform)",
+ "fn transform(@i) {\n // Transform functions can return multiple transforms. They'll be applied in order.\n return [\n { translate = [30 * i, 0, 0] },\n { rotation = { angle = 45 * i } }\n ]\n}\nstartSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> polygon(\n radius = 10,\n numSides = 4,\n center = [0, 0],\n inscribed = false,\n )\n |> extrude(length = 4)\n |> patternTransform(instances = 3, transform = transform)"
]
},
{
@@ -186704,7 +186704,7 @@
},
{
"name": "instances",
- "type": "integer",
+ "type": "number",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "uint32",
@@ -193126,7 +193126,7 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// Each instance will be shifted along the X axis.\nfn transform(id) {\n return { translate = [4 * id, 0] }\n}\n\n// Sketch 4 circles.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> patternTransform2d(instances = 4, transform = transform)"
+ "// Each instance will be shifted along the X axis.\nfn transform(@id) {\n return { translate = [4 * id, 0] }\n}\n\n// Sketch 4 circles.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> patternTransform2d(instances = 4, transform = transform)"
]
},
{
@@ -197961,7 +197961,7 @@
},
{
"name": "center",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -232205,9 +232205,9 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// This function adds two numbers.\nfn add(a, b) {\n return a + b\n}\n\n// This function adds an array of numbers.\n// It uses the `reduce` function, to call the `add` function on every\n// element of the `arr` parameter. The starting value is 0.\nfn sum(arr) {\n return reduce(arr, initial = 0, f = add)\n}\n\n/* The above is basically like this pseudo-code:\nfn sum(arr):\n sumSoFar = 0\n for i in arr:\n sumSoFar = add(sumSoFar, i)\n return sumSoFar */\n\n// We use `assert` to check that our `sum` function gives the\n// expected result. It's good to check your work!\nassert(\n sum([1, 2, 3]),\n isEqualTo = 6,\n tolerance = 0.1,\n error = \"1 + 2 + 3 summed is 6\",\n)",
+ "// This function adds two numbers.\nfn add(a, b) {\n return a + b\n}\n\n// This function adds an array of numbers.\n// It uses the `reduce` function, to call the `add` function on every\n// element of the `arr` parameter. The starting value is 0.\nfn sum(@arr) {\n return reduce(arr, initial = 0, f = add)\n}\n\n/* The above is basically like this pseudo-code:\nfn sum(arr):\n sumSoFar = 0\n for i in arr:\n sumSoFar = add(sumSoFar, i)\n return sumSoFar */\n\n// We use `assert` to check that our `sum` function gives the\n// expected result. It's good to check your work!\nassert(\n sum([1, 2, 3]),\n isEqualTo = 6,\n tolerance = 0.1,\n error = \"1 + 2 + 3 summed is 6\",\n)",
"// This example works just like the previous example above, but it uses\n// an anonymous `add` function as its parameter, instead of declaring a\n// named function outside.\narr = [1, 2, 3]\nsum = reduce(\n arr,\n initial = 0,\n f = fn(i, result_so_far) {\n return i + result_so_far\n },\n)\n\n// We use `assert` to check that our `sum` function gives the\n// expected result. It's good to check your work!\nassert(\n sum,\n isEqualTo = 6,\n tolerance = 0.1,\n error = \"1 + 2 + 3 summed is 6\",\n)",
- "// Declare a function that sketches a decagon.\nfn decagon(radius) {\n // Each side of the decagon is turned this many radians from the previous angle.\n stepAngle = (1 / 10 * TAU): number(rad)\n\n // Start the decagon sketch at this point.\n startOfDecagonSketch = startSketchOn(XY)\n |> startProfile(at = [cos(0) * radius, sin(0) * radius])\n\n // Use a `reduce` to draw the remaining decagon sides.\n // For each number in the array 1..10, run the given function,\n // which takes a partially-sketched decagon and adds one more edge to it.\n fullDecagon = reduce(\n [1..10],\n initial = startOfDecagonSketch,\n f = fn(i, partialDecagon) {\n // Draw one edge of the decagon.\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n return line(partialDecagon, end = [x, y])\n },\n )\n\n return fullDecagon\n}\n\n/* The `decagon` above is basically like this pseudo-code:\nfn decagon(radius):\n stepAngle = ((1/10) * TAU): number(rad)\n plane = startSketchOn(XY)\n startOfDecagonSketch = startProfile(plane, at = [(cos(0)*radius), (sin(0) * radius)])\n\n // Here's the reduce part.\n partialDecagon = startOfDecagonSketch\n for i in [1..10]:\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n partialDecagon = line(partialDecagon, end = [x, y])\n fullDecagon = partialDecagon // it's now full\n return fullDecagon */\n\n// Use the `decagon` function declared above, to sketch a decagon with radius 5.\ndecagon(5.0)\n |> close()"
+ "// Declare a function that sketches a decagon.\nfn decagon(@radius) {\n // Each side of the decagon is turned this many radians from the previous angle.\n stepAngle = (1 / 10 * TAU): number(rad)\n\n // Start the decagon sketch at this point.\n startOfDecagonSketch = startSketchOn(XY)\n |> startProfile(at = [cos(0) * radius, sin(0) * radius])\n\n // Use a `reduce` to draw the remaining decagon sides.\n // For each number in the array 1..10, run the given function,\n // which takes a partially-sketched decagon and adds one more edge to it.\n fullDecagon = reduce(\n [1..10],\n initial = startOfDecagonSketch,\n f = fn(i, partialDecagon) {\n // Draw one edge of the decagon.\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n return line(partialDecagon, end = [x, y])\n },\n )\n\n return fullDecagon\n}\n\n/* The `decagon` above is basically like this pseudo-code:\nfn decagon(radius):\n stepAngle = ((1/10) * TAU): number(rad)\n plane = startSketchOn(XY)\n startOfDecagonSketch = startProfile(plane, at = [(cos(0)*radius), (sin(0) * radius)])\n\n // Here's the reduce part.\n partialDecagon = startOfDecagonSketch\n for i in [1..10]:\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n partialDecagon = line(partialDecagon, end = [x, y])\n fullDecagon = partialDecagon // it's now full\n return fullDecagon */\n\n// Use the `decagon` function declared above, to sketch a decagon with radius 5.\ndecagon(5.0)\n |> close()"
]
},
{
@@ -255081,7 +255081,7 @@
],
"returnValue": {
"name": "",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -255105,7 +255105,7 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segEnd(tag))\n |> extrude(length = radius)\n}\n\ncylinder(1, line1)\ncylinder(2, line2)\ncylinder(3, line3)\ncylinder(4, line4)"
+ "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segEnd(tag))\n |> extrude(length = radius)\n}\n\ncylinder(radius = 1, tag = line1)\ncylinder(radius = 2, tag = line2)\ncylinder(radius = 3, tag = line3)\ncylinder(radius = 4, tag = line4)"
]
},
{
@@ -255283,7 +255283,7 @@
],
"returnValue": {
"name": "",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -255307,7 +255307,7 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segStart(tag))\n |> extrude(length = radius)\n}\n\ncylinder(1, line1)\ncylinder(2, line2)\ncylinder(3, line3)\ncylinder(4, line4)"
+ "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segStart(tag))\n |> extrude(length = radius)\n}\n\ncylinder(radius = 1, tag = line1)\ncylinder(radius = 2, tag = line2)\ncylinder(radius = 3, tag = line3)\ncylinder(radius = 4, tag = line4)"
]
},
{
@@ -257147,7 +257147,7 @@
},
{
"name": "at",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Array_size_2_of_TyF64",
@@ -273775,8 +273775,8 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// Subtract a cylinder from a cube using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nsubtractedPart = subtract([part001], tools = [part002])",
- "// Subtract a cylinder from a cube using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: subtract([part001], tools=[part002])\nsubtractedPart = part001 - part002"
+ "// Subtract a cylinder from a cube using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nsubtractedPart = subtract([part001], tools = [part002])",
+ "// Subtract a cylinder from a cube using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: subtract([part001], tools=[part002])\nsubtractedPart = part001 - part002"
]
},
{
@@ -291976,7 +291976,7 @@
},
{
"name": "endAbsolute",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -293585,7 +293585,7 @@
},
{
"name": "end",
- "type": "[number]",
+ "type": "Point2d",
"schema": {
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
"title": "Nullable_Array_size_2_of_TyF64",
@@ -311484,7 +311484,7 @@
"// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> translate(x = 1.0, y = 1.0, z = 2.5)",
"// Move an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\n// Circle so you actually see the move.\nstartSketchOn(XY)\n |> circle(center = [-10, -10], radius = 10)\n |> extrude(length = 10)\n\ncube\n |> translate(x = 10.0, y = 10.0, z = 2.5)",
"// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n parts,\n x = 1.0,\n y = 1.0,\n z = 2.5,\n)",
- "// Move a sketch.\n\n\nfn square(length) {\n l = length / 2\n p0 = [-l, -l]\n p1 = [-l, l]\n p2 = [l, l]\n p3 = [l, -l]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> close()\n}\n\nsquare(10)\n |> translate(x = 5, y = 5)\n |> extrude(length = 10)",
+ "// Move a sketch.\n\n\nfn square(@length) {\n l = length / 2\n p0 = [-l, -l]\n p1 = [-l, l]\n p2 = [l, l]\n p3 = [l, -l]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> close()\n}\n\nsquare(10)\n |> translate(x = 5, y = 5)\n |> extrude(length = 10)",
"// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n return startProfile(sketch001, at = [-10, 10])\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(z = 20)\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])"
]
},
@@ -316320,9 +316320,9 @@
"unpublished": false,
"deprecated": false,
"examples": [
- "// Union two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nunionedPart = union([part001, part002])",
- "// Union two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: union([part001, part002])\nunionedPart = part001 + part002",
- "// Union two cubes using the more programmer-friendly operator.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n // This is the equivalent of: union([part001, part002])\n // Programmers will understand `|` as a union operation, but mechanical engineers\n// will understand `+`, we made both work.\nunionedPart = part001 | part002"
+ "// Union two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nunionedPart = union([part001, part002])",
+ "// Union two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: union([part001, part002])\nunionedPart = part001 + part002",
+ "// Union two cubes using the more programmer-friendly operator.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n // This is the equivalent of: union([part001, part002])\n // Programmers will understand `|` as a union operation, but mechanical engineers\n// will understand `+`, we made both work.\nunionedPart = part001 | part002"
]
},
{
diff --git a/docs/kcl/subtract.md b/docs/kcl/subtract.md
index aa1125b3a..e569afba5 100644
--- a/docs/kcl/subtract.md
+++ b/docs/kcl/subtract.md
@@ -10,10 +10,10 @@ Performs a boolean subtraction operation, removing the volume of one or more too
```kcl
subtract(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- tools: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- tolerance?: [number](/docs/kcl/types/number),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ solids: [Solid],
+ tools: [Solid],
+ tolerance?: number,
+): [Solid]
```
@@ -21,13 +21,13 @@ subtract(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to use as the base to subtract from. | Yes |
-| `tools` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to subtract. | Yes |
-| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the subtraction operation. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solids to use as the base to subtract from. | Yes |
+| `tools` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solids to subtract. | Yes |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | The tolerance to use for the subtraction operation. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
@@ -46,8 +46,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
subtractedPart = subtract([part001], tools = [part002])
@@ -71,8 +71,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
// This is the equivalent of: subtract([part001], tools=[part002])
diff --git a/docs/kcl/subtract2d.md b/docs/kcl/subtract2d.md
index 50d014889..aa3f33f0e 100644
--- a/docs/kcl/subtract2d.md
+++ b/docs/kcl/subtract2d.md
@@ -10,9 +10,9 @@ Use a 2-dimensional sketch to cut a hole in another 2-dimensional sketch.
```kcl
subtract2d(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- tool: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ tool: [Sketch],
+): Sketch
```
@@ -20,12 +20,12 @@ subtract2d(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `tool` | [`[Sketch]`](/docs/kcl/types/Sketch) | The shape(s) which should be cut out of the sketch. | Yes |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `tool` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | The shape(s) which should be cut out of the sketch. | Yes |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/sweep.md b/docs/kcl/sweep.md
index 701e986c9..dc2a9b13a 100644
--- a/docs/kcl/sweep.md
+++ b/docs/kcl/sweep.md
@@ -12,13 +12,13 @@ You can provide more than one sketch to sweep, and they will all be swept along
```kcl
sweep(
- sketches: [[[Sketch](/docs/kcl/types/Sketch)]](/docs/kcl/types/[Sketch](/docs/kcl/types/Sketch)),
- path: Sweep[Path](/docs/kcl/types/Path),
- sectional?: [bool](/docs/kcl/types/bool),
- tolerance?: [number](/docs/kcl/types/number),
- tagStart?: [TagDeclarator](/docs/kcl/types#tag-declaration),
- tagEnd?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ sketches: [Sketch],
+ path: Sketch | Helix,
+ sectional?: bool,
+ tolerance?: number,
+ tagStart?: TagDeclarator,
+ tagEnd?: TagDeclarator,
+): [Solid]
```
@@ -26,16 +26,16 @@ sweep(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | The sketch or set of sketches that should be swept in space | Yes |
-| `path` | [`SweepPath`](/docs/kcl/types/SweepPath) | The path to sweep the sketch along | Yes |
-| `sectional` | [`bool`](/docs/kcl/types/bool) | If true, the sweep will be broken up into sub-sweeps (extrusions, revolves, sweeps) based on the trajectory path components. | No |
-| `tolerance` | [`number`](/docs/kcl/types/number) | Tolerance for this operation | No |
-| `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the sweep, i.e. the original sketch | No |
-| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the sweep | No |
+| `sketches` | [`[Sketch]`](/docs/kcl/types/std-types-Sketch) | The sketch or set of sketches that should be swept in space | Yes |
+| `path` | [`Sketch`](/docs/kcl/types/std-types-Sketch) or [`Helix`](/docs/kcl/types/std-types-Helix) | The path to sweep the sketch along | Yes |
+| `sectional` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the sweep will be broken up into sub-sweeps (extrusions, revolves, sweeps) based on the trajectory path components. | No |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | Tolerance for this operation | No |
+| `tagStart` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the start of the sweep, i.e. the original sketch | No |
+| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | A named tag for the face at the end of the sweep | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
diff --git a/docs/kcl/tangentToEnd.md b/docs/kcl/tangentToEnd.md
index f480ea1e4..e8aa077e6 100644
--- a/docs/kcl/tangentToEnd.md
+++ b/docs/kcl/tangentToEnd.md
@@ -9,7 +9,7 @@ Returns the angle coming out of the end of the segment in degrees.
```kcl
-tangentToEnd(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/docs/kcl/types/number)
+tangentToEnd(tag: TagIdentifier): number
```
@@ -17,11 +17,11 @@ tangentToEnd(tag: [TagIdentifier](/docs/kcl/types#tag-identifier)): [number](/do
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `tag` | [`TagIdentifier`](/docs/kcl/types#tag-identifier) | The line segment being queried by its tag | Yes |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagIdentifier`](/docs/kcl/types#TagIdentifier) | The line segment being queried by its tag | Yes |
### Returns
-[`number`](/docs/kcl/types/number)
+[`number`](/docs/kcl/types/std-types-number)
### Examples
diff --git a/docs/kcl/tangentialArc.md b/docs/kcl/tangentialArc.md
index 7e36393ed..f11113ef9 100644
--- a/docs/kcl/tangentialArc.md
+++ b/docs/kcl/tangentialArc.md
@@ -10,13 +10,13 @@ When using radius and angle, draw a curved line segment along part of an imagina
```kcl
tangentialArc(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- endAbsolute?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- end?: [[[number](/docs/kcl/types/number)]](/docs/kcl/types/[number](/docs/kcl/types/number)),
- radius?: [number](/docs/kcl/types/number),
- angle?: [number](/docs/kcl/types/number),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ endAbsolute?: Point2d,
+ end?: Point2d,
+ radius?: number,
+ angle?: number,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -24,16 +24,16 @@ tangentialArc(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `endAbsolute` | [`[number]`](/docs/kcl/types/number) | Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`. | No |
-| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`. | No |
-| `radius` | [`number`](/docs/kcl/types/number) | Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`. | No |
-| `angle` | [`number`](/docs/kcl/types/number) | Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this arc | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `endAbsolute` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`. | No |
+| `end` | [`Point2d`](/docs/kcl/types/std-types-Point2d) | How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`. | No |
+| `radius` | [`number`](/docs/kcl/types/std-types-number) | Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`. | No |
+| `angle` | [`number`](/docs/kcl/types/std-types-number) | Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this arc | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/tau.md b/docs/kcl/tau.md
deleted file mode 100644
index 60a25f16d..000000000
--- a/docs/kcl/tau.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: "tau"
-excerpt: "Return the value of `tau`. The full circle constant (τ). Equal to 2π."
-layout: manual
----
-
-**WARNING:** This function is deprecated.
-
-Return the value of `tau`. The full circle constant (τ). Equal to 2π.
-
-**DEPRECATED** use the constant TAU
-
-```js
-tau(): number
-```
-
-### Tags
-
-* `math`
-
-
-
-### Returns
-
-[`number`](/docs/kcl/types/number)
-
-
-### Examples
-
-```js
-exampleSketch = startSketchOn(XZ)
- |> startProfile(at = [0, 0])
- |> angledLine(angle = 50, length = 10 * tau())
- |> yLine(endAbsolute = 0)
- |> close()
-
-example = extrude(exampleSketch, length = 5)
-```
-
-
-
-
diff --git a/docs/kcl/translate.md b/docs/kcl/translate.md
index cb8b5bcdf..870d5c69c 100644
--- a/docs/kcl/translate.md
+++ b/docs/kcl/translate.md
@@ -12,12 +12,12 @@ Translate is really useful for sketches if you want to move a sketch and then ro
```kcl
translate(
- objects: [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry),
- x?: [number](/docs/kcl/types/number),
- y?: [number](/docs/kcl/types/number),
- z?: [number](/docs/kcl/types/number),
- global?: [bool](/docs/kcl/types/bool),
-): [[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)Or[Sketch](/docs/kcl/types/Sketch)OrImportedGeometry)
+ objects: [Solid] | [Sketch] | ImportedGeometry,
+ x?: number,
+ y?: number,
+ z?: number,
+ global?: bool,
+): [Solid] | [Sketch] | ImportedGeometry
```
@@ -25,15 +25,15 @@ translate(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `objects` | [`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) | The solid, sketch, or set of solids or sketches to move. | Yes |
-| `x` | [`number`](/docs/kcl/types/number) | The amount to move the solid or sketch along the x axis. Defaults to 0 if not provided. | No |
-| `y` | [`number`](/docs/kcl/types/number) | The amount to move the solid or sketch along the y axis. Defaults to 0 if not provided. | No |
-| `z` | [`number`](/docs/kcl/types/number) | The amount to move the solid or sketch along the z axis. Defaults to 0 if not provided. | No |
-| `global` | [`bool`](/docs/kcl/types/bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
+| `objects` | [`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) | The solid, sketch, or set of solids or sketches to move. | Yes |
+| `x` | [`number`](/docs/kcl/types/std-types-number) | The amount to move the solid or sketch along the x axis. Defaults to 0 if not provided. | No |
+| `y` | [`number`](/docs/kcl/types/std-types-number) | The amount to move the solid or sketch along the y axis. Defaults to 0 if not provided. | No |
+| `z` | [`number`](/docs/kcl/types/std-types-number) | The amount to move the solid or sketch along the z axis. Defaults to 0 if not provided. | No |
+| `global` | [`bool`](/docs/kcl/types/std-types-bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
### Returns
-[`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) - Data for a solid, sketch, or an imported geometry.
+[`[Solid]`](/docs/kcl/types/std-types-Solid) or [`[Sketch]`](/docs/kcl/types/std-types-Sketch) or [`ImportedGeometry`](/docs/kcl/types#ImportedGeometry) - Data for a solid, sketch, or an imported geometry.
### Examples
@@ -117,7 +117,7 @@ translate(
// Move a sketch.
-fn square(length) {
+fn square(@length) {
l = length / 2
p0 = [-l, -l]
p1 = [-l, l]
diff --git a/docs/kcl/types.md b/docs/kcl/types.md
index cf454d512..7cea7be5a 100644
--- a/docs/kcl/types.md
+++ b/docs/kcl/types.md
@@ -9,10 +9,6 @@ layout: manual
All these types can be nested in various forms where nesting applies. Like
arrays can hold objects and vice versa.
-## Boolean
-
-`true` or `false` work when defining values.
-
## Constant declaration
Constants are defined with a name and a value, like so:
@@ -23,7 +19,7 @@ myBool = false
Currently you cannot redeclare a constant.
-## Array
+## Arrays
An array is defined with `[]` braces. What is inside the brackets can
be of any type. For example, the following is completely valid:
@@ -36,7 +32,7 @@ If you want to get a value from an array you can use the index like so:
`myArray[0]`.
-## Object
+## Objects
An object is defined with `{}` braces. Here is an example object:
@@ -47,6 +43,15 @@ myObj = { a = 0, b = "thing" }
We support two different ways of getting properties from objects, you can call
`myObj.a` or `myObj["a"]` both work.
+## `ImportedGeometry`
+
+Using `import` you can import geometry defined using other CAD software. In KCL,
+these objects have type `ImportedGeometry` and can mostly be treated like any
+other solid (they can be rotated, scaled, etc.), although there is no access to
+their internal components. See the [modules and imports docs](modules) for more
+detail on importing geometry.
+
+
## Binary expressions
You can also do math! Let's show an example below:
@@ -176,7 +181,7 @@ Check the docs page for each function and look at its examples to see.
Tags are used to give a name (tag) to a specific path.
-### Tag Declaration
+### `TagDeclarator`
The syntax for declaring a tag is `$myTag` you would use it in the following
way:
@@ -199,7 +204,7 @@ startSketchOn(XZ)
|> close()
```
-### Tag Identifier
+### `TagIdentifier`
As per the example above you can use the tag identifier to get a reference to the
tagged object. The syntax for this is `myTag`.
@@ -207,6 +212,16 @@ tagged object. The syntax for this is `myTag`.
In the example above we use the tag identifier to get the angle of the segment
`segAng(rectangleSegmentA001, %)`.
+### `Start`
+
+There is a special tag, `START` (with type `Start`, although under the cover, it's a string)
+for identifying the face of a solid which was the start of an extrusion (i.e., the surface which
+is extruded).
+
+### `End`
+
+There is a special tag, `END` (with type `End`, although under the cover, it's a string)
+for identifying the face of a solid which was finishes an extrusion.
### Tag Scope
@@ -234,8 +249,8 @@ fn rect(origin) {
|> close()
}
-rect([0, 0])
-rect([20, 0])
+rect(origin = [0, 0])
+rect(origin = [20, 0])
```
Those tags would only be available in the `rect` function and not globally.
@@ -264,8 +279,8 @@ fn rect(origin) {
|> close()
}
-rect([0, 0])
-myRect = rect([20, 0])
+rect(origin = [0, 0])
+myRect = rect(origin = [20, 0])
myRect
|> extrude(length = 10)
diff --git a/docs/kcl/types/ArtifactId.md b/docs/kcl/types/ArtifactId.md
deleted file mode 100644
index 6447248f1..000000000
--- a/docs/kcl/types/ArtifactId.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: "ArtifactId"
-excerpt: ""
-layout: manual
----
-
-
-**Type:** [`string`](/docs/kcl/types/string) (`uuid`)
-
-
-
-
-
-
-
diff --git a/docs/kcl/types/BasePath.md b/docs/kcl/types/BasePath.md
deleted file mode 100644
index 9d616b105..000000000
--- a/docs/kcl/types/BasePath.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: "BasePath"
-excerpt: "A base path."
-layout: manual
----
-
-A base path.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
diff --git a/docs/kcl/types/EdgeCut.md b/docs/kcl/types/EdgeCut.md
deleted file mode 100644
index 8046401eb..000000000
--- a/docs/kcl/types/EdgeCut.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: "EdgeCut"
-excerpt: "A fillet or a chamfer."
-layout: manual
----
-
-A fillet or a chamfer.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-A fillet.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `fillet`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the engine command that called this fillet. | No |
-| `radius` |`TyF64`| | No |
-| `edgeId` |[`string`](/docs/kcl/types/string)| The engine id of the edge to fillet. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No |
-
-
-----
-A chamfer.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `chamfer`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the engine command that called this chamfer. | No |
-| `length` |`TyF64`| | No |
-| `edgeId` |[`string`](/docs/kcl/types/string)| The engine id of the edge to chamfer. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/ExtrudeSurface.md b/docs/kcl/types/ExtrudeSurface.md
deleted file mode 100644
index 991ec8e8a..000000000
--- a/docs/kcl/types/ExtrudeSurface.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: "ExtrudeSurface"
-excerpt: "An extrude surface."
-layout: manual
----
-
-An extrude surface.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-An extrude plane.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `extrudePlane`| | No |
-| `faceId` |[`string`](/docs/kcl/types/string)| The face id for the extrude plane. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the geometry. | No |
-| `sourceRange` |`[, `integer`, `integer`, `integer`]`| The source range. | No |
-
-
-----
-An extruded arc.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `extrudeArc`| | No |
-| `faceId` |[`string`](/docs/kcl/types/string)| The face id for the extrude plane. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the geometry. | No |
-| `sourceRange` |`[, `integer`, `integer`, `integer`]`| The source range. | No |
-
-
-----
-Geometry metadata.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `chamfer`| | No |
-| `faceId` |[`string`](/docs/kcl/types/string)| The id for the chamfer surface. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the geometry. | No |
-| `sourceRange` |`[, `integer`, `integer`, `integer`]`| The source range. | No |
-
-
-----
-Geometry metadata.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `fillet`| | No |
-| `faceId` |[`string`](/docs/kcl/types/string)| The id for the fillet surface. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the geometry. | No |
-| `sourceRange` |`[, `integer`, `integer`, `integer`]`| The source range. | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/FaceTag.md b/docs/kcl/types/FaceTag.md
deleted file mode 100644
index e9dad7cdd..000000000
--- a/docs/kcl/types/FaceTag.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "FaceTag"
-excerpt: "A tag for a face."
-layout: manual
----
-
-A tag for a face.
-
-
-
-
-**This schema accepts any of the following:**
-
-
-[`StartOrEnd`](/docs/kcl/types/StartOrEnd)
-
-
-
-
-
-
-
-
-----
-A tag for the face.
-
-[`TagIdentifier`](/docs/kcl/types#tag-identifier)
-
-
-
-
-
-
-
-
-----
-
-
-
-
-
diff --git a/docs/kcl/types/GeoMeta.md b/docs/kcl/types/GeoMeta.md
deleted file mode 100644
index 35b8f4c9e..000000000
--- a/docs/kcl/types/GeoMeta.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "GeoMeta"
-excerpt: "Geometry metadata."
-layout: manual
----
-
-Geometry metadata.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `id` |[`string`](/docs/kcl/types/string)| The id of the geometry. | No |
-| `sourceRange` |`[, `integer`, `integer`, `integer`]`| The source range. | No |
-
-
diff --git a/docs/kcl/types/GeometryWithImportedGeometry.md b/docs/kcl/types/GeometryWithImportedGeometry.md
deleted file mode 100644
index 3e73a32c8..000000000
--- a/docs/kcl/types/GeometryWithImportedGeometry.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-title: "GeometryWithImportedGeometry"
-excerpt: "A geometry including an imported geometry."
-layout: manual
----
-
-A geometry including an imported geometry.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Sketch`](/docs/kcl/types/Sketch)| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the sketch (this will change when the engine's reference to it changes). | No |
-| `paths` |`[` [`Path`](/docs/kcl/types/Path) `]`| The paths in the sketch. | No |
-| `on` |[`SketchSurface`](/docs/kcl/types/SketchSurface)| What the sketch is on (can be a plane or a face). | No |
-| `start` |[`BasePath`](/docs/kcl/types/BasePath)| The starting path. | No |
-| `tags` |`object`| Tag identifiers that have been declared in this sketch. | No |
-| `artifactId` |[`string`](/docs/kcl/types/string)| The original id of the sketch. This stays the same even if the sketch is is sketched on face etc. | No |
-| `originalId` |[`string`](/docs/kcl/types/string)| | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Solid`](/docs/kcl/types/Solid)| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the solid. | No |
-| `artifactId` |[`string`](/docs/kcl/types/string)| The artifact ID of the solid. Unlike `id`, this doesn't change. | No |
-| `value` |`[` [`ExtrudeSurface`](/docs/kcl/types/ExtrudeSurface) `]`| The extrude surfaces. | No |
-| `sketch` |[`Sketch`](/docs/kcl/types/Sketch)| The sketch. | No |
-| `height` |[`number`](/docs/kcl/types/number)| The height of the solid. | No |
-| `startCapId` |[`string`](/docs/kcl/types/string)| The id of the extrusion start cap | No |
-| `endCapId` |[`string`](/docs/kcl/types/string)| The id of the extrusion end cap | No |
-| `edgeCuts` |`[` [`EdgeCut`](/docs/kcl/types/EdgeCut) `]`| Chamfers or fillets on this solid. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| The units of the solid. | No |
-| `sectional` |`boolean`| Is this a sectional solid? | No |
-
-
-----
-Data for an imported geometry.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `ImportedGeometry`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
-| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/KclNone.md b/docs/kcl/types/KclNone.md
deleted file mode 100644
index 1e7c7f8a4..000000000
--- a/docs/kcl/types/KclNone.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: "KclNone"
-excerpt: "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application)."
-layout: manual
----
-
-KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No |
-
-
diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md
deleted file mode 100644
index d999068a5..000000000
--- a/docs/kcl/types/KclValue.md
+++ /dev/null
@@ -1,326 +0,0 @@
----
-title: "KclValue"
-excerpt: "Any KCL value."
-layout: manual
----
-
-Any KCL value.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Uuid`| | No |
-| `value` |[`string`](/docs/kcl/types/string)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Bool`| | No |
-| `value` |`boolean`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Number`| | No |
-| `value` |[`number`](/docs/kcl/types/number)| | No |
-| `ty` |[`NumericType`](/docs/kcl/types/NumericType)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `String`| | No |
-| `value` |[`string`](/docs/kcl/types/string)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `MixedArray`| | No |
-| `value` |`[` [`KclValue`](/docs/kcl/types/KclValue) `]`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `HomArray`| | No |
-| `value` |`[` [`KclValue`](/docs/kcl/types/KclValue) `]`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Object`| | No |
-| `value` |`object`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`TagIdentifier`](/docs/kcl/types#tag-identifier)| | No |
-| `value` |[`string`](/docs/kcl/types/string)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No |
-| `value` |[`string`](/docs/kcl/types/string)| | No |
-| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No |
-| `start` |`integer`| | No |
-| `end` |`integer`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Plane`](/docs/kcl/types/Plane)| | No |
-| `value` |[`Plane`](/docs/kcl/types/Plane)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Face`](/docs/kcl/types/Face)| | No |
-| `value` |[`Face`](/docs/kcl/types/Face)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Sketch`](/docs/kcl/types/Sketch)| | No |
-| `value` |[`Sketch`](/docs/kcl/types/Sketch)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Solid`](/docs/kcl/types/Solid)| | No |
-| `value` |[`Solid`](/docs/kcl/types/Solid)| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`Helix`](/docs/kcl/types/Helix)| | No |
-| `value` |[`Helix`](/docs/kcl/types/Helix)| | No |
-
-
-----
-Data for an imported geometry.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `ImportedGeometry`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
-| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Function`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Module`| | No |
-| `value` |`integer`| Identifier of a source file. Uses a u32 to keep the size small. | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Type`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: [`KclNone`](/docs/kcl/types/KclNone)| | No |
-| `value` |[`KclNone`](/docs/kcl/types/KclNone)| KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application). | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/ModuleId.md b/docs/kcl/types/ModuleId.md
deleted file mode 100644
index 9ed25fcfe..000000000
--- a/docs/kcl/types/ModuleId.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: "ModuleId"
-excerpt: "Identifier of a source file. Uses a u32 to keep the size small."
-layout: manual
----
-
-Identifier of a source file. Uses a u32 to keep the size small.
-
-**Type:** `integer` (`uint32`)
-
-
-
-
-
-
-
diff --git a/docs/kcl/types/NumericType.md b/docs/kcl/types/NumericType.md
deleted file mode 100644
index ad7be7a57..000000000
--- a/docs/kcl/types/NumericType.md
+++ /dev/null
@@ -1,282 +0,0 @@
----
-title: "NumericType"
-excerpt: ""
-layout: manual
----
-
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Count`| | No |
-
-
-----
-A unit of length.
-
-**Type:** `object`
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Mm`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Cm`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `M`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Inches`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Feet`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Yards`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Unknown`| | No |
-
-
-----
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Length`| | No |
-
-
-----
-A unit of angle.
-
-**Type:** `object`
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Degrees`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Radians`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Unknown`| | No |
-
-
-----
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Angle`| | No |
-
-
-----
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Known`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Default`| | No |
-| `len` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `angle` |[`UnitAngle`](/docs/kcl/types/UnitAngle)| A unit of angle. | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Unknown`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Any`| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/Path.md b/docs/kcl/types/Path.md
deleted file mode 100644
index 859c07fad..000000000
--- a/docs/kcl/types/Path.md
+++ /dev/null
@@ -1,247 +0,0 @@
----
-title: "Path"
-excerpt: "A path."
-layout: manual
----
-
-A path.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-A path that goes to a point.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `ToPoint`| | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A arc that is tangential to the last path segment that goes to a point
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `TangentialArcTo`| | No |
-| `center` |`[number, number]`| the arc's center | No |
-| `ccw` |`boolean`| arc's direction | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A arc that is tangential to the last path segment
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `TangentialArc`| | No |
-| `center` |`[number, number]`| the arc's center | No |
-| `ccw` |`boolean`| arc's direction | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-a complete arc
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Circle`| | No |
-| `center` |`[number, number]`| the arc's center | No |
-| `radius` |[`number`](/docs/kcl/types/number)| the arc's radius | No |
-| `ccw` |`boolean`| arc's direction This is used to compute the tangential angle. | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A base path.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `CircleThreePoint`| | No |
-| `p1` |`[number, number]`| Point 1 of the circle | No |
-| `p2` |`[number, number]`| Point 2 of the circle | No |
-| `p3` |`[number, number]`| Point 3 of the circle | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A base path.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `ArcThreePoint`| | No |
-| `p1` |`[number, number]`| Point 1 of the arc (base on the end of previous segment) | No |
-| `p2` |`[number, number]`| Point 2 of the arc (interiorAbsolute kwarg) | No |
-| `p3` |`[number, number]`| Point 3 of the arc (endAbsolute kwarg) | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A path that is horizontal.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Horizontal`| | No |
-| `x` |[`number`](/docs/kcl/types/number)| The x coordinate. | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-An angled line to.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `AngledLineTo`| | No |
-| `x` |[`number`](/docs/kcl/types/number)| The x coordinate. | No |
-| `y` |[`number`](/docs/kcl/types/number)| The y coordinate. | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A base path.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Base`| | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-A circular arc, not necessarily tangential to the current point.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Arc`| | No |
-| `center` |`[number, number]`| Center of the circle that this arc is drawn on. | No |
-| `radius` |[`number`](/docs/kcl/types/number)| Radius of the circle that this arc is drawn on. | No |
-| `ccw` |`boolean`| True if the arc is counterclockwise. | No |
-| `from` |`[number, number]`| The from point. | No |
-| `to` |`[number, number]`| The to point. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No |
-| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/PlaneData.md b/docs/kcl/types/PlaneData.md
deleted file mode 100644
index 205ee2865..000000000
--- a/docs/kcl/types/PlaneData.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-title: "PlaneData"
-excerpt: "Orientation data that can be used to construct a plane, not a plane in itself."
-layout: manual
----
-
-Orientation data that can be used to construct a plane, not a plane in itself.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-The XY plane.
-
-**enum:** `XY`
-
-
-
-
-
-
-
-
-----
-The opposite side of the XY plane.
-
-**enum:** `-XY`
-
-
-
-
-
-
-
-
-----
-The XZ plane.
-
-**enum:** `XZ`
-
-
-
-
-
-
-
-
-----
-The opposite side of the XZ plane.
-
-**enum:** `-XZ`
-
-
-
-
-
-
-
-
-----
-The YZ plane.
-
-**enum:** `YZ`
-
-
-
-
-
-
-
-
-----
-The opposite side of the YZ plane.
-
-**enum:** `-YZ`
-
-
-
-
-
-
-
-
-----
-A defined plane.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `plane` |[`PlaneInfo`](/docs/kcl/types/PlaneInfo)| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/PlaneInfo.md b/docs/kcl/types/PlaneInfo.md
deleted file mode 100644
index b71c72ecd..000000000
--- a/docs/kcl/types/PlaneInfo.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "PlaneInfo"
-excerpt: ""
-layout: manual
----
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No |
-| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's X axis be? | No |
-| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's Y axis be? | No |
-
-
diff --git a/docs/kcl/types/PlaneType.md b/docs/kcl/types/PlaneType.md
deleted file mode 100644
index e2ccc50de..000000000
--- a/docs/kcl/types/PlaneType.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: "PlaneType"
-excerpt: "Type for a plane."
-layout: manual
----
-
-Type for a plane.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**enum:** `XY`, `XZ`, `YZ`
-
-
-
-
-
-
-
-
-----
-A custom plane.
-
-**enum:** `Custom`
-
-
-
-
-
-
-
-
-----
-A custom plane which has not been sent to the engine. It must be sent before it is used.
-
-**enum:** `Uninit`
-
-
-
-
-
-
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/Point2d.md b/docs/kcl/types/Point2d.md
deleted file mode 100644
index 74ca70469..000000000
--- a/docs/kcl/types/Point2d.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "std::types::Point2d"
-excerpt: "A point in two dimensional space."
-layout: manual
----
-
-A point in two dimensional space.
-
-```kcl
-type [Point2d](/docs/kcl/types/Point2d) = [[number](/docs/kcl/types/number)(Length); 2]
-```
-
-[`Point2d`](/docs/kcl/types/Point2d) is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value
-with type [`Point2d`](/docs/kcl/types/Point2d), use an array, e.g., `[0, 0]` or `[5.0, 3.14]`.
-
-
-
diff --git a/docs/kcl/types/Point3d.md b/docs/kcl/types/Point3d.md
deleted file mode 100644
index af4efdcfd..000000000
--- a/docs/kcl/types/Point3d.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "std::types::Point3d"
-excerpt: "A point in three dimensional space."
-layout: manual
----
-
-A point in three dimensional space.
-
-```kcl
-type [Point3d](/docs/kcl/types/Point3d) = [[number](/docs/kcl/types/number)(Length); 3]
-```
-
-[`Point3d`](/docs/kcl/types/Point3d) is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value
-with type [`Point3d`](/docs/kcl/types/Point3d), use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`.
-
-
-
diff --git a/docs/kcl/types/SketchData.md b/docs/kcl/types/SketchData.md
deleted file mode 100644
index a727c58a9..000000000
--- a/docs/kcl/types/SketchData.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: "SketchData"
-excerpt: "Data for start sketch on. You can start a sketch on a plane or an solid."
-layout: manual
----
-
-Data for start sketch on. You can start a sketch on a plane or an solid.
-
-
-
-
-**This schema accepts any of the following:**
-
-Orientation data that can be used to construct a plane, not a plane in itself.
-
-[`PlaneData`](/docs/kcl/types/PlaneData)
-
-
-
-
-
-
-
-
-----
-
-[`Plane`](/docs/kcl/types/Plane)
-
-
-
-
-
-
-
-
-----
-
-[`Solid`](/docs/kcl/types/Solid)
-
-
-
-
-
-
-
-
-----
-
-
-
-
-
diff --git a/docs/kcl/types/SketchOrSurface.md b/docs/kcl/types/SketchOrSurface.md
deleted file mode 100644
index 1fc748b53..000000000
--- a/docs/kcl/types/SketchOrSurface.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "SketchOrSurface"
-excerpt: "A sketch surface or a sketch."
-layout: manual
----
-
-A sketch surface or a sketch.
-
-
-
-
-**This schema accepts any of the following:**
-
-A sketch type.
-
-[`SketchSurface`](/docs/kcl/types/SketchSurface)
-
-
-
-
-
-
-
-
-----
-
-[`Sketch`](/docs/kcl/types/Sketch)
-
-
-
-
-
-
-
-
-----
-
-
-
-
-
diff --git a/docs/kcl/types/SketchSurface.md b/docs/kcl/types/SketchSurface.md
deleted file mode 100644
index 534081971..000000000
--- a/docs/kcl/types/SketchSurface.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: "SketchSurface"
-excerpt: "A sketch type."
-layout: manual
----
-
-A sketch type.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `plane`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the plane. | No |
-| `artifactId` |[`string`](/docs/kcl/types/string)| The artifact ID. | No |
-| `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| Type for a plane. | No |
-| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No |
-| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's X axis be? | No |
-| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane's Y axis be? | No |
-
-
-----
-A face.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `face`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The id of the face. | No |
-| `artifactId` |[`string`](/docs/kcl/types/string)| The artifact ID. | No |
-| `value` |[`string`](/docs/kcl/types/string)| The tag of the face. | No |
-| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's X axis be? | No |
-| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's Y axis be? | No |
-| `solid` |[`Solid`](/docs/kcl/types/Solid)| The solid the face is on. | No |
-| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/SolidOrImportedGeometry.md b/docs/kcl/types/SolidOrImportedGeometry.md
deleted file mode 100644
index 5944c7ba5..000000000
--- a/docs/kcl/types/SolidOrImportedGeometry.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: "SolidOrImportedGeometry"
-excerpt: "Data for a solid or an imported geometry."
-layout: manual
----
-
-Data for a solid or an imported geometry.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-Data for an imported geometry.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `importedGeometry`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
-| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
-
-
-----
-
-**Type:** `[object, array]`
-
-`[` [`Solid`](/docs/kcl/types/Solid) `]`
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `solidSet`| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/SolidOrSketchOrImportedGeometry.md b/docs/kcl/types/SolidOrSketchOrImportedGeometry.md
deleted file mode 100644
index 4da6545b1..000000000
--- a/docs/kcl/types/SolidOrSketchOrImportedGeometry.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: "SolidOrSketchOrImportedGeometry"
-excerpt: "Data for a solid, sketch, or an imported geometry."
-layout: manual
----
-
-Data for a solid, sketch, or an imported geometry.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-Data for an imported geometry.
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `importedGeometry`| | No |
-| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
-| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
-
-
-----
-
-**Type:** `[object, array]`
-
-`[` [`Solid`](/docs/kcl/types/Solid) `]`
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `solidSet`| | No |
-
-
-----
-
-**Type:** `[object, array]`
-
-`[` [`Sketch`](/docs/kcl/types/Sketch) `]`
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `sketchSet`| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/StartOrEnd.md b/docs/kcl/types/StartOrEnd.md
deleted file mode 100644
index 6e8ed9329..000000000
--- a/docs/kcl/types/StartOrEnd.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "StartOrEnd"
-excerpt: ""
-layout: manual
----
-
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-The start face as in before you extruded. This could also be known as the bottom face. But we do not call it bottom because it would be the top face if you extruded it in the opposite direction or flipped the camera.
-
-**enum:** `start`
-
-
-
-
-
-
-
-
-----
-The end face after you extruded. This could also be known as the top face. But we do not call it top because it would be the bottom face if you extruded it in the opposite direction or flipped the camera.
-
-**enum:** `end`
-
-
-
-
-
-
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/SweepPath.md b/docs/kcl/types/SweepPath.md
deleted file mode 100644
index b8e7e0865..000000000
--- a/docs/kcl/types/SweepPath.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "SweepPath"
-excerpt: "A path to sweep along."
-layout: manual
----
-
-A path to sweep along.
-
-
-
-
-**This schema accepts any of the following:**
-
-
-[`Sketch`](/docs/kcl/types/Sketch)
-
-
-
-
-
-
-
-
-----
-
-[`Helix`](/docs/kcl/types/Helix)
-
-
-
-
-
-
-
-
-----
-
-
-
-
-
diff --git a/docs/kcl/types/UnitAngle.md b/docs/kcl/types/UnitAngle.md
deleted file mode 100644
index 09a6aa892..000000000
--- a/docs/kcl/types/UnitAngle.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: "UnitAngle"
-excerpt: "A unit of angle."
-layout: manual
----
-
-A unit of angle.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Degrees`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Radians`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Unknown`| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/UnitLen.md b/docs/kcl/types/UnitLen.md
deleted file mode 100644
index 5e00e5c39..000000000
--- a/docs/kcl/types/UnitLen.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: "UnitLen"
-excerpt: "A unit of length."
-layout: manual
----
-
-A unit of length.
-
-
-
-
-
-**This schema accepts exactly one of the following:**
-
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Mm`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Cm`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `M`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Inches`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Feet`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Yards`| | No |
-
-
-----
-
-**Type:** `object`
-
-
-
-
-
-## Properties
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-| `type` |enum: `Unknown`| | No |
-
-
-----
-
-
-
-
diff --git a/docs/kcl/types/Axis2d.md b/docs/kcl/types/std-types-Axis2d.md
similarity index 100%
rename from docs/kcl/types/Axis2d.md
rename to docs/kcl/types/std-types-Axis2d.md
diff --git a/docs/kcl/types/Axis3d.md b/docs/kcl/types/std-types-Axis3d.md
similarity index 100%
rename from docs/kcl/types/Axis3d.md
rename to docs/kcl/types/std-types-Axis3d.md
diff --git a/docs/kcl/types/Edge.md b/docs/kcl/types/std-types-Edge.md
similarity index 100%
rename from docs/kcl/types/Edge.md
rename to docs/kcl/types/std-types-Edge.md
diff --git a/docs/kcl/types/Face.md b/docs/kcl/types/std-types-Face.md
similarity index 100%
rename from docs/kcl/types/Face.md
rename to docs/kcl/types/std-types-Face.md
diff --git a/docs/kcl/types/Helix.md b/docs/kcl/types/std-types-Helix.md
similarity index 100%
rename from docs/kcl/types/Helix.md
rename to docs/kcl/types/std-types-Helix.md
diff --git a/docs/kcl/types/Plane.md b/docs/kcl/types/std-types-Plane.md
similarity index 100%
rename from docs/kcl/types/Plane.md
rename to docs/kcl/types/std-types-Plane.md
diff --git a/docs/kcl/types/std-types-Point2d.md b/docs/kcl/types/std-types-Point2d.md
new file mode 100644
index 000000000..ebeb4a3dc
--- /dev/null
+++ b/docs/kcl/types/std-types-Point2d.md
@@ -0,0 +1,17 @@
+---
+title: "std::types::Point2d"
+excerpt: "A point in two dimensional space."
+layout: manual
+---
+
+A point in two dimensional space.
+
+```kcl
+type Point2d = [number(Length); 2]
+```
+
+[`Point2d`](/docs/kcl/types/std-types-Point2d) is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value
+with type [`Point2d`](/docs/kcl/types/std-types-Point2d), use an array, e.g., `[0, 0]` or `[5.0, 3.14]`.
+
+
+
diff --git a/docs/kcl/types/std-types-Point3d.md b/docs/kcl/types/std-types-Point3d.md
new file mode 100644
index 000000000..ea23e7c86
--- /dev/null
+++ b/docs/kcl/types/std-types-Point3d.md
@@ -0,0 +1,17 @@
+---
+title: "std::types::Point3d"
+excerpt: "A point in three dimensional space."
+layout: manual
+---
+
+A point in three dimensional space.
+
+```kcl
+type Point3d = [number(Length); 3]
+```
+
+[`Point3d`](/docs/kcl/types/std-types-Point3d) is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value
+with type [`Point3d`](/docs/kcl/types/std-types-Point3d), use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`.
+
+
+
diff --git a/docs/kcl/types/Sketch.md b/docs/kcl/types/std-types-Sketch.md
similarity index 99%
rename from docs/kcl/types/Sketch.md
rename to docs/kcl/types/std-types-Sketch.md
index c0cd6408d..5f3368955 100644
--- a/docs/kcl/types/Sketch.md
+++ b/docs/kcl/types/std-types-Sketch.md
@@ -17,7 +17,7 @@ mySketch = startSketchOn(XY)
|> close()
```
-The `mySketch` variable will be an executed [`Sketch`](/docs/kcl/types/Sketch) object. Executed being past
+The `mySketch` variable will be an executed [`Sketch`](/docs/kcl/types/std-types-Sketch) object. Executed being past
tense, because the engine has already executed the commands to create the sketch.
The previous sketch commands will never be executed again, in this case.
diff --git a/docs/kcl/types/Solid.md b/docs/kcl/types/std-types-Solid.md
similarity index 99%
rename from docs/kcl/types/Solid.md
rename to docs/kcl/types/std-types-Solid.md
index 888483e11..c27885419 100644
--- a/docs/kcl/types/Solid.md
+++ b/docs/kcl/types/std-types-Solid.md
@@ -18,7 +18,7 @@ myPart = startSketchOn(XY)
|> extrude(length = 6)
```
-The `myPart` variable will be an executed [`Solid`](/docs/kcl/types/Solid) object. Executed being past
+The `myPart` variable will be an executed [`Solid`](/docs/kcl/types/std-types-Solid) object. Executed being past
tense, because the engine has already executed the commands to create the solid.
The previous solid commands will never be executed again, in this case.
diff --git a/docs/kcl/types/std-types-any.md b/docs/kcl/types/std-types-any.md
new file mode 100644
index 000000000..6aba5d838
--- /dev/null
+++ b/docs/kcl/types/std-types-any.md
@@ -0,0 +1,12 @@
+---
+title: "any"
+excerpt: "Any value."
+layout: manual
+---
+
+Any value.
+
+
+
+
+
diff --git a/docs/kcl/types/bool.md b/docs/kcl/types/std-types-bool.md
similarity index 100%
rename from docs/kcl/types/bool.md
rename to docs/kcl/types/std-types-bool.md
diff --git a/docs/kcl/types/number.md b/docs/kcl/types/std-types-number.md
similarity index 100%
rename from docs/kcl/types/number.md
rename to docs/kcl/types/std-types-number.md
diff --git a/docs/kcl/types/string.md b/docs/kcl/types/std-types-string.md
similarity index 100%
rename from docs/kcl/types/string.md
rename to docs/kcl/types/std-types-string.md
diff --git a/docs/kcl/types/tag.md b/docs/kcl/types/std-types-tag.md
similarity index 96%
rename from docs/kcl/types/tag.md
rename to docs/kcl/types/std-types-tag.md
index 747bf2f5b..ad6efad64 100644
--- a/docs/kcl/types/tag.md
+++ b/docs/kcl/types/std-types-tag.md
@@ -62,8 +62,8 @@ fn rect(origin) {
|> close()
}
-rect([0, 0])
-rect([20, 0])
+rect(origin = [0, 0])
+rect(origin = [20, 0])
```
Those tags would only be available in the `rect` function and not globally.
@@ -90,8 +90,8 @@ fn rect(origin) {
|> close()
}
-rect([0, 0])
-myRect = rect([20, 0])
+rect(origin = [0, 0])
+myRect = rect(origin = [20, 0])
myRect
|> extrude(length = 10)
diff --git a/docs/kcl/union.md b/docs/kcl/union.md
index f184bbbf0..85920bc9d 100644
--- a/docs/kcl/union.md
+++ b/docs/kcl/union.md
@@ -10,9 +10,9 @@ Union two or more solids into a single solid.
```kcl
union(
- solids: [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid)),
- tolerance?: [number](/docs/kcl/types/number),
-): [[[Solid](/docs/kcl/types/Solid)]](/docs/kcl/types/[Solid](/docs/kcl/types/Solid))
+ solids: [Solid],
+ tolerance?: number,
+): [Solid]
```
@@ -20,12 +20,12 @@ union(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to union. | Yes |
-| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the union operation. | No |
+| `solids` | [`[Solid]`](/docs/kcl/types/std-types-Solid) | The solids to union. | Yes |
+| `tolerance` | [`number`](/docs/kcl/types/std-types-number) | The tolerance to use for the union operation. | No |
### Returns
-[`[Solid]`](/docs/kcl/types/Solid)
+[`[Solid]`](/docs/kcl/types/std-types-Solid)
### Examples
@@ -44,8 +44,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
unionedPart = union([part001, part002])
@@ -69,8 +69,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
// This is the equivalent of: union([part001, part002])
@@ -95,8 +95,8 @@ fn cube(center, size) {
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
// This is the equivalent of: union([part001, part002])
diff --git a/docs/kcl/xLine.md b/docs/kcl/xLine.md
index fa1f8430f..e927ce01c 100644
--- a/docs/kcl/xLine.md
+++ b/docs/kcl/xLine.md
@@ -10,11 +10,11 @@ Draw a line relative to the current origin to a specified distance away from the
```kcl
xLine(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- length?: [number](/docs/kcl/types/number),
- endAbsolute?: [number](/docs/kcl/types/number),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ length?: number,
+ endAbsolute?: number,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -22,14 +22,14 @@ xLine(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `length` | [`number`](/docs/kcl/types/number) | How far away along the X axis should this line go? Incompatible with `endAbsolute`. | No |
-| `endAbsolute` | [`number`](/docs/kcl/types/number) | Which absolute X value should this line go to? Incompatible with `length`. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `length` | [`number`](/docs/kcl/types/std-types-number) | How far away along the X axis should this line go? Incompatible with `endAbsolute`. | No |
+| `endAbsolute` | [`number`](/docs/kcl/types/std-types-number) | Which absolute X value should this line go to? Incompatible with `length`. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/docs/kcl/yLine.md b/docs/kcl/yLine.md
index 9ef57fb0f..5a60f5288 100644
--- a/docs/kcl/yLine.md
+++ b/docs/kcl/yLine.md
@@ -10,11 +10,11 @@ Draw a line relative to the current origin to a specified distance away from the
```kcl
yLine(
- sketch: [Sketch](/docs/kcl/types/Sketch),
- length?: [number](/docs/kcl/types/number),
- endAbsolute?: [number](/docs/kcl/types/number),
- tag?: [TagDeclarator](/docs/kcl/types#tag-declaration),
-): [Sketch](/docs/kcl/types/Sketch)
+ sketch: Sketch,
+ length?: number,
+ endAbsolute?: number,
+ tag?: TagDeclarator,
+): Sketch
```
@@ -22,14 +22,14 @@ yLine(
| Name | Type | Description | Required |
|----------|------|-------------|----------|
-| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes |
-| `length` | [`number`](/docs/kcl/types/number) | How far away along the Y axis should this line go? Incompatible with `endAbsolute`. | No |
-| `endAbsolute` | [`number`](/docs/kcl/types/number) | Which absolute Y value should this line go to? Incompatible with `length`. | No |
-| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No |
+| `sketch` | [`Sketch`](/docs/kcl/types/std-types-Sketch) | Which sketch should this path be added to? | Yes |
+| `length` | [`number`](/docs/kcl/types/std-types-number) | How far away along the Y axis should this line go? Incompatible with `endAbsolute`. | No |
+| `endAbsolute` | [`number`](/docs/kcl/types/std-types-number) | Which absolute Y value should this line go to? Incompatible with `length`. | No |
+| [`tag`](/docs/kcl/types/std-types-tag) | [`TagDeclarator`](/docs/kcl/types#TagDeclarator) | Create a new tag which refers to this line | No |
### Returns
-[`Sketch`](/docs/kcl/types/Sketch)
+[`Sketch`](/docs/kcl/types/std-types-Sketch)
### Examples
diff --git a/e2e/playwright/app-header-tests.spec.ts b/e2e/playwright/app-header-tests.spec.ts
index 45cfa6614..96f8eb9b9 100644
--- a/e2e/playwright/app-header-tests.spec.ts
+++ b/e2e/playwright/app-header-tests.spec.ts
@@ -1,4 +1,6 @@
import { expect, test } from '@e2e/playwright/zoo-test'
+import { join } from 'path'
+import * as fsp from 'fs/promises'
test.describe('Electron app header tests', () => {
test(
@@ -43,4 +45,33 @@ test.describe('Electron app header tests', () => {
await expect(userSettingsButton).toHaveText(text)
}
)
+
+ test('Share button is disabled when imports are present', async ({
+ page,
+ context,
+ homePage,
+ toolbar,
+ }) => {
+ const projectName = 'share-disabled-for-imports'
+ await context.folderSetupFn(async (dir) => {
+ const testDir = join(dir, projectName)
+ await fsp.mkdir(testDir, { recursive: true })
+
+ await fsp.writeFile(join(testDir, 'deps.kcl'), 'export x = 42')
+ await fsp.writeFile(join(testDir, 'main.kcl'), 'import x from "deps.kcl"')
+ })
+
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.openProject(projectName)
+ const shareButton = page.getByTestId('share-button')
+
+ // Open deps.kcl (which has no imports) and verify share button is enabled
+ await toolbar.fileTreeBtn.click()
+ await toolbar.openFile('deps.kcl')
+ await expect(shareButton).not.toBeDisabled()
+
+ // Open main.kcl (which has an import) and verify share button is disabled
+ await toolbar.openFile('main.kcl')
+ await expect(shareButton).toBeDisabled()
+ })
})
diff --git a/e2e/playwright/fixtures/homePageFixture.ts b/e2e/playwright/fixtures/homePageFixture.ts
index 437651616..4878e5fbb 100644
--- a/e2e/playwright/fixtures/homePageFixture.ts
+++ b/e2e/playwright/fixtures/homePageFixture.ts
@@ -24,7 +24,6 @@ export class HomePageFixture {
projectTextName!: Locator
sortByDateBtn!: Locator
sortByNameBtn!: Locator
- tutorialBtn!: Locator
constructor(page: Page) {
this.page = page
@@ -44,7 +43,6 @@ export class HomePageFixture {
this.sortByDateBtn = this.page.getByTestId('home-sort-by-modified')
this.sortByNameBtn = this.page.getByTestId('home-sort-by-name')
- this.tutorialBtn = this.page.getByTestId('home-tutorial-button')
}
private _serialiseSortBy = async (): Promise<
diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts
index ae51d659a..ed7bffe79 100644
--- a/e2e/playwright/fixtures/toolbarFixture.ts
+++ b/e2e/playwright/fixtures/toolbarFixture.ts
@@ -17,8 +17,6 @@ type LengthUnitLabel = (typeof baseUnitLabels)[keyof typeof baseUnitLabels]
export class ToolbarFixture {
public page: Page
- projectName!: Locator
- fileName!: Locator
extrudeButton!: Locator
loftButton!: Locator
sweepButton!: Locator
@@ -55,8 +53,6 @@ export class ToolbarFixture {
constructor(page: Page) {
this.page = page
- this.projectName = page.getByTestId('app-header-project-name')
- this.fileName = page.getByTestId('app-header-file-name')
this.extrudeButton = page.getByTestId('extrude')
this.loftButton = page.getByTestId('loft')
this.sweepButton = page.getByTestId('sweep')
diff --git a/e2e/playwright/native-file-menu.spec.ts b/e2e/playwright/native-file-menu.spec.ts
index 5c6dc4d72..1097f8ecf 100644
--- a/e2e/playwright/native-file-menu.spec.ts
+++ b/e2e/playwright/native-file-menu.spec.ts
@@ -446,11 +446,11 @@ test.describe(
// Core dump and refresh magic number timeout
await page.waitForTimeout(7000)
const actual = page.getByText(
- 'No Projects found, ready to make your first one?'
+ 'No projects found, ready to make your first one?'
)
await expect(actual).toBeVisible()
})
- test('Home.Help.Replay onboarding tutorial', async ({
+ test('Home.Help.Reset onboarding', async ({
tronApp,
cmdBar,
page,
@@ -464,7 +464,7 @@ test.describe(
await tronApp.electron.evaluate(async ({ app }) => {
if (!app || !app.applicationMenu) return false
const menu = app.applicationMenu.getMenuItemById(
- 'Help.Replay onboarding tutorial'
+ 'Help.Reset onboarding'
)
if (!menu) {
return false
@@ -2339,7 +2339,7 @@ test.describe(
await scene.connectionEstablished()
await expect(toolbar.startSketchBtn).toBeVisible()
})
- test('Modeling.Help.Replay onboarding tutorial', async ({
+ test('Modeling.Help.Reset onboarding', async ({
tronApp,
cmdBar,
page,
@@ -2358,7 +2358,7 @@ test.describe(
await tronApp.electron.evaluate(async ({ app }) => {
if (!app || !app.applicationMenu) fail()
const menu = app.applicationMenu.getMenuItemById(
- 'Help.Replay onboarding tutorial'
+ 'Help.Reset onboarding'
)
if (!menu) fail()
menu.click()
diff --git a/e2e/playwright/onboarding-tests.spec.ts b/e2e/playwright/onboarding-tests.spec.ts
index 6febaffc8..a2e776c56 100644
--- a/e2e/playwright/onboarding-tests.spec.ts
+++ b/e2e/playwright/onboarding-tests.spec.ts
@@ -1,175 +1,560 @@
+import { join } from 'path'
+import { bracket } from '@e2e/playwright/fixtures/bracket'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+import fsp from 'fs/promises'
+
+import { expectPixelColor } from '@e2e/playwright/fixtures/sceneFixture'
+import {
+ TEST_SETTINGS_KEY,
+ TEST_SETTINGS_ONBOARDING_EXPORT,
+ TEST_SETTINGS_ONBOARDING_START,
+ TEST_SETTINGS_ONBOARDING_USER_MENU,
+} from '@e2e/playwright/storageStates'
+import {
+ createProject,
+ executorInputPath,
+ getUtils,
+ settingsToToml,
+} from '@e2e/playwright/test-utils'
import { expect, test } from '@e2e/playwright/zoo-test'
+// Because our default test settings have the onboardingStatus set to 'dismissed',
+// we must set it to empty for the tests where we want to see the onboarding immediately.
+
test.describe('Onboarding tests', () => {
- test('Desktop onboarding flow works', async ({
+ test('Onboarding code is shown in the editor', async ({
page,
homePage,
- toolbar,
- editor,
- scene,
tronApp,
}) => {
if (!tronApp) {
fail()
}
-
- // Because our default test settings have the onboardingStatus set to 'dismissed',
- // we must set it to empty for the tests where we want to see the onboarding UI.
await tronApp.cleanProjectDir({
app: {
onboarding_status: '',
},
})
- const bracketComment = '// Shelf Bracket'
- const tutorialWelcomHeading = page.getByText(
- 'Welcome to Design Studio! This'
- )
- const nextButton = page.getByTestId('onboarding-next')
- const prevButton = page.getByTestId('onboarding-prev')
- const userMenuButton = toolbar.userSidebarButton
- const userMenuSettingsButton = page.getByRole('button', {
- name: 'User settings',
- })
- const settingsHeading = page.getByRole('heading', {
- name: 'Settings',
- exact: true,
- })
- const restartOnboardingSettingsButton = page.getByRole('button', {
+ const u = await getUtils(page)
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.goToModelingScene()
+
+ // Test that the onboarding pane loaded
+ await expect(page.getByText('Welcome to Design Studio! This')).toBeVisible()
+
+ // Test that the onboarding pane loaded
+ await expect(page.getByText('Welcome to Design Studio! This')).toBeVisible()
+
+ // *and* that the code is shown in the editor
+ await expect(page.locator('.cm-content')).toContainText('// Shelf Bracket')
+
+ // Make sure the model loaded
+ const XYPlanePoint = { x: 774, y: 116 } as const
+ const modelColor: [number, number, number] = [45, 45, 45]
+ await page.mouse.move(XYPlanePoint.x, XYPlanePoint.y)
+ expect(await u.getGreatestPixDiff(XYPlanePoint, modelColor)).toBeLessThan(8)
+ })
+
+ test(
+ 'Desktop: fresh onboarding executes and loads',
+ {
+ tag: '@electron',
+ },
+ async ({ page, tronApp, scene }) => {
+ if (!tronApp) {
+ fail()
+ }
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '',
+ },
+ })
+
+ const viewportSize = { width: 1200, height: 500 }
+ await page.setBodyDimensions(viewportSize)
+
+ await test.step(`Create a project and open to the onboarding`, async () => {
+ await createProject({ name: 'project-link', page })
+ await test.step(`Ensure the engine connection works by testing the sketch button`, async () => {
+ await scene.connectionEstablished()
+ })
+ })
+
+ await test.step(`Ensure we see the onboarding stuff`, async () => {
+ // Test that the onboarding pane loaded
+ await expect(
+ page.getByText('Welcome to Design Studio! This')
+ ).toBeVisible()
+
+ // *and* that the code is shown in the editor
+ await expect(page.locator('.cm-content')).toContainText(
+ '// Shelf Bracket'
+ )
+
+ // TODO: jess make less shit
+ // Make sure the model loaded
+ //const XYPlanePoint = { x: 986, y: 522 } as const
+ //const modelColor: [number, number, number] = [76, 76, 76]
+ //await page.mouse.move(XYPlanePoint.x, XYPlanePoint.y)
+
+ //await expectPixelColor(page, modelColor, XYPlanePoint, 8)
+ })
+ }
+ )
+
+ test('Code resets after confirmation', async ({
+ page,
+ homePage,
+ tronApp,
+ scene,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+ await tronApp.cleanProjectDir()
+
+ const initialCode = `sketch001 = startSketchOn(XZ)`
+
+ // Load the page up with some code so we see the confirmation warning
+ // when we go to replay onboarding
+ await page.addInitScript((code) => {
+ localStorage.setItem('persistCode', code)
+ }, initialCode)
+
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.goToModelingScene()
+ await scene.connectionEstablished()
+
+ // Replay the onboarding
+ await page.getByRole('link', { name: 'Settings' }).last().click()
+ const replayButton = page.getByRole('button', {
name: 'Replay onboarding',
})
- const helpMenuButton = page.getByRole('button', {
- name: 'Help and resources',
+ await expect(replayButton).toBeVisible()
+ await replayButton.click()
+
+ // Ensure we see the warning, and that the code has not yet updated
+ await expect(page.getByText('Would you like to create')).toBeVisible()
+ await expect(page.locator('.cm-content')).toHaveText(initialCode)
+
+ const nextButton = page.getByTestId('onboarding-next')
+ await nextButton.hover()
+ await nextButton.click()
+
+ // Ensure we see the introduction and that the code has been reset
+ await expect(page.getByText('Welcome to Design Studio!')).toBeVisible()
+ await expect(page.locator('.cm-content')).toContainText('// Shelf Bracket')
+
+ // There used to be old code here that checked if we stored the reset
+ // code into localStorage but that isn't the case on desktop. It gets
+ // saved to the file system, which we have other tests for.
+ })
+
+ test('Click through each onboarding step and back', async ({
+ context,
+ page,
+ homePage,
+ tronApp,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '',
+ },
})
- const helpMenuRestartOnboardingButton = page.getByRole('button', {
- name: 'Replay onboarding tutorial',
- })
- const postDismissToast = page.getByText(
- 'Click the question mark in the lower-right corner if you ever want to redo the tutorial!'
+ // Override beforeEach test setup
+ await context.addInitScript(
+ async ({ settingsKey, settings }) => {
+ // Give no initial code, so that the onboarding start is shown immediately
+ localStorage.setItem('persistCode', '')
+ localStorage.setItem(settingsKey, settings)
+ },
+ {
+ settingsKey: TEST_SETTINGS_KEY,
+ settings: settingsToToml({
+ settings: TEST_SETTINGS_ONBOARDING_START,
+ }),
+ }
)
- await test.step('Test initial home page view, showing a tutorial button', async () => {
- await expect(homePage.tutorialBtn).toBeVisible()
- await homePage.expectState({
- projectCards: [],
- sortBy: 'last-modified-desc',
- })
+ await page.setBodyDimensions({ width: 1200, height: 1080 })
+ await homePage.goToModelingScene()
+
+ // Test that the onboarding pane loaded
+ await expect(page.getByText('Welcome to Design Studio! This')).toBeVisible()
+
+ const nextButton = page.getByTestId('onboarding-next')
+ const prevButton = page.getByTestId('onboarding-prev')
+
+ while ((await nextButton.innerText()) !== 'Finish') {
+ await nextButton.hover()
+ await nextButton.click()
+ }
+
+ while ((await prevButton.innerText()) !== 'Dismiss') {
+ await prevButton.hover()
+ await prevButton.click()
+ }
+
+ // Dismiss the onboarding
+ await prevButton.hover()
+ await prevButton.click()
+
+ // Test that the onboarding pane is gone
+ await expect(page.getByTestId('onboarding-content')).not.toBeVisible()
+ await expect.poll(() => page.url()).not.toContain('/onboarding')
+ })
+
+ test('Onboarding redirects and code updating', async ({
+ context,
+ page,
+ homePage,
+ tronApp,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '/export',
+ },
})
- await test.step('Create a blank project and verify no onboarding chrome is shown', async () => {
- await homePage.goToModelingScene()
- await expect(toolbar.projectName).toContainText('testDefault')
- await expect(tutorialWelcomHeading).not.toBeVisible()
- await editor.expectEditor.toContain('@settings(defaultLengthUnit = in)', {
- shouldNormalise: true,
- })
- await scene.connectionEstablished()
- await expect(toolbar.startSketchBtn).toBeEnabled({ timeout: 15_000 })
+ const originalCode = 'sigmaAllow = 15000'
+
+ // Override beforeEach test setup
+ await context.addInitScript(
+ async ({ settingsKey, settings, code }) => {
+ // Give some initial code, so we can test that it's cleared
+ localStorage.setItem('persistCode', code)
+ localStorage.setItem(settingsKey, settings)
+ },
+ {
+ settingsKey: TEST_SETTINGS_KEY,
+ settings: settingsToToml({
+ settings: TEST_SETTINGS_ONBOARDING_EXPORT,
+ }),
+ code: originalCode,
+ }
+ )
+
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.goToModelingScene()
+
+ // Test that the redirect happened
+ await expect.poll(() => page.url()).toContain('/onboarding/export')
+
+ // Test that you come back to this page when you refresh
+ await page.reload()
+ await expect.poll(() => page.url()).toContain('/onboarding/export')
+
+ // Test that the code changes when you advance to the next step
+ await page.getByTestId('onboarding-next').hover()
+ await page.getByTestId('onboarding-next').click()
+
+ // Test that the onboarding pane loaded
+ const title = page.locator('[data-testid="onboarding-content"]')
+ await expect(title).toBeAttached()
+
+ await expect(page.locator('.cm-content')).not.toHaveText(originalCode)
+
+ // Test that the code is not empty when you click on the next step
+ await page.locator('[data-testid="onboarding-next"]').hover()
+ await page.locator('[data-testid="onboarding-next"]').click()
+ await expect(page.locator('.cm-content')).toHaveText(/.+/)
+ })
+
+ test('Onboarding code gets reset to demo on Interactive Numbers step', async ({
+ page,
+ homePage,
+ tronApp,
+ editor,
+ toolbar,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '/parametric-modeling',
+ },
})
- await test.step('Go home and verify we still see the tutorial button, then begin it.', async () => {
- await toolbar.logoLink.click()
- await expect(homePage.tutorialBtn).toBeVisible()
- await homePage.expectState({
- projectCards: [
- {
- title: 'testDefault',
- fileCount: 1,
- },
- ],
- sortBy: 'last-modified-desc',
- })
- await homePage.tutorialBtn.click()
+ const badCode = `// This is bad code we shouldn't see`
+
+ await page.setBodyDimensions({ width: 1200, height: 1080 })
+ await homePage.goToModelingScene()
+
+ await expect
+ .poll(() => page.url())
+ .toContain(onboardingPaths.PARAMETRIC_MODELING)
+
+ // Check the code got reset on load
+ await toolbar.openPane('code')
+ await editor.expectEditor.toContain(bracket, {
+ shouldNormalise: true,
+ timeout: 10_000,
})
- // This is web-only.
- // TODO: write a new test just for the onboarding in browser
- // await test.step('Ensure the onboarding request toast appears', async () => {
- // await expect(page.getByTestId('onboarding-toast')).toBeVisible()
- // await page.getByTestId('onboarding-next').click()
- // })
-
- await test.step('Ensure we see the welcome screen in a new project', async () => {
- await expect(toolbar.projectName).toContainText('Tutorial Project 00')
- await expect(tutorialWelcomHeading).toBeVisible()
- await editor.expectEditor.toContain(bracketComment)
- await scene.connectionEstablished()
- await expect(toolbar.startSketchBtn).toBeEnabled({ timeout: 15_000 })
+ // Mess with the code again
+ await editor.replaceCode('', badCode)
+ await editor.expectEditor.toContain(badCode, {
+ shouldNormalise: true,
+ timeout: 10_000,
})
- await test.step('Test the clicking through the onboarding flow', async () => {
- await test.step('Going forward', async () => {
- while ((await nextButton.innerText()) !== 'Finish') {
- await nextButton.hover()
- await nextButton.click()
- }
- })
-
- await test.step('Going backward', async () => {
- while ((await prevButton.innerText()) !== 'Dismiss') {
- await prevButton.hover()
- await prevButton.click()
- }
- })
-
- // Dismiss the onboarding
- await test.step('Dismiss the onboarding', async () => {
- await prevButton.hover()
- await prevButton.click()
- await expect(page.getByTestId('onboarding-content')).not.toBeVisible()
- await expect(postDismissToast).toBeVisible()
- await expect.poll(() => page.url()).not.toContain('/onboarding')
- })
+ // Click to the next step
+ await page.locator('[data-testid="onboarding-next"]').hover()
+ await page.locator('[data-testid="onboarding-next"]').click()
+ await page.waitForURL('**' + onboardingPaths.INTERACTIVE_NUMBERS, {
+ waitUntil: 'domcontentloaded',
})
- await test.step('Resetting onboarding from inside project should always make a new one', async () => {
- await test.step('Reset onboarding from settings', async () => {
- await userMenuButton.click()
- await userMenuSettingsButton.click()
- await expect(settingsHeading).toBeVisible()
- await expect(restartOnboardingSettingsButton).toBeVisible()
- await restartOnboardingSettingsButton.click()
- })
-
- await test.step('Makes a new project', async () => {
- await expect(toolbar.projectName).toContainText('Tutorial Project 01')
- await expect(tutorialWelcomHeading).toBeVisible()
- await editor.expectEditor.toContain(bracketComment)
- await scene.connectionEstablished()
- await expect(toolbar.startSketchBtn).toBeEnabled({ timeout: 15_000 })
- })
-
- await test.step('Dismiss the onboarding', async () => {
- await postDismissToast.waitFor({ state: 'detached' })
- await page.keyboard.press('Escape')
- await expect(postDismissToast).toBeVisible()
- await expect(page.getByTestId('onboarding-content')).not.toBeVisible()
- await expect.poll(() => page.url()).not.toContain('/onboarding')
- })
- })
-
- await test.step('Resetting onboarding from home help menu makes a new project', async () => {
- await test.step('Go home and reset onboarding from lower-right help menu', async () => {
- await toolbar.logoLink.click()
- await expect(homePage.tutorialBtn).not.toBeVisible()
- await expect(
- homePage.projectCard.getByText('Tutorial Project 00')
- ).toBeVisible()
- await expect(
- homePage.projectCard.getByText('Tutorial Project 01')
- ).toBeVisible()
-
- await helpMenuButton.click()
- await helpMenuRestartOnboardingButton.click()
- })
-
- await test.step('Makes a new project', async () => {
- await expect(toolbar.projectName).toContainText('Tutorial Project 02')
- await expect(tutorialWelcomHeading).toBeVisible()
- await editor.expectEditor.toContain(bracketComment)
- await scene.connectionEstablished()
- await expect(toolbar.startSketchBtn).toBeEnabled({ timeout: 15_000 })
- })
+ // Check that the code has been reset
+ await editor.expectEditor.toContain(bracket, {
+ shouldNormalise: true,
+ timeout: 10_000,
})
})
+
+ // (lee) The two avatar tests are weird because even on main, we don't have
+ // anything to do with the avatar inside the onboarding test. Due to the
+ // low impact of an avatar not showing I'm changing this to fixme.
+ test('Avatar text updates depending on image load success', async ({
+ context,
+ page,
+ toolbar,
+ homePage,
+ tronApp,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '',
+ },
+ })
+
+ // Override beforeEach test setup
+ await context.addInitScript(
+ async ({ settingsKey, settings }) => {
+ localStorage.setItem(settingsKey, settings)
+ },
+ {
+ settingsKey: TEST_SETTINGS_KEY,
+ settings: settingsToToml({
+ settings: TEST_SETTINGS_ONBOARDING_USER_MENU,
+ }),
+ }
+ )
+
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.goToModelingScene()
+
+ // Test that the text in this step is correct
+ const avatarLocator = toolbar.userSidebarButton.locator('img')
+ const onboardingOverlayLocator = page
+ .getByTestId('onboarding-content')
+ .locator('div')
+ .nth(1)
+
+ // Expect the avatar to be visible and for the text to reference it
+ await expect(avatarLocator).toBeVisible()
+ await expect(onboardingOverlayLocator).toBeVisible()
+ await expect(onboardingOverlayLocator).toContainText('your avatar')
+
+ // This is to force the avatar to 404.
+ // For our test image (only triggers locally. on CI, it's Kurt's /
+ // gravatar image )
+ await page.route('/cat.jpg', async (route) => {
+ await route.fulfill({
+ status: 404,
+ contentType: 'text/plain',
+ body: 'Not Found!',
+ })
+ })
+
+ // 404 the CI avatar image
+ await page.route('https://lh3.googleusercontent.com/**', async (route) => {
+ await route.fulfill({
+ status: 404,
+ contentType: 'text/plain',
+ body: 'Not Found!',
+ })
+ })
+
+ await page.reload({ waitUntil: 'domcontentloaded' })
+
+ // Now expect the text to be different
+ await expect(avatarLocator).not.toBeVisible()
+ await expect(onboardingOverlayLocator).toBeVisible()
+ await expect(onboardingOverlayLocator).toContainText('the menu button')
+ })
+
+ test("Avatar text doesn't mention avatar when no avatar", async ({
+ context,
+ page,
+ toolbar,
+ homePage,
+ tronApp,
+ }) => {
+ if (!tronApp) {
+ fail()
+ }
+
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: '',
+ },
+ })
+ // Override beforeEach test setup
+ await context.addInitScript(
+ async ({ settingsKey, settings }) => {
+ localStorage.setItem(settingsKey, settings)
+ localStorage.setItem('FORCE_NO_IMAGE', 'FORCE_NO_IMAGE')
+ },
+ {
+ settingsKey: TEST_SETTINGS_KEY,
+ settings: settingsToToml({
+ settings: TEST_SETTINGS_ONBOARDING_USER_MENU,
+ }),
+ }
+ )
+
+ await page.setBodyDimensions({ width: 1200, height: 500 })
+ await homePage.goToModelingScene()
+
+ // Test that the text in this step is correct
+ const sidebar = toolbar.userSidebarButton
+ const avatar = sidebar.locator('img')
+ const onboardingOverlayLocator = page
+ .getByTestId('onboarding-content')
+ .locator('div')
+ .nth(1)
+
+ // Expect the avatar to be visible and for the text to reference it
+ await expect(avatar).not.toBeVisible()
+ await expect(onboardingOverlayLocator).toBeVisible()
+ await expect(onboardingOverlayLocator).toContainText('the menu button')
+
+ // Test we mention what else is in this menu for https://github.com/KittyCAD/modeling-app/issues/2939
+ // which doesn't deserver its own full test spun up
+ const userMenuFeatures = [
+ 'manage your account',
+ 'report a bug',
+ 'request a feature',
+ 'sign out',
+ ]
+ for (const feature of userMenuFeatures) {
+ await expect(onboardingOverlayLocator).toContainText(feature)
+ }
+ })
+})
+
+test('Restarting onboarding on desktop takes one attempt', async ({
+ context,
+ page,
+ toolbar,
+ tronApp,
+}) => {
+ if (!tronApp) {
+ fail()
+ }
+
+ await tronApp.cleanProjectDir({
+ app: {
+ onboarding_status: 'dismissed',
+ },
+ })
+
+ await context.folderSetupFn(async (dir) => {
+ const routerTemplateDir = join(dir, 'router-template-slate')
+ await fsp.mkdir(routerTemplateDir, { recursive: true })
+ await fsp.copyFile(
+ executorInputPath('router-template-slate.kcl'),
+ join(routerTemplateDir, 'main.kcl')
+ )
+ })
+
+ // Our constants
+ const u = await getUtils(page)
+ const projectCard = page.getByText('router-template-slate')
+ const helpMenuButton = page.getByRole('button', {
+ name: 'Help and resources',
+ })
+ const restartOnboardingButton = page.getByRole('button', {
+ name: 'Reset onboarding',
+ })
+ const nextButton = page.getByTestId('onboarding-next')
+
+ const tutorialProjectIndicator = page
+ .getByTestId('project-sidebar-toggle')
+ .filter({ hasText: 'Tutorial Project 00' })
+ const tutorialModalText = page.getByText('Welcome to Design Studio!')
+ const tutorialDismissButton = page.getByRole('button', { name: 'Dismiss' })
+ const userMenuButton = toolbar.userSidebarButton
+ const userMenuSettingsButton = page.getByRole('button', {
+ name: 'User settings',
+ })
+ const settingsHeading = page.getByRole('heading', {
+ name: 'Settings',
+ exact: true,
+ })
+ const restartOnboardingSettingsButton = page.getByRole('button', {
+ name: 'Replay onboarding',
+ })
+
+ await test.step('Navigate into project', async () => {
+ await expect(page.getByRole('heading', { name: 'Projects' })).toBeVisible()
+ await expect(projectCard).toBeVisible()
+ await projectCard.click()
+ await u.waitForPageLoad()
+ })
+
+ await test.step('Restart the onboarding from help menu', async () => {
+ await helpMenuButton.click()
+ await restartOnboardingButton.click()
+
+ await nextButton.hover()
+ await nextButton.click()
+ })
+
+ await test.step('Confirm that the onboarding has restarted', async () => {
+ await expect(tutorialProjectIndicator).toBeVisible()
+ await expect(tutorialModalText).toBeVisible()
+ // Make sure the model loaded
+ const XYPlanePoint = { x: 988, y: 523 } as const
+ const modelColor: [number, number, number] = [76, 76, 76]
+
+ await page.mouse.move(XYPlanePoint.x, XYPlanePoint.y)
+ await expectPixelColor(page, modelColor, XYPlanePoint, 8)
+ await tutorialDismissButton.click()
+ // Make sure model still there.
+ await expectPixelColor(page, modelColor, XYPlanePoint, 8)
+ })
+
+ await test.step('Clear code and restart onboarding from settings', async () => {
+ await u.openKclCodePanel()
+ await expect(u.codeLocator).toContainText('// Shelf Bracket')
+ await u.codeLocator.selectText()
+ await u.codeLocator.fill('')
+
+ await test.step('Navigate to settings', async () => {
+ await userMenuButton.click()
+ await userMenuSettingsButton.click()
+ await expect(settingsHeading).toBeVisible()
+ await expect(restartOnboardingSettingsButton).toBeVisible()
+ })
+
+ await restartOnboardingSettingsButton.click()
+ // Since the code is empty, we should not see the confirmation dialog
+ await expect(nextButton).not.toBeVisible()
+ await expect(tutorialProjectIndicator).toBeVisible()
+ await expect(tutorialModalText).toBeVisible()
+ })
})
diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts
index de622bcfc..4b071f155 100644
--- a/e2e/playwright/point-click.spec.ts
+++ b/e2e/playwright/point-click.spec.ts
@@ -3342,7 +3342,7 @@ profile001 = startProfile(sketch001, at = [-20, 20])
const testPoint = { x: 590, y: 400 }
const extrudeColor: [number, number, number] = [100, 100, 100]
const sketchColor: [number, number, number] = [140, 140, 140]
- const defaultPlaneColor: [number, number, number] = [50, 50, 100]
+ const defaultPlaneColor: [number, number, number] = [88, 44, 45]
const deleteOperation = async (operationButton: Locator) => {
if (shouldUseKeyboard) {
@@ -3386,7 +3386,11 @@ profile001 = startProfile(sketch001, at = [-20, 20])
)
await deleteOperation(operationButton)
await editor.expectEditor.toContain('')
- await scene.expectPixelColor(defaultPlaneColor, testPoint, 20)
+ // Cannot use test point anymore because the camera's position has been
+ // reset and the rest of the test doesn't need to change just to check
+ // if the scene is cleared.
+ // Check that the scene is cleared
+ await scene.expectPixelColor(defaultPlaneColor, { x: 574, y: 342 }, 20)
})
})
})
diff --git a/e2e/playwright/projects.spec.ts b/e2e/playwright/projects.spec.ts
index 7e13e459d..4ba3da0a6 100644
--- a/e2e/playwright/projects.spec.ts
+++ b/e2e/playwright/projects.spec.ts
@@ -837,7 +837,7 @@ test.describe(`Project management commands`, () => {
name: 'Submit command',
})
const toastMessage = page.getByText(`Successfully deleted`)
- const noProjectsMessage = page.getByText('No Projects found')
+ const noProjectsMessage = page.getByText('No projects found')
await test.step(`Setup`, async () => {
await page.setBodyDimensions({ width: 1200, height: 500 })
@@ -949,7 +949,7 @@ test.describe(`Project management commands`, () => {
name: 'Submit command',
})
const toastMessage = page.getByText(`Successfully deleted`)
- const noProjectsMessage = page.getByText('No Projects found')
+ const noProjectsMessage = page.getByText('No projects found')
await test.step(`Setup`, async () => {
await page.setBodyDimensions({ width: 1200, height: 500 })
@@ -1265,7 +1265,7 @@ test(
})
await test.step('Check that the home page is empty', async () => {
- await expect(page.getByText('No Projects found')).toBeVisible()
+ await expect(page.getByText('No projects found')).toBeVisible()
})
await test.step('Check we can still create a project', async () => {
@@ -1434,8 +1434,8 @@ test(
// Constants and locators
const projectLinks = page.getByTestId('project-link')
- // expect to see text "No Projects found"
- await expect(page.getByText('No Projects found')).toBeVisible()
+ // expect to see text "No projects found"
+ await expect(page.getByText('No projects found')).toBeVisible()
await createProject({ name: 'project-000', page, returnHome: true })
await expect(projectLinks.getByText('project-000')).toBeVisible()
@@ -1693,7 +1693,7 @@ test(
await homePage.projectsLoaded()
- await expect(page.getByText('No Projects found')).toBeVisible()
+ await expect(page.getByText('No projects found')).toBeVisible()
await createProject({ name: 'project-000', page, returnHome: true })
await expect(
page.getByTestId('project-link').filter({ hasText: 'project-000' })
diff --git a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts
index a03aa0f60..9d4e328de 100644
--- a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts
+++ b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts
@@ -62,7 +62,8 @@ extrude(sketch003, length = 20)
test.describe('edit with AI example snapshots', () => {
test(
`change colour`,
- { tag: '@snapshot' },
+ // TODO this is more of a snapshot, but atm it needs to be manually run locally to update the files
+ { tag: ['@electron'] },
async ({ context, homePage, cmdBar, editor, page, scene }) => {
const project = 'test-dir'
await context.folderSetupFn(async (dir) => {
diff --git a/e2e/playwright/prompt-to-edit.spec.ts b/e2e/playwright/prompt-to-edit.spec.ts
index 4f38c5652..42276d07c 100644
--- a/e2e/playwright/prompt-to-edit.spec.ts
+++ b/e2e/playwright/prompt-to-edit.spec.ts
@@ -1,4 +1,6 @@
import { expect, test } from '@e2e/playwright/zoo-test'
+import * as fsp from 'fs/promises'
+import * as path from 'path'
/* eslint-disable jest/no-conditional-expect */
@@ -50,23 +52,20 @@ test.describe('Prompt-to-edit tests', () => {
page,
scene,
}) => {
- await context.addInitScript((file) => {
- localStorage.setItem('persistCode', file)
- }, file)
- await homePage.goToModelingScene()
+ await context.folderSetupFn(async (dir) => {
+ const projectDir = path.join(dir, 'test-project')
+ await fsp.mkdir(projectDir, { recursive: true })
+ await fsp.writeFile(path.join(projectDir, 'main.kcl'), file)
+ })
+ await homePage.openProject('test-project')
await scene.settled(cmdBar)
const body1CapCoords = { x: 571, y: 311 }
- const greenCheckCoords = { x: 565, y: 305 }
- const body2WallCoords = { x: 609, y: 153 }
const [clickBody1Cap] = scene.makeMouseHelpers(
body1CapCoords.x,
body1CapCoords.y
)
const yellow: [number, number, number] = [179, 179, 131]
- const green: [number, number, number] = [128, 194, 88]
- const notGreen: [number, number, number] = [132, 132, 132]
- const body2NotGreen: [number, number, number] = [88, 88, 88]
const submittingToast = page.getByText(
'Submitting to Text-to-CAD API...'
)
@@ -103,32 +102,21 @@ test.describe('Prompt-to-edit tests', () => {
})
await test.step('verify initial change', async () => {
- await scene.expectPixelColor(green, greenCheckCoords, 20)
- await scene.expectPixelColor(body2NotGreen, body2WallCoords, 15)
await editor.expectEditor.toContain('appearance(')
})
if (!shouldReject) {
- await test.step('check accept works and can be "undo"ed', async () => {
+ await test.step('check accept works', async () => {
await acceptBtn.click()
await expect(successToast).not.toBeVisible()
- await scene.expectPixelColor(green, greenCheckCoords, 15)
await editor.expectEditor.toContain('appearance(')
-
- // ctrl-z works after accepting
- await page.keyboard.down('ControlOrMeta')
- await page.keyboard.press('KeyZ')
- await page.keyboard.up('ControlOrMeta')
- await editor.expectEditor.not.toContain('appearance(')
- await scene.expectPixelColor(notGreen, greenCheckCoords, 15)
})
} else {
await test.step('check reject works', async () => {
await rejectBtn.click()
await expect(successToast).not.toBeVisible()
- await scene.expectPixelColor(notGreen, greenCheckCoords, 15)
await editor.expectEditor.not.toContain('appearance(')
})
}
diff --git a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json
index 738afc212..f390db271 100644
--- a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json
+++ b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json
@@ -31,7 +31,7 @@
}
],
"project_name": "test-dir",
- "kcl_version": "0.2.64",
+ "kcl_version": "0.2.65",
"files": {
"b.kcl": "sketch003 = startSketchOn(XY)\n |> startProfile(at = [52.92, 157.81])\n |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001)\n |> angledLine(\n angle = segAng(rectangleSegmentA001) - 90,\n length = 53.4,\n tag = $rectangleSegmentB001,\n )\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude(sketch003, length = 20)",
"main.kcl": "import \"b.kcl\" as b\nsketch001 = startSketchOn(XZ)\nprofile001 = startProfile(sketch001, at = [57.81, 250.51])\n |> line(end = [121.13, 56.63], tag = $seg02)\n |> line(end = [83.37, -34.61], tag = $seg01)\n |> line(end = [19.66, -116.4])\n |> line(end = [-221.8, -41.69])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude001 = extrude(profile001, length = 200)\nsketch002 = startSketchOn(XZ)\n |> startProfile(at = [-73.64, -42.89])\n |> xLine(length = 173.71)\n |> line(end = [-22.12, -94.4])\n |> xLine(length = -156.98)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude002 = extrude(sketch002, length = 50)\nb"
diff --git a/e2e/playwright/storageStates.ts b/e2e/playwright/storageStates.ts
index 48d9fc5e5..345bdfdb1 100644
--- a/e2e/playwright/storageStates.ts
+++ b/e2e/playwright/storageStates.ts
@@ -1,7 +1,7 @@
import type { SaveSettingsPayload } from '@src/lib/settings/settingsTypes'
import { Themes } from '@src/lib/theme'
import type { DeepPartial } from '@src/lib/types'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
import type { Settings } from '@rust/kcl-lib/bindings/Settings'
@@ -31,15 +31,12 @@ export const TEST_SETTINGS: DeepPartial = {
export const TEST_SETTINGS_ONBOARDING_USER_MENU: DeepPartial = {
...TEST_SETTINGS,
- app: {
- ...TEST_SETTINGS.app,
- onboarding_status: ONBOARDING_SUBPATHS.USER_MENU,
- },
+ app: { ...TEST_SETTINGS.app, onboarding_status: onboardingPaths.USER_MENU },
}
export const TEST_SETTINGS_ONBOARDING_EXPORT: DeepPartial = {
...TEST_SETTINGS,
- app: { ...TEST_SETTINGS.app, onboarding_status: ONBOARDING_SUBPATHS.EXPORT },
+ app: { ...TEST_SETTINGS.app, onboarding_status: onboardingPaths.EXPORT },
}
export const TEST_SETTINGS_ONBOARDING_PARAMETRIC_MODELING: DeepPartial =
@@ -47,7 +44,7 @@ export const TEST_SETTINGS_ONBOARDING_PARAMETRIC_MODELING: DeepPartial
...TEST_SETTINGS,
app: {
...TEST_SETTINGS.app,
- onboarding_status: ONBOARDING_SUBPATHS.PARAMETRIC_MODELING,
+ onboarding_status: onboardingPaths.PARAMETRIC_MODELING,
},
}
diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts
index 9f4201e09..9ef93263f 100644
--- a/e2e/playwright/test-utils.ts
+++ b/e2e/playwright/test-utils.ts
@@ -5,7 +5,7 @@ import type { BrowserContext, Locator, Page, TestInfo } from '@playwright/test'
import { expect } from '@playwright/test'
import type { EngineCommand } from '@src/lang/std/artifactGraph'
import type { Configuration } from '@src/lang/wasm'
-import { COOKIE_NAME, IS_PLAYWRIGHT_KEY } from '@src/lib/constants'
+import { COOKIE_NAME } from '@src/lib/constants'
import { reportRejection } from '@src/lib/trap'
import type { DeepPartial } from '@src/lib/types'
import { isArray } from '@src/lib/utils'
@@ -19,6 +19,7 @@ import type { ProjectConfiguration } from '@rust/kcl-lib/bindings/ProjectConfigu
import { isErrorWhitelisted } from '@e2e/playwright/lib/console-error-whitelist'
import { secrets } from '@e2e/playwright/secrets'
import { TEST_SETTINGS, TEST_SETTINGS_KEY } from '@e2e/playwright/storageStates'
+import { IS_PLAYWRIGHT_KEY } from '@src/lib/constants'
import { test } from '@e2e/playwright/zoo-test'
const toNormalizedCode = (text: string) => {
diff --git a/flake.lock b/flake.lock
index 5f2194b0b..5efd040d0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,11 +5,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
- "lastModified": 1743800763,
- "narHash": "sha256-YFKV+fxEpMgP5VsUcM6Il28lI0NlpM7+oB1XxbBAYCw=",
+ "lastModified": 1745925850,
+ "narHash": "sha256-cyAAMal0aPrlb1NgzMxZqeN1mAJ2pJseDhm2m6Um8T0=",
"owner": "nix-community",
"repo": "naersk",
- "rev": "ed0232117731a4c19d3ee93aa0c382a8fe754b01",
+ "rev": "38bc60bbc157ae266d4a0c96671c6c742ee17a5f",
"type": "github"
},
"original": {
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1744316434,
- "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
+ "lastModified": 1745998881,
+ "narHash": "sha256-vonyYAKJSlsX4n9GCsS0pHxR6yCrfqBIuGvANlkwG6U=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "d19cf9dfc633816a437204555afeb9e722386b76",
+ "rev": "423d2df5b04b4ee7688c3d71396e872afa236a89",
"type": "github"
},
"original": {
@@ -36,11 +36,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1744316434,
- "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=",
+ "lastModified": 1745998881,
+ "narHash": "sha256-vonyYAKJSlsX4n9GCsS0pHxR6yCrfqBIuGvANlkwG6U=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "d19cf9dfc633816a437204555afeb9e722386b76",
+ "rev": "423d2df5b04b4ee7688c3d71396e872afa236a89",
"type": "github"
},
"original": {
@@ -52,11 +52,11 @@
},
"nixpkgs_3": {
"locked": {
- "lastModified": 1736320768,
- "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
+ "lastModified": 1744536153,
+ "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
+ "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
@@ -78,11 +78,11 @@
"nixpkgs": "nixpkgs_3"
},
"locked": {
- "lastModified": 1744338850,
- "narHash": "sha256-pwMIVmsb8fjjT92n5XFDqCsplcX70qVMMT7NulumPXs=",
+ "lastModified": 1745980514,
+ "narHash": "sha256-CITAeiuXGjDvT5iZBXr6vKVWQwsUQLJUMFO91bfJFC4=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "5e64aecc018e6f775572609e7d7485fdba6985a7",
+ "rev": "7fbdae44b0f40ea432e46fd152ad8be0f8f41ad6",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 2dc022cde..e07cbc790 100644
--- a/flake.nix
+++ b/flake.nix
@@ -71,7 +71,7 @@
TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc";
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
- ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/";
+ ELECTRON_OVERRIDE_DIST_PATH = if pkgs.stdenv.isDarwin then "${pkgs.electron}/Applications" else "${pkgs.electron}/bin";
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true;
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome";
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
diff --git a/known-circular.txt b/known-circular.txt
index 45ea02e96..fd905ec04 100644
--- a/known-circular.txt
+++ b/known-circular.txt
@@ -11,3 +11,4 @@
6) src/lib/singletons.ts -> src/lang/codeManager.ts
7) src/lib/singletons.ts -> src/clientSideScene/sceneEntities.ts -> src/clientSideScene/segments.ts -> src/components/Toolbar/angleLengthInfo.ts
8) src/lib/singletons.ts -> src/clientSideScene/sceneEntities.ts -> src/clientSideScene/segments.ts
+ 9) src/routes/Onboarding/index.tsx -> src/routes/Onboarding/Camera.tsx -> src/routes/Onboarding/utils.tsx
diff --git a/package-lock.json b/package-lock.json
index bf254901d..f466a9116 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,6 +32,7 @@
"@kittycad/lib": "2.0.28",
"@lezer/highlight": "^1.2.1",
"@lezer/lr": "^1.4.1",
+ "@million/lint": "^1.0.14",
"@react-hook/resize-observer": "^2.0.1",
"@replit/codemirror-interact": "^6.3.1",
"@ts-stack/markdown": "^1.5.0",
@@ -170,7 +171,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
@@ -180,6 +180,43 @@
"node": ">=6.0.0"
}
},
+ "node_modules/@antfu/ni": {
+ "version": "0.21.12",
+ "resolved": "https://registry.npmjs.org/@antfu/ni/-/ni-0.21.12.tgz",
+ "integrity": "sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==",
+ "license": "MIT",
+ "bin": {
+ "na": "bin/na.mjs",
+ "nci": "bin/nci.mjs",
+ "ni": "bin/ni.mjs",
+ "nlx": "bin/nlx.mjs",
+ "nr": "bin/nr.mjs",
+ "nu": "bin/nu.mjs",
+ "nun": "bin/nun.mjs"
+ }
+ },
+ "node_modules/@axiomhq/js": {
+ "version": "1.0.0-rc.3",
+ "resolved": "https://registry.npmjs.org/@axiomhq/js/-/js-1.0.0-rc.3.tgz",
+ "integrity": "sha512-Zm10TczcMLounWqC42nMkXQ7XKLqjzLrd5ia022oBKDUZqAFVg2y9d1quQVNV4FlXyg9MKDdfMjpKQRmzEGaog==",
+ "license": "MIT",
+ "dependencies": {
+ "fetch-retry": "^6.0.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@axiomhq/js/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/@azure/abort-controller": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
@@ -365,7 +402,6 @@
"version": "7.26.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.25.9",
@@ -380,7 +416,6 @@
"version": "7.26.8",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
"integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -421,7 +456,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
"integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.27.0",
@@ -451,7 +485,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
"integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/compat-data": "^7.26.8",
@@ -539,7 +572,6 @@
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
"integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.25.9",
@@ -553,7 +585,6 @@
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
"integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.25.9",
@@ -644,7 +675,6 @@
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -654,7 +684,6 @@
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -664,7 +693,6 @@
"version": "7.25.9",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
"integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -689,7 +717,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
"integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.27.0",
@@ -703,7 +730,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
"integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.0"
@@ -1881,7 +1907,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
"integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.26.2",
@@ -1896,7 +1921,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
"integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.26.2",
@@ -1915,7 +1939,6 @@
"version": "7.27.0",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
"integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
@@ -2089,6 +2112,42 @@
"node": ">=14.21.3"
}
},
+ "node_modules/@clack/core": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.5.tgz",
+ "integrity": "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "sisteransi": "^1.0.5"
+ }
+ },
+ "node_modules/@clack/prompts": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz",
+ "integrity": "sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==",
+ "bundleDependencies": [
+ "is-unicode-supported"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@clack/core": "^0.3.3",
+ "is-unicode-supported": "*",
+ "picocolors": "^1.0.0",
+ "sisteransi": "^1.0.5"
+ }
+ },
+ "node_modules/@clack/prompts/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@codemirror/autocomplete": {
"version": "6.18.6",
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz",
@@ -3847,6 +3906,18 @@
"tailwindcss": "^3.0 || ^4.0"
}
},
+ "node_modules/@hono/node-server": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.14.1.tgz",
+ "integrity": "sha512-vmbuM+HPinjWzPe7FFPWMMQMsbKE9gDPhaH0FFdqbGpkT5lp++tcWDTxwBl5EgS5y6JVgIaCdjeHRfQ4XRBRjQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.14.1"
+ },
+ "peerDependencies": {
+ "hono": "^4"
+ }
+ },
"node_modules/@humanwhocodes/config-array": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
@@ -4005,7 +4076,6 @@
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
@@ -4029,7 +4099,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
@@ -4045,7 +4114,6 @@
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -4179,6 +4247,634 @@
"integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
"license": "MIT"
},
+ "node_modules/@million/install": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@million/install/-/install-1.0.14.tgz",
+ "integrity": "sha512-xZvj4AEHc5hyn8RCiLl9dYNqggj2fa0lgNvUkCiJyhRJPNE2hZrUa/Ka0Weu82VpBaO//zujG0YErk7osjNXPA==",
+ "dependencies": {
+ "@antfu/ni": "^0.21.12",
+ "@axiomhq/js": "1.0.0-rc.3",
+ "@babel/parser": "^7.25.3",
+ "@babel/types": "7.26.0",
+ "@clack/prompts": "^0.7.0",
+ "ast-types": "^0.14.2",
+ "cli-high": "^0.4.2",
+ "diff": "^5.1.0",
+ "effect": "^3.8.4",
+ "nanoid": "^5.0.7",
+ "recast": "^0.23.9",
+ "xycolors": "^0.1.2"
+ },
+ "bin": {
+ "install": "bin/index.js"
+ }
+ },
+ "node_modules/@million/install/node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@million/install/node_modules/ast-types": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz",
+ "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@million/install/node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/@million/install/node_modules/nanoid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@million/lint": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@million/lint/-/lint-1.0.14.tgz",
+ "integrity": "sha512-u6/kglVwZRu5+GMmtkNlGLqJVkgTl0TtM+hLa9rBg7pldx+5NG5bk45NvL37uZmAr2Xfa1C6qHb7GrFwfP372g==",
+ "license": "UNLICENSED",
+ "dependencies": {
+ "@axiomhq/js": "1.0.0-rc.3",
+ "@babel/core": "7.26.0",
+ "@babel/types": "7.26.0",
+ "@hono/node-server": "^1.11.1",
+ "@million/install": "latest",
+ "@rollup/pluginutils": "^5.1.0",
+ "@rrweb/types": "2.0.0-alpha.16",
+ "babel-plugin-syntax-hermes-parser": "^0.21.1",
+ "ci-info": "^4.0.0",
+ "esbuild": "^0.20.1",
+ "faster-babel-types": "^0.1.0",
+ "hono": "^4.5.9",
+ "isomorphic-fetch": "^3.0.0",
+ "nanoid": "^5.0.7",
+ "ohash": "^1.1.4",
+ "pako": "^2.1.0",
+ "pathe": "^1.1.2",
+ "piscina": "^4.4.0",
+ "pretty-ms": "8.0.0",
+ "react-scan": "^0.0.31",
+ "rrweb": "2.0.0-alpha.4",
+ "rrweb-player": "1.0.0-alpha.4",
+ "semver": "^7.6.2",
+ "socket.io": "^4.8.1",
+ "socket.io-client": "^4.7.5",
+ "tmp": "^0.2.3",
+ "unplugin": "^1.6.0",
+ "update-notifier-cjs": "^5.1.6"
+ },
+ "bin": {
+ "lint": "cli.js"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@babel/core": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+ "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.0",
+ "@babel/generator": "^7.26.0",
+ "@babel/helper-compilation-targets": "^7.25.9",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.0",
+ "@babel/parser": "^7.26.0",
+ "@babel/template": "^7.25.9",
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.26.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@babel/types": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
+ "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/android-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/android-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/android-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/darwin-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-loong64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-s390x": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/linux-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/sunos-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/win32-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/win32-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/@esbuild/win32-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@million/lint/node_modules/ci-info": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz",
+ "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@million/lint/node_modules/esbuild": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.2",
+ "@esbuild/android-arm": "0.20.2",
+ "@esbuild/android-arm64": "0.20.2",
+ "@esbuild/android-x64": "0.20.2",
+ "@esbuild/darwin-arm64": "0.20.2",
+ "@esbuild/darwin-x64": "0.20.2",
+ "@esbuild/freebsd-arm64": "0.20.2",
+ "@esbuild/freebsd-x64": "0.20.2",
+ "@esbuild/linux-arm": "0.20.2",
+ "@esbuild/linux-arm64": "0.20.2",
+ "@esbuild/linux-ia32": "0.20.2",
+ "@esbuild/linux-loong64": "0.20.2",
+ "@esbuild/linux-mips64el": "0.20.2",
+ "@esbuild/linux-ppc64": "0.20.2",
+ "@esbuild/linux-riscv64": "0.20.2",
+ "@esbuild/linux-s390x": "0.20.2",
+ "@esbuild/linux-x64": "0.20.2",
+ "@esbuild/netbsd-x64": "0.20.2",
+ "@esbuild/openbsd-x64": "0.20.2",
+ "@esbuild/sunos-x64": "0.20.2",
+ "@esbuild/win32-arm64": "0.20.2",
+ "@esbuild/win32-ia32": "0.20.2",
+ "@esbuild/win32-x64": "0.20.2"
+ }
+ },
+ "node_modules/@million/lint/node_modules/nanoid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@million/lint/node_modules/pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
+ "license": "(MIT AND Zlib)"
+ },
+ "node_modules/@million/lint/node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "license": "MIT"
+ },
+ "node_modules/@million/lint/node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@nabla/vite-plugin-eslint": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nabla/vite-plugin-eslint/-/vite-plugin-eslint-2.0.5.tgz",
@@ -4195,6 +4891,294 @@
"vite": "^4 || ^5 || ^6"
}
},
+ "node_modules/@napi-rs/nice": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz",
+ "integrity": "sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==",
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "optionalDependencies": {
+ "@napi-rs/nice-android-arm-eabi": "1.0.1",
+ "@napi-rs/nice-android-arm64": "1.0.1",
+ "@napi-rs/nice-darwin-arm64": "1.0.1",
+ "@napi-rs/nice-darwin-x64": "1.0.1",
+ "@napi-rs/nice-freebsd-x64": "1.0.1",
+ "@napi-rs/nice-linux-arm-gnueabihf": "1.0.1",
+ "@napi-rs/nice-linux-arm64-gnu": "1.0.1",
+ "@napi-rs/nice-linux-arm64-musl": "1.0.1",
+ "@napi-rs/nice-linux-ppc64-gnu": "1.0.1",
+ "@napi-rs/nice-linux-riscv64-gnu": "1.0.1",
+ "@napi-rs/nice-linux-s390x-gnu": "1.0.1",
+ "@napi-rs/nice-linux-x64-gnu": "1.0.1",
+ "@napi-rs/nice-linux-x64-musl": "1.0.1",
+ "@napi-rs/nice-win32-arm64-msvc": "1.0.1",
+ "@napi-rs/nice-win32-ia32-msvc": "1.0.1",
+ "@napi-rs/nice-win32-x64-msvc": "1.0.1"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm-eabi": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.0.1.tgz",
+ "integrity": "sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-android-arm64": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.0.1.tgz",
+ "integrity": "sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-arm64": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.0.1.tgz",
+ "integrity": "sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-darwin-x64": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.0.1.tgz",
+ "integrity": "sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-freebsd-x64": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.0.1.tgz",
+ "integrity": "sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm-gnueabihf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.0.1.tgz",
+ "integrity": "sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-gnu": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.0.1.tgz",
+ "integrity": "sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-arm64-musl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.0.1.tgz",
+ "integrity": "sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-ppc64-gnu": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.0.1.tgz",
+ "integrity": "sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-riscv64-gnu": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.0.1.tgz",
+ "integrity": "sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-s390x-gnu": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.0.1.tgz",
+ "integrity": "sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-x64-gnu": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.0.1.tgz",
+ "integrity": "sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-linux-x64-musl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.0.1.tgz",
+ "integrity": "sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-arm64-msvc": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.0.1.tgz",
+ "integrity": "sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-ia32-msvc": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.0.1.tgz",
+ "integrity": "sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@napi-rs/nice-win32-x64-msvc": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.0.1.tgz",
+ "integrity": "sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -4302,6 +5286,47 @@
"node": ">=18"
}
},
+ "node_modules/@pnpm/config.env-replace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+ "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "4.2.10"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "license": "ISC"
+ },
+ "node_modules/@pnpm/npm-conf": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz",
+ "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==",
+ "license": "MIT",
+ "dependencies": {
+ "@pnpm/config.env-replace": "^1.1.0",
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@react-hook/latest": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz",
@@ -4487,7 +5512,6 @@
"version": "5.1.4",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
"integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
@@ -4510,14 +5534,12 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
"license": "MIT"
},
"node_modules/@rollup/pluginutils/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
@@ -4806,6 +5828,15 @@
"win32"
]
},
+ "node_modules/@rrweb/types": {
+ "version": "2.0.0-alpha.16",
+ "resolved": "https://registry.npmjs.org/@rrweb/types/-/types-2.0.0-alpha.16.tgz",
+ "integrity": "sha512-E6cACNVsm+NUhn7dzocQoKyXI7BHrHRRm5Ab23yrAzEQ2caWocCEYJhqDlc4KRVJBkQfXZfyWm8+2d0uggFuZg==",
+ "license": "MIT",
+ "dependencies": {
+ "rrweb-snapshot": "^2.0.0-alpha.16"
+ }
+ },
"node_modules/@rtsao/scc": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
@@ -4833,6 +5864,18 @@
"url": "https://github.com/sindresorhus/is?sponsor=1"
}
},
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "license": "MIT"
+ },
+ "node_modules/@standard-schema/spec": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+ "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+ "license": "MIT"
+ },
"node_modules/@swc/core": {
"version": "1.11.20",
"resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.20.tgz",
@@ -5241,6 +6284,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@tsconfig/svelte": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-1.0.13.tgz",
+ "integrity": "sha512-5lYJP45Xllo4yE/RUBccBT32eBlRDbqN8r1/MIvQbKxW3aFqaYPCNgm8D5V20X4ShHcwvYWNlKg3liDh1MlBoA==",
+ "license": "MIT"
+ },
"node_modules/@tweenjs/tween.js": {
"version": "23.1.3",
"resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz",
@@ -5312,6 +6361,21 @@
"@types/responselike": "^1.0.0"
}
},
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/css-font-loading-module": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz",
+ "integrity": "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==",
+ "license": "MIT"
+ },
"node_modules/@types/debug": {
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
@@ -5355,7 +6419,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/@types/fs-extra": {
@@ -5522,7 +6585,6 @@
"version": "22.14.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
"integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
@@ -6886,6 +7948,12 @@
"url": "https://opencollective.com/xstate"
}
},
+ "node_modules/@xstate/fsm": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/@xstate/fsm/-/fsm-1.6.5.tgz",
+ "integrity": "sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==",
+ "license": "MIT"
+ },
"node_modules/@xstate/inspect": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@xstate/inspect/-/inspect-0.8.0.tgz",
@@ -6972,7 +8040,6 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
"integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"mime-types": "~2.1.34",
@@ -7080,6 +8147,15 @@
"ajv": "^6.9.1"
}
},
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@@ -7676,7 +8752,6 @@
"version": "0.16.1",
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
"integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"tslib": "^2.0.1"
@@ -7884,6 +8959,15 @@
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
+ "node_modules/babel-plugin-syntax-hermes-parser": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.21.1.tgz",
+ "integrity": "sha512-tUCEa+EykZx3oJXc+PolKz2iwDscCJ2hCONMvEqjAb4jIQH5ZapDd5Brs2Nk4TQpSJ/1Ykz53ksQbevXbF0wxg==",
+ "license": "MIT",
+ "dependencies": {
+ "hermes-parser": "0.21.1"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -7926,6 +9010,15 @@
],
"license": "MIT"
},
+ "node_modules/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "license": "MIT",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
"node_modules/basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -8074,6 +9167,57 @@
"license": "MIT",
"optional": true
},
+ "node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -8109,7 +9253,6 @@
"version": "4.24.4",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8448,7 +9591,6 @@
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
"integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -8471,7 +9613,6 @@
"version": "1.0.30001713",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz",
"integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -8509,7 +9650,6 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -8661,6 +9801,18 @@
"node": ">=6"
}
},
+ "node_modules/cli-boxes": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cli-cursor": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
@@ -8677,6 +9829,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cli-high": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/cli-high/-/cli-high-0.4.3.tgz",
+ "integrity": "sha512-YbwZhmK0fpwVn3bsbYiYdkseXFcGvSVkX+fl0CY73PAz77Uzkr46X3Ifs4V7NgwfvCqGx+6C5zEi8SL8m9lqtg==",
+ "license": "MIT",
+ "dependencies": {
+ "@clack/prompts": "^0.7.0",
+ "sugar-high": "^0.7.1",
+ "xycolors": "^0.1.2",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "cli-high": "bin/index.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/xinyao27"
+ }
+ },
"node_modules/cli-spinners": {
"version": "2.9.2",
"resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
@@ -8858,6 +10028,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/config-chain/node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
+ },
"node_modules/config-file-ts": {
"version": "0.2.8-rc1",
"resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz",
@@ -8926,6 +10112,38 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/configstore": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/configstore/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -8953,7 +10171,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
"license": "MIT"
},
"node_modules/cookie": {
@@ -8993,6 +10210,19 @@
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"license": "MIT"
},
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/corser": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
@@ -9096,6 +10326,15 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
@@ -9311,9 +10550,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true,
"license": "MIT",
- "optional": true,
"engines": {
"node": ">=4.0.0"
}
@@ -9666,6 +10903,18 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/dotenv": {
"version": "16.5.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz",
@@ -9825,6 +11074,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/effect": {
+ "version": "3.14.18",
+ "resolved": "https://registry.npmjs.org/effect/-/effect-3.14.18.tgz",
+ "integrity": "sha512-hqXZGfps5lQzoVq14X0uajOx5SKiEvDn40lFVGjHs7+SpdnL39xUZo3NZ96Gs8uVz2nFxBYPCfQA0rOaW+5uQA==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "fast-check": "^3.23.1"
+ }
+ },
"node_modules/ejs": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
@@ -9907,7 +11166,6 @@
"version": "1.5.136",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz",
"integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==",
- "dev": true,
"license": "ISC"
},
"node_modules/electron-updater": {
@@ -10077,6 +11335,133 @@
"once": "^1.4.0"
}
},
+ "node_modules/engine.io": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
+ "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.7.2",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/engine.io-client": {
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz",
+ "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.1.1"
+ }
+ },
+ "node_modules/engine.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io-client/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
@@ -10354,6 +11739,15 @@
"node": ">=6"
}
},
+ "node_modules/escape-goat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -10807,7 +12201,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
"license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
@@ -11190,6 +12583,28 @@
"license": "MIT",
"optional": true
},
+ "node_modules/fast-check": {
+ "version": "3.23.2",
+ "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz",
+ "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "pure-rand": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -11246,6 +12661,18 @@
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
"license": "MIT"
},
+ "node_modules/faster-babel-types": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/faster-babel-types/-/faster-babel-types-0.1.0.tgz",
+ "integrity": "sha512-0bEgAyXBdX330U6WbY80Q/h8k0NAPT3Z3sRlC6Fiv0kxekow9JQv2KBL55jIDFxNKcixjvByNnTZfH4axKSB9g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@babel/types": "^7"
+ }
+ },
"node_modules/fastq": {
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
@@ -11335,6 +12762,12 @@
"node": "^12.20 || >= 14.13"
}
},
+ "node_modules/fetch-retry": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-6.0.0.tgz",
+ "integrity": "sha512-BUFj1aMubgib37I3v4q78fYo63Po7t4HUPTpQ6/QE6yK6cIQrP+W43FYToeTEyg5m2Y7eFUtijUuAv/PDlWuag==",
+ "license": "MIT"
+ },
"node_modules/fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
@@ -11717,7 +13150,6 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
@@ -11797,7 +13229,6 @@
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -12018,7 +13449,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
"integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ini": "2.0.0"
@@ -12034,7 +13464,6 @@
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=4"
@@ -12172,7 +13601,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -12236,6 +13664,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/has-yarn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
+ "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -12259,6 +13696,30 @@
"he": "bin/he"
}
},
+ "node_modules/hermes-estree": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.21.1.tgz",
+ "integrity": "sha512-ayfESdfG0wZM32uGw0CMfcW6pW6RM8htLXZI56A4rr7hIOjmKw+wd3+71wUc1uQfn90ZyY1NMCbQeMnunrIidg==",
+ "license": "MIT"
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.21.1.tgz",
+ "integrity": "sha512-ANsRSBqQHzca7AXbsuwKApSQhAdljPip63MgqLebSVzNUI+A3NDzfiH9Ny4df4fA7Ndso3kPR1V/x1YEc7BYxA==",
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.21.1"
+ }
+ },
+ "node_modules/hono": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.7.8.tgz",
+ "integrity": "sha512-PCibtFdxa7/Ldud9yddl1G81GjYaeMYYTq4ywSaNsYbB1Lug4mwtOMJf2WXykL0pntYwmpRJeOI3NmoDgD+Jxw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
"node_modules/hosted-git-info": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
@@ -12571,11 +14032,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.8.19"
@@ -12633,7 +14102,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
"integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "dev": true,
"license": "ISC",
"engines": {
"node": ">=10"
@@ -12964,6 +14432,22 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-installed-globally": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "license": "MIT",
+ "dependencies": {
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -12994,6 +14478,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -13021,11 +14517,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/is-path-inside": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -13150,11 +14654,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@@ -13225,6 +14734,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-yarn-global": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
+ "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
+ "license": "MIT"
+ },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -13578,7 +15093,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -13626,7 +15140,6 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
"license": "MIT",
"bin": {
"json5": "lib/cli.js"
@@ -13823,6 +15336,15 @@
"kill-port": "cli.js"
}
},
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/language-subtag-registry": {
"version": "0.3.23",
"resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz",
@@ -14321,7 +15843,6 @@
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
"license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
@@ -14609,7 +16130,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -14619,7 +16139,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
@@ -14804,6 +16323,12 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "license": "MIT"
+ },
"node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -15008,6 +16533,15 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -15050,7 +16584,6 @@
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -15084,7 +16617,6 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -15206,7 +16738,6 @@
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
- "dev": true,
"license": "MIT"
},
"node_modules/nopt": {
@@ -15455,6 +16986,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/ohash": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz",
+ "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==",
+ "license": "MIT"
+ },
"node_modules/oidc-token-hash": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.1.0.tgz",
@@ -15889,6 +17426,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/parse-ms": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz",
+ "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse-semver": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
@@ -16093,7 +17642,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
@@ -16129,6 +17677,15 @@
"node": ">= 6"
}
},
+ "node_modules/piscina": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.9.2.tgz",
+ "integrity": "sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "@napi-rs/nice": "^1.0.1"
+ }
+ },
"node_modules/pixelmatch": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz",
@@ -16156,7 +17713,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz",
"integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==",
- "dev": true,
"license": "Apache-2.0",
"dependencies": {
"playwright-core": "1.52.0"
@@ -16175,7 +17731,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz",
"integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==",
- "dev": true,
"license": "Apache-2.0",
"bin": {
"playwright-core": "cli.js"
@@ -16247,7 +17802,6 @@
"version": "8.5.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
"integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -16492,6 +18046,21 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/pretty-ms": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-8.0.0.tgz",
+ "integrity": "sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/proc-log": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
@@ -16565,6 +18134,12 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"license": "MIT"
},
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "license": "ISC"
+ },
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -16610,12 +18185,40 @@
"node": ">=6"
}
},
+ "node_modules/pupa": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-goat": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/pure-color": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz",
"integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==",
"license": "MIT"
},
+ "node_modules/pure-rand": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
+ "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/qs": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
@@ -16719,9 +18322,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
"license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
- "optional": true,
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -16736,17 +18337,13 @@
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true,
- "license": "ISC",
- "optional": true
+ "license": "ISC"
},
"node_modules/rc/node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true,
"license": "MIT",
- "optional": true,
"engines": {
"node": ">=0.10.0"
}
@@ -16922,6 +18519,33 @@
"react-dom": ">=16.8"
}
},
+ "node_modules/react-scan": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/react-scan/-/react-scan-0.0.31.tgz",
+ "integrity": "sha512-reHgQnASWVXwHe0Ibk/EbsEPZhKrmNRf8EUNDmjMi1lzXec+Cj9litKxD0TG2ghAwg5V4sT0wzhiOgZSIefeVg==",
+ "license": "MIT",
+ "dependencies": {
+ "@clack/core": "^0.3.5",
+ "@clack/prompts": "^0.8.2",
+ "kleur": "^4.1.5",
+ "mri": "^1.2.0",
+ "playwright": "^1.49.0"
+ },
+ "bin": {
+ "react-scan": "bin/cli.js"
+ }
+ },
+ "node_modules/react-scan/node_modules/@clack/prompts": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.8.2.tgz",
+ "integrity": "sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@clack/core": "0.3.5",
+ "picocolors": "^1.0.0",
+ "sisteransi": "^1.0.5"
+ }
+ },
"node_modules/react-textarea-autosize": {
"version": "8.5.9",
"resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz",
@@ -17105,7 +18729,6 @@
"version": "0.23.11",
"resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz",
"integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"ast-types": "^0.16.1",
@@ -17243,6 +18866,30 @@
"node": ">=4"
}
},
+ "node_modules/registry-auth-token": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz",
+ "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==",
+ "license": "MIT",
+ "dependencies": {
+ "@pnpm/npm-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz",
+ "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==",
+ "license": "MIT",
+ "dependencies": {
+ "rc": "^1.2.8"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/regjsgen": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
@@ -17515,6 +19162,56 @@
"typescript": "^4.5 || ^5.0"
}
},
+ "node_modules/rrdom": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/rrdom/-/rrdom-0.1.7.tgz",
+ "integrity": "sha512-ZLd8f14z9pUy2Hk9y636cNv5Y2BMnNEY99wxzW9tD2BLDfe1xFxtLjB4q/xCBYo6HRe0wofzKzjm4JojmpBfFw==",
+ "license": "MIT",
+ "dependencies": {
+ "rrweb-snapshot": "^2.0.0-alpha.4"
+ }
+ },
+ "node_modules/rrweb": {
+ "version": "2.0.0-alpha.4",
+ "resolved": "https://registry.npmjs.org/rrweb/-/rrweb-2.0.0-alpha.4.tgz",
+ "integrity": "sha512-wEHUILbxDPcNwkM3m4qgPgXAiBJyqCbbOHyVoNEVBJzHszWEFYyTbrZqUdeb1EfmTRC2PsumCIkVcomJ/xcOzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@rrweb/types": "^2.0.0-alpha.4",
+ "@types/css-font-loading-module": "0.0.7",
+ "@xstate/fsm": "^1.4.0",
+ "base64-arraybuffer": "^1.0.1",
+ "fflate": "^0.4.4",
+ "mitt": "^3.0.0",
+ "rrdom": "^0.1.7",
+ "rrweb-snapshot": "^2.0.0-alpha.4"
+ }
+ },
+ "node_modules/rrweb-player": {
+ "version": "1.0.0-alpha.4",
+ "resolved": "https://registry.npmjs.org/rrweb-player/-/rrweb-player-1.0.0-alpha.4.tgz",
+ "integrity": "sha512-Wlmn9GZ5Fdqa37vd3TzsYdLl/JWEvXNUrLCrYpnOwEgmY409HwVIvvA5aIo7k582LoKgdRCsB87N+f0oWAR0Kg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tsconfig/svelte": "^1.0.0",
+ "rrweb": "^2.0.0-alpha.4"
+ }
+ },
+ "node_modules/rrweb-snapshot": {
+ "version": "2.0.0-alpha.18",
+ "resolved": "https://registry.npmjs.org/rrweb-snapshot/-/rrweb-snapshot-2.0.0-alpha.18.tgz",
+ "integrity": "sha512-hBHZL/NfgQX6wO1D9mpwqFu1NJPpim+moIcKhFEjVTZVRUfCln+LOugRc4teVTCISYHN8Cw5e2iNTWCSm+SkoA==",
+ "license": "MIT",
+ "dependencies": {
+ "postcss": "^8.4.38"
+ }
+ },
+ "node_modules/rrweb/node_modules/fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==",
+ "license": "MIT"
+ },
"node_modules/run-applescript": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
@@ -17685,7 +19382,6 @@
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -17699,6 +19395,18 @@
"license": "MIT",
"optional": true
},
+ "node_modules/semver-diff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/send": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
@@ -18000,7 +19708,6 @@
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true,
"license": "ISC"
},
"node_modules/simple-concat": {
@@ -18078,6 +19785,12 @@
"node": ">=10"
}
},
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
"node_modules/sketch-helpers": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/sketch-helpers/-/sketch-helpers-0.0.4.tgz",
@@ -18124,6 +19837,151 @@
"npm": ">= 3.0.0"
}
},
+ "node_modules/socket.io": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
+ "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.6.0",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-adapter/node_modules/ws": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-client": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz",
+ "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.6.1",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "license": "MIT",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/socks": {
"version": "2.8.4",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
@@ -18171,7 +20029,6 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -18181,7 +20038,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
@@ -18717,6 +20573,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/sugar-high": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/sugar-high/-/sugar-high-0.7.5.tgz",
+ "integrity": "sha512-lfGxo0il0Mx4WLdXEt0WsJ8V3QkQWssXnolj5xBurzlGJW07LuwmJWKtS0B2WJ5XWz1439RHngXAmzsnLD0rFA==",
+ "license": "MIT"
+ },
"node_modules/sumchecker": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
@@ -18734,7 +20596,6 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
@@ -19038,7 +20899,6 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
"integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
- "dev": true,
"license": "MIT"
},
"node_modules/tiny-typed-emitter": {
@@ -19125,7 +20985,6 @@
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
"integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=14.14"
@@ -19488,6 +21347,15 @@
"underscore": "^1.12.1"
}
},
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "license": "MIT",
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
@@ -19597,7 +21465,6 @@
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "dev": true,
"license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
@@ -19682,6 +21549,18 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-random-string": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/universalify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
@@ -19701,11 +21580,23 @@
"node": ">= 0.8"
}
},
+ "node_modules/unplugin": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
+ "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -19732,6 +21623,63 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-notifier-cjs": {
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/update-notifier-cjs/-/update-notifier-cjs-5.1.7.tgz",
+ "integrity": "sha512-eZWTh8F+VCEoC4UIh0pKmh8h4izj65VvLhCpJpVefUxdYe0fU3GBrC4Sbh1AoWA/miNPAb6UVlp2fUQNsfp+3g==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
+ "configstore": "^5.0.1",
+ "has-yarn": "^2.1.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^2.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
+ "is-yarn-global": "^0.3.0",
+ "isomorphic-fetch": "^3.0.0",
+ "pupa": "^2.1.1",
+ "registry-auth-token": "^5.0.1",
+ "registry-url": "^5.1.0",
+ "semver": "^7.3.7",
+ "semver-diff": "^3.1.1",
+ "xdg-basedir": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/update-notifier-cjs/node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+ "license": "MIT"
+ },
+ "node_modules/update-notifier-cjs/node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "license": "MIT",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/update-notifier-cjs/node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -19890,7 +21838,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.8"
@@ -20314,6 +22261,12 @@
"node": ">=12"
}
},
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
+ "license": "MIT"
+ },
"node_modules/whatwg-encoding": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
@@ -20483,6 +22436,18 @@
"node": ">=20.11"
}
},
+ "node_modules/widest-line": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/win-ca": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.1.tgz",
@@ -20617,6 +22582,18 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
"node_modules/ws": {
"version": "8.18.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
@@ -20639,6 +22616,15 @@
}
}
},
+ "node_modules/xdg-basedir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/xml2js": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
@@ -20673,6 +22659,14 @@
"node": ">=8.0"
}
},
+ "node_modules/xmlhttprequest-ssl": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
+ "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/xstate": {
"version": "5.19.2",
"resolved": "https://registry.npmjs.org/xstate/-/xstate-5.19.2.tgz",
@@ -20725,6 +22719,15 @@
"xterm": "^4.0.0"
}
},
+ "node_modules/xycolors": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/xycolors/-/xycolors-0.1.2.tgz",
+ "integrity": "sha512-iUIDKoRUq/6Nfkiwv/PqxR6ENzgLkaaOeWwY54CtObpEwmvQHCvsgxd5xIGfEF/QU75H2quxIffOoU4tf2kKDg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/xinyao27"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -20738,7 +22741,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
"license": "ISC"
},
"node_modules/yaml": {
diff --git a/package.json b/package.json
index ae3098221..73a2810f3 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
"@kittycad/lib": "2.0.28",
"@lezer/highlight": "^1.2.1",
"@lezer/lr": "^1.4.1",
+ "@million/lint": "^1.0.14",
"@react-hook/resize-observer": "^2.0.1",
"@replit/codemirror-interact": "^6.3.1",
"@ts-stack/markdown": "^1.5.0",
diff --git a/packages/codemirror-lsp-client/src/plugin/lsp.ts b/packages/codemirror-lsp-client/src/plugin/lsp.ts
index 1d7a6fa4e..f6ac9f1eb 100644
--- a/packages/codemirror-lsp-client/src/plugin/lsp.ts
+++ b/packages/codemirror-lsp-client/src/plugin/lsp.ts
@@ -547,19 +547,10 @@ export class LanguageServerPlugin implements PluginValue {
try {
// First check if rename is possible at this position
- const prepareResult = await this.client
- .textDocumentPrepareRename({
- textDocument: { uri: this.getDocUri() },
- position: { line, character },
- })
- .catch(() => {
- // In case prepareRename is not supported,
- // we fallback to the default implementation
- return this.prepareRenameFallback(view, {
- line,
- character,
- })
- })
+ let prepareResult = this.prepareRenameFallback(view, {
+ line,
+ character,
+ })
if (!prepareResult || 'defaultBehavior' in prepareResult) {
showErrorMessage(view, 'Cannot rename this symbol')
diff --git a/public/kcl-samples/80-20-rail/main.kcl b/public/kcl-samples/80-20-rail/main.kcl
index 89d9fde94..d75a3acc1 100644
--- a/public/kcl-samples/80-20-rail/main.kcl
+++ b/public/kcl-samples/80-20-rail/main.kcl
@@ -139,4 +139,4 @@ fn rail8020(originStart, railHeight, railLength) {
}
// Generate one adjustable rail of 80/20
-rail8020([0, 0], 1.5, 48)
+rail8020(originStart = [0, 0], railHeight = 1.5, railLength = 48)
diff --git a/public/kcl-samples/axial-fan/fan.kcl b/public/kcl-samples/axial-fan/fan.kcl
index 7f4073bb1..91eeafad7 100644
--- a/public/kcl-samples/axial-fan/fan.kcl
+++ b/public/kcl-samples/axial-fan/fan.kcl
@@ -72,14 +72,14 @@ fn fanBlade(offsetHeight, startAngle: number(deg)) {
}
// Loft the fan blade cross sections into a single blade, then pattern them about the fan center
-loft([
- fanBlade(4.5, 50),
- fanBlade((fanHeight - 2 - 4) / 2, 30),
- fanBlade(fanHeight - 2, 0)
- ])
+crossSections = [
+ fanBlade(offsetHeight = 4.5, startAngle = 50),
+ fanBlade(offsetHeight = (fanHeight - 2 - 4) / 2, startAngle = 30),
+ fanBlade(offsetHeight = fanHeight - 2, startAngle = 0)
+]
+loft(crossSections)
|> appearance(color = "#f3e2d8")
|> patternCircular3d(
- %,
instances = 9,
axis = [0, 0, 1],
center = [0, 0, 0],
diff --git a/public/kcl-samples/bench/bench-parts.kcl b/public/kcl-samples/bench/bench-parts.kcl
index 129fb1954..306d7c452 100644
--- a/public/kcl-samples/bench/bench-parts.kcl
+++ b/public/kcl-samples/bench/bench-parts.kcl
@@ -6,7 +6,7 @@
export dividerThickness = 4
-fn dividerSketch(plane) {
+fn dividerSketch(@plane) {
sketch000 = startSketchOn(plane)
|> startProfile(at = [-16.82, 21.2])
|> line(end = [-0.13, -1.27])
@@ -33,7 +33,7 @@ fn dividerSketch(plane) {
return sketch000
}
-export fn divider(plane) {
+export fn divider(@plane) {
right = dividerSketch(plane)
|> extrude(length = dividerThickness / 2)
left = dividerSketch(plane)
@@ -43,7 +43,7 @@ export fn divider(plane) {
return 0
}
-fn connectorSketch(plane, start) {
+fn connectorSketch(@plane, start) {
sketch001 = startSketchOn(plane)
|> startProfile(at = start)
|> polygon(
@@ -55,15 +55,15 @@ fn connectorSketch(plane, start) {
return sketch001
}
-export fn connector(plane, length) {
- connectorSketch(plane, [-12, 8])
+export fn connector(@plane, length) {
+ connectorSketch(plane, start = [-12, 8])
|> extrude(length = length)
- connectorSketch(plane, [16, 8])
+ connectorSketch(plane, start = [16, 8])
|> extrude(length = length)
return 0
}
-fn seatSlatSketch(plane) {
+fn seatSlatSketch(@plane) {
sketch003 = startSketchOn(plane)
|> startProfile(at = [-7, 19])
|> line(end = [-10, 0.5])
@@ -77,13 +77,13 @@ fn seatSlatSketch(plane) {
return sketch003
}
-export fn seatSlats(plane, length) {
+export fn seatSlats(@plane, length) {
seatSlatSketch(plane)
|> extrude(length = length)
return 0
}
-fn backSlatsSketch(plane) {
+fn backSlatsSketch(@plane) {
sketch004 = startSketchOn(plane)
|> startProfile(at = [22, 38.5])
|> angledLine(angle = 173, length = 2)
@@ -97,13 +97,13 @@ fn backSlatsSketch(plane) {
return sketch004
}
-export fn backSlats(plane, length) {
+export fn backSlats(@plane, length) {
b = backSlatsSketch(plane)
|> extrude(length = length)
return b
}
-fn armRestPath(plane) {
+fn armRestPath(@plane) {
sketch005 = startSketchOn(plane)
|> startProfile(at = [20, 33])
|> xLine(length = -20)
@@ -111,7 +111,7 @@ fn armRestPath(plane) {
return sketch005
}
-fn armRestProfile(plane, offset) {
+fn armRestProfile(@plane, offset) {
sketch006 = startSketchOn(plane)
|> startProfile(at = [offset, 32.4])
|> xLine(length = 1.3)
@@ -124,9 +124,9 @@ fn armRestProfile(plane, offset) {
return sketch006
}
-export fn armRest(plane, offset) {
+export fn armRest(@plane, offset) {
path = armRestPath( offsetPlane(plane, offset = offset))
- profile = armRestProfile( offsetPlane(-XZ, offset = 20), -offset)
+ profile = armRestProfile( offsetPlane(-XZ, offset = 20), offset = -offset)
sweep(profile, path = path)
return 0
}
diff --git a/public/kcl-samples/bench/main.kcl b/public/kcl-samples/bench/main.kcl
index 6b9b482cf..bc6b25ca5 100644
--- a/public/kcl-samples/bench/main.kcl
+++ b/public/kcl-samples/bench/main.kcl
@@ -21,14 +21,14 @@ divider(offsetPlane(YZ, offset = benchLength / 2))
divider(offsetPlane(YZ, offset = -benchLength / 2))
// Create the connectors to join the dividers
-connector(offsetPlane(YZ, offset = -benchLength / 2), benchLength)
+connector(offsetPlane(YZ, offset = -benchLength / 2), length = benchLength)
// Create the seat slats
-seatSlats(offsetPlane(YZ, offset = -benchLength / 2 - (dividerThickness / 2)), benchLength + dividerThickness)
+seatSlats(offsetPlane(YZ, offset = -benchLength / 2 - (dividerThickness / 2)), length = benchLength + dividerThickness)
// Create the back slats
-backSlats(offsetPlane(YZ, offset = -benchLength / 2 - (dividerThickness / 2)), benchLength + dividerThickness)
+backSlats(offsetPlane(YZ, offset = -benchLength / 2 - (dividerThickness / 2)), length = benchLength + dividerThickness)
// Create the arm rests
-armRest(YZ, benchLength / 2)
-armRest(YZ, -benchLength / 2)
+armRest(YZ, offset = benchLength / 2)
+armRest(YZ, offset = -benchLength / 2)
diff --git a/public/kcl-samples/car-wheel-assembly/car-wheel.kcl b/public/kcl-samples/car-wheel-assembly/car-wheel.kcl
index d19b8c695..66ada0459 100644
--- a/public/kcl-samples/car-wheel-assembly/car-wheel.kcl
+++ b/public/kcl-samples/car-wheel-assembly/car-wheel.kcl
@@ -121,8 +121,8 @@ fn spoke(spokeGap, spokeAngle, spokeThickness) {
return spokePattern
}
-spoke(spokeGap, spokeAngle, spokeThickness)
-spoke(-spokeGap, -spokeAngle, -spokeThickness)
+spoke(spokeGap = spokeGap, spokeAngle = spokeAngle, spokeThickness = spokeThickness)
+spoke(spokeGap = -spokeGap, spokeAngle = -spokeAngle, spokeThickness = -spokeThickness)
// Define and revolve wheel exterior
startSketchOn(XY)
diff --git a/public/kcl-samples/car-wheel-assembly/lug-nut.kcl b/public/kcl-samples/car-wheel-assembly/lug-nut.kcl
index f25f5a40b..73345c748 100644
--- a/public/kcl-samples/car-wheel-assembly/lug-nut.kcl
+++ b/public/kcl-samples/car-wheel-assembly/lug-nut.kcl
@@ -31,4 +31,4 @@ fn lug(plane, length, diameter) {
return lugSketch
}
-lugNut = lug(customPlane, lugLength, lugDiameter)
+lugNut = lug(plane = customPlane, length = lugLength, diameter = lugDiameter)
diff --git a/public/kcl-samples/color-cube/main.kcl b/public/kcl-samples/color-cube/main.kcl
index 433127289..b736af766 100644
--- a/public/kcl-samples/color-cube/main.kcl
+++ b/public/kcl-samples/color-cube/main.kcl
@@ -33,9 +33,9 @@ fn sketchRectangle(profile, color) {
}
// Sketch each side of the cube
-sketchRectangle(bluePlane, '#0000FF')
-sketchRectangle(yellowPlane, '#FFFF00')
-sketchRectangle(greenPlane, '#00FF00')
-sketchRectangle(redPlane, '#FF0000')
-sketchRectangle(tealPlane, '#00FFFF')
-sketchRectangle(purplePlane, '#FF00FF')
+sketchRectangle(profile = bluePlane, color = '#0000FF')
+sketchRectangle(profile = yellowPlane, color = '#FFFF00')
+sketchRectangle(profile = greenPlane, color = '#00FF00')
+sketchRectangle(profile = redPlane, color = '#FF0000')
+sketchRectangle(profile = tealPlane, color = '#00FFFF')
+sketchRectangle(profile = purplePlane, color = '#FF00FF')
diff --git a/public/kcl-samples/cycloidal-gear/main.kcl b/public/kcl-samples/cycloidal-gear/main.kcl
index a325e7a1a..19193eef6 100644
--- a/public/kcl-samples/cycloidal-gear/main.kcl
+++ b/public/kcl-samples/cycloidal-gear/main.kcl
@@ -7,7 +7,7 @@
// Create a function for the cycloidal gear
fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle: number(deg)) {
// Create a function to draw the gear profile as a sketch. Rotate each profile about the gear's axis by an helix angle proportional to the total gear height
- fn gearSketch(gHeight) {
+ fn gearSketch(@gHeight) {
helixAngleP = helixAngle * gHeight / gearHeight
gearProfile = startSketchOn(offsetPlane(XY, offset = gHeight))
|> startProfile(at = [
@@ -36,4 +36,9 @@ fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle: number(deg)) {
}
// Call the cycloidal gear function
-cycloidalGear(.3, 1.5, 0.297, -80)
+cycloidalGear(
+ gearPitch = .3,
+ gearHeight = 1.5,
+ holeDiameter = 0.297,
+ helixAngle = -80,
+)
diff --git a/public/kcl-samples/dodecahedron/main.kcl b/public/kcl-samples/dodecahedron/main.kcl
index 2a38fc53f..0bcef31df 100644
--- a/public/kcl-samples/dodecahedron/main.kcl
+++ b/public/kcl-samples/dodecahedron/main.kcl
@@ -8,7 +8,7 @@
dihedral = 116.565
// Create a face template function that makes a large thin cube
-fn createFaceTemplate(dither) {
+fn createFaceTemplate(@dither) {
baseSketch = startSketchOn(XY)
|> startProfile(at = [-1000 - dither, -1000 - dither])
|> line(endAbsolute = [1000 + dither, -1000 - dither])
@@ -62,7 +62,7 @@ dodecFaces = map(
},
)
-fn calculateArrayLength(arr) {
+fn calculateArrayLength(@arr) {
return reduce(
arr,
initial = 0,
@@ -72,7 +72,7 @@ fn calculateArrayLength(arr) {
)
}
-fn createIntersection(solids) {
+fn createIntersection(@solids) {
fn reduceIntersect(previous, current) {
return intersect([previous, current])
}
diff --git a/public/kcl-samples/enclosure/main.kcl b/public/kcl-samples/enclosure/main.kcl
index 113ddfb24..35816874b 100644
--- a/public/kcl-samples/enclosure/main.kcl
+++ b/public/kcl-samples/enclosure/main.kcl
@@ -34,7 +34,7 @@ extrude001 = extrude(sketch001, length = height)
|> shell(faces = [END], thickness = wallThickness)
// Define a function to create the internal structure to secure a fastener at each corner
-fn function001(originStart) {
+fn function001(@originStart) {
// Create a plane to sketch on shell interior
plane001 = {
origin = [0.0, 0.0, wallThickness],
diff --git a/public/kcl-samples/exhaust-manifold/main.kcl b/public/kcl-samples/exhaust-manifold/main.kcl
index a5104bf38..bb7132457 100644
--- a/public/kcl-samples/exhaust-manifold/main.kcl
+++ b/public/kcl-samples/exhaust-manifold/main.kcl
@@ -42,10 +42,34 @@ fn primaryTube(n, angle001, length001, length002, length003) {
}
// Draw a primary tube for each cylinder with specified lengths and angles
-primaryTube(0, 0, 3, 6, 5)
-primaryTube(1, 1, 3, 6, 5)
-primaryTube(2, 24.3, 5, 5, 3)
-primaryTube(3, 25.2, 5, 5, 3)
+primaryTube(
+ n = 0,
+ angle001 = 0,
+ length001 = 3,
+ length002 = 6,
+ length003 = 5,
+)
+primaryTube(
+ n = 1,
+ angle001 = 1,
+ length001 = 3,
+ length002 = 6,
+ length003 = 5,
+)
+primaryTube(
+ n = 2,
+ angle001 = 24.3,
+ length001 = 5,
+ length002 = 5,
+ length003 = 3,
+)
+primaryTube(
+ n = 3,
+ angle001 = 25.2,
+ length001 = 5,
+ length002 = 5,
+ length003 = 3,
+)
// Create the mounting flange for the header
flangeSketch = startSketchOn(XY)
diff --git a/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl b/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl
index 6f1c1189a..d5a0f402b 100644
--- a/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl
+++ b/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl
@@ -15,17 +15,6 @@ tabLength = 25
tabWidth = 12
tabThk = 4
-// Define a rectangular shape func
-fn rectShape(pos, w, l) {
- rr = startSketchOn(XY)
- |> startProfile(at = [pos[0] - (w / 2), pos[1] - (l / 2)])
- |> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge01)
- |> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge02)
- |> line(endAbsolute = [pos[0] - (w / 2), pos[1] + l / 2], tag = $edge03)
- |> close(tag = $edge04)
- return rr
-}
-
// Define the bracket plane
bracketPlane = {
origin = { x = 0, y = length / 2 + thk, z = 0 },
@@ -50,7 +39,7 @@ fn bracketSketch(w, d, t) {
}
// Build the body of the bracket
-bs = bracketSketch(width, depth, thk)
+bs = bracketSketch(w = width, d = depth, t = thk)
bracketBody = bs
|> extrude(length = length + 2 * thk)
|> fillet(
diff --git a/public/kcl-samples/food-service-spatula/main.kcl b/public/kcl-samples/food-service-spatula/main.kcl
index 83aaa5401..29f42a6ec 100644
--- a/public/kcl-samples/food-service-spatula/main.kcl
+++ b/public/kcl-samples/food-service-spatula/main.kcl
@@ -55,13 +55,28 @@ flipperProfile = startProfile(flipperSketch, at = [-flipperLength, -32.0])
|> close()
// Create a profile of the middle
-slotProfile000 = slot(flipperSketch, [-25, 0], [-55, 0], flipperSlotWidth)
+slotProfile000 = slot(
+ sketch1 = flipperSketch,
+ start = [-25, 0],
+ end = [-55, 0],
+ width = flipperSlotWidth,
+)
// Create a profile of the top slot
-slotProfile001 = slot(flipperSketch, [-25, 18], [-55, 19], flipperSlotWidth)
+slotProfile001 = slot(
+ sketch1 = flipperSketch,
+ start = [-25, 18],
+ end = [-55, 19],
+ width = flipperSlotWidth,
+)
// Create a profile of the bottom slot
-slotProfile002 = slot(flipperSketch, [-25, -18], [-55, -19], flipperSlotWidth)
+slotProfile002 = slot(
+ sketch1 = flipperSketch,
+ start = [-25, -18],
+ end = [-55, -19],
+ width = flipperSlotWidth,
+)
// Create a profile with slots for the spatula
spatulaProfile = flipperProfile
@@ -138,7 +153,12 @@ grip = extrude(gripProfile, length = -gripLength)
holeSketch = startSketchOn(grip, face = gripEdgeTop)
// Create a profile for the grip hole
-gripHoleProfile = slot(holeSketch, [0, 200], [0, 210], gripSlotWidth)
+gripHoleProfile = slot(
+ sketch1 = holeSketch,
+ start = [0, 200],
+ end = [0, 210],
+ width = gripSlotWidth,
+)
// Cut a hole in the grip
extrude(gripHoleProfile, length = -gripWidth - 20)
diff --git a/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl b/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl
index 9be98dff7..5deff7bf3 100644
--- a/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl
+++ b/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl
@@ -22,7 +22,7 @@ countBinLength = 3
height = firstStep + secondStep + thirdStep
// Define a function which builds the profile of the baseplate bin
-fn face(plane) {
+fn face(@plane) {
faceSketch = startSketchOn(plane)
|> startProfile(at = [0, 0])
|> yLine(length = height)
@@ -84,7 +84,7 @@ basePlateCorners = patternLinear3d(
|> patternLinear3d(axis = [0.0, 1.0, 0.0], instances = countBinLength, distance = binLength)
// Create the center cutout for the magnet profile
-fn magnetCenterCutout(plane) {
+fn magnetCenterCutout(@plane) {
magnetSketch = startSketchOn(plane)
|> startProfile(at = [
firstStep + thirdStep,
@@ -111,7 +111,7 @@ fn magnetCenterCutout(plane) {
}
// Create the outside profile of the magnets
-fn magnetBase(plane) {
+fn magnetBase(@plane) {
magnetBaseSketch = startSketchOn(plane)
|> startProfile(at = [0, 0])
|> xLine(length = binLength, tag = $line001)
diff --git a/public/kcl-samples/gridfinity-baseplate/main.kcl b/public/kcl-samples/gridfinity-baseplate/main.kcl
index 1d1281fbe..e016a10bb 100644
--- a/public/kcl-samples/gridfinity-baseplate/main.kcl
+++ b/public/kcl-samples/gridfinity-baseplate/main.kcl
@@ -19,7 +19,7 @@ countBinLength = 3
height = firstStep + secondStep + thirdStep
// Define a function which builds the profile of the baseplate bin
-fn face(plane) {
+fn face(@plane) {
faceSketch = startSketchOn(plane)
|> startProfile(at = [0, 0])
|> yLine(length = height)
diff --git a/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl b/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl
index 0f63cdfa0..869e674e4 100644
--- a/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl
+++ b/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl
@@ -34,7 +34,7 @@ height = firstStep + secondStep + thirdStep
lipHeight = lipStep1 + lipStep2 + lipStep3 + lipStep4 + lipStep5
// Define a function which builds the profile of the baseplate bin
-fn face(plane) {
+fn face(@plane) {
faceSketch = startSketchOn(plane)
|> startProfile(at = [binBaseLength + binTol, 0])
|> yLine(length = height)
@@ -174,7 +174,7 @@ binTop = startSketchOn(offsetPlane(XY, offset = height))
|> shell(faces = [END], thickness = binThk)
// Define a function which builds the profile of the baseplate bin
-fn lipFace(plane) {
+fn lipFace(@plane) {
faceSketch = startSketchOn(plane)
|> startProfile(at = [0, 0])
// |> yLine(length = lipHeight, tag = $line100)
diff --git a/public/kcl-samples/gridfinity-bins/main.kcl b/public/kcl-samples/gridfinity-bins/main.kcl
index 1fbad9966..5458b3d72 100644
--- a/public/kcl-samples/gridfinity-bins/main.kcl
+++ b/public/kcl-samples/gridfinity-bins/main.kcl
@@ -27,7 +27,7 @@ countBinHeight = 2
height = firstStep + secondStep + thirdStep
// Define a function which builds the profile of the baseplate bin
-fn face(plane) {
+fn face(@plane) {
faceSketch = startSketchOn(plane)
|> startProfile(at = [binBaseLength + binTol, 0])
|> yLine(length = height)
diff --git a/public/kcl-samples/hex-nut/main.kcl b/public/kcl-samples/hex-nut/main.kcl
index 9d5432e71..fb61c1fd9 100644
--- a/public/kcl-samples/hex-nut/main.kcl
+++ b/public/kcl-samples/hex-nut/main.kcl
@@ -25,4 +25,4 @@ fn hexNut(start, thk, innerDia) {
}
// Create a hex nut
-hexNut([0, 0], thickness, diameter)
+hexNut(start = [0, 0], thk = thickness, innerDia = diameter)
diff --git a/public/kcl-samples/keyboard/main.kcl b/public/kcl-samples/keyboard/main.kcl
index b3c0bc8ad..5b46a7284 100644
--- a/public/kcl-samples/keyboard/main.kcl
+++ b/public/kcl-samples/keyboard/main.kcl
@@ -88,37 +88,163 @@ fn keyFn(originStart, keyWidth, keyHeight, repeats, color) {
}
// Build the first row of keys
-keyFn([0.3, row1], 1.1, keyHeight, 0, highlightColor2)
-keyFn([1.5, row1], 0.8, keyHeight, 2, highlightColor1)
-keyFn([spacing * 7 + 3.5, row1], 5.2, keyHeight, 0, highlightColor2)
-keyFn([spacing * 8 + 8.7, row1], 0.8, keyHeight, 0, highlightColor1)
-keyFn([spacing * 8 + 9.6, row1], 0.8, keyHeight, 0, highlightColor1)
-keyFn([spacing * 10 + 10.3, row1], 1.1, keyHeight, 0, highlightColor1)
-keyFn([spacing * 12 + 10.3 + 1, row1], 0.8, keyHeight, 0, highlightColor2)
+keyFn(
+ originStart = [0.3, row1],
+ keyWidth = 1.1,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
+keyFn(
+ originStart = [1.5, row1],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 2,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 7 + 3.5, row1],
+ keyWidth = 5.2,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
+keyFn(
+ originStart = [spacing * 8 + 8.7, row1],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 8 + 9.6, row1],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 10 + 10.3, row1],
+ keyWidth = 1.1,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 12 + 10.3 + 1, row1],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
// Build the second row of keys
-keyFn([spacing * 3, row2], 1.7, keyHeight, 0, highlightColor2)
-keyFn([spacing * 4 + 1.7, row2], 0.8, keyHeight, 9, highlightColor1)
-keyFn([spacing * 14 + 1.7 + 0.8 * 10, row2], 2.2, keyHeight, 0, highlightColor2)
+keyFn(
+ originStart = [spacing * 3, row2],
+ keyWidth = 1.7,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
+keyFn(
+ originStart = [spacing * 4 + 1.7, row2],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 9,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 14 + 1.7 + 0.8 * 10, row2],
+ keyWidth = 2.2,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
// Build the third row of keys
-keyFn([spacing * 3, row3], 1.1 + .1, keyHeight, 0, highlightColor1)
-keyFn([spacing * 4 + 1.1 + .1, row3], 0.8, keyHeight, 10, highlightColor1)
-keyFn([spacing * 3 + 11.1 + .1, row3], 1.4 + .4, keyHeight, 0, highlightColor2)
+keyFn(
+ originStart = [spacing * 3, row3],
+ keyWidth = 1.1 + .1,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 4 + 1.1 + .1, row3],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 10,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 3 + 11.1 + .1, row3],
+ keyWidth = 1.4 + .4,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
// Build the fourth row of keys
-keyFn([spacing * 3, row4], 0.9, keyHeight, 0, highlightColor1)
-keyFn([spacing * 4 + 0.9, row4], 0.8, keyHeight, 11, highlightColor1)
-keyFn([spacing * 3 + 11.8, row4], 1.2, keyHeight, 0, highlightColor1)
+keyFn(
+ originStart = [spacing * 3, row4],
+ keyWidth = 0.9,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 4 + 0.9, row4],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 11,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 3 + 11.8, row4],
+ keyWidth = 1.2,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor1,
+)
// Build the fifth row of keys
-keyFn([spacing * 3, row5], 0.8, keyHeight, 12, highlightColor1)
-keyFn([spacing * 3 + 11.7, row5], 1.3, keyHeight, 0, highlightColor2)
+keyFn(
+ originStart = [spacing * 3, row5],
+ keyWidth = 0.8,
+ keyHeight = keyHeight,
+ repeats = 12,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 3 + 11.7, row5],
+ keyWidth = 1.3,
+ keyHeight = keyHeight,
+ repeats = 0,
+ color = highlightColor2,
+)
// Build the sixth row of keys
-keyFn([spacing * 3, row6], 1.1, keyHeight * .6, 0, highlightColor2)
-keyFn([spacing * 4 + 1.1, row6], 0.8, keyHeight * .6, 11, highlightColor1)
-keyFn([spacing * 3 + 12, row6], 1, keyHeight * .6, 0, highlightColor2)
+keyFn(
+ originStart = [spacing * 3, row6],
+ keyWidth = 1.1,
+ keyHeight = keyHeight * .6,
+ repeats = 0,
+ color = highlightColor2,
+)
+keyFn(
+ originStart = [spacing * 4 + 1.1, row6],
+ keyWidth = 0.8,
+ keyHeight = keyHeight * .6,
+ repeats = 11,
+ color = highlightColor1,
+)
+keyFn(
+ originStart = [spacing * 3 + 12, row6],
+ keyWidth = 1,
+ keyHeight = keyHeight * .6,
+ repeats = 0,
+ color = highlightColor2,
+)
// Create a plane to sketch ZOO brand letters on
plane002 = {
@@ -185,6 +311,6 @@ fn o(origin, scale, depth) {
}
// Place the Z logo on the Z key. Place the O logo on the O and P keys
-z([2.3, 1.3], .4, 0.03)
-o([8.71, row4 + .08], 0.4, 0.03)
-o([8.71 + 0.9, row4 + .08], 0.4, 0.03)
+z(origin = [2.3, 1.3], scale = .4, depth = 0.03)
+o(origin = [8.71, row4 + .08], scale = 0.4, depth = 0.03)
+o(origin = [8.71 + 0.9, row4 + .08], scale = 0.4, depth = 0.03)
diff --git a/public/kcl-samples/kitt/main.kcl b/public/kcl-samples/kitt/main.kcl
index dbc62717e..b7a5757b4 100644
--- a/public/kcl-samples/kitt/main.kcl
+++ b/public/kcl-samples/kitt/main.kcl
@@ -37,7 +37,15 @@ kitHeadElevation = kitBodyElevation + kitBodyHeight - kitHeadOffset - kitHeadHei
kitHeadWidth = kitBodyWidth - (kitHeadOffset * 2)
kitHeadDepth = 3
-kitHead = pixelBox(kitBody, END, -kitHeadWidth / 2, kitHeadElevation, kitHeadWidth, kitHeadHeight, kitHeadDepth)
+kitHead = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = END,
+ positionY = -kitHeadWidth / 2,
+ positionZ = kitHeadElevation,
+ width = kitHeadWidth,
+ height = kitHeadHeight,
+ depth = kitHeadDepth,
+)
kitFaceElevation = kitHeadElevation + 2
// 3. Kitty Face
@@ -67,17 +75,49 @@ kitFace = startSketchOn(kitHead, face = END)
// 3.1.1 Kitty Left Eye
kitEyeDepth = 0.5
-kitEyeHeihgt = kitFaceElevation + 7
+kitEyeHeight = kitFaceElevation + 7
kitEyeOffset = 7
// 3.1.2 Kitty Right Eye
-kitLeftEye1 = pixelBox(kitFace, START, -kitEyeOffset, kitEyeHeihgt, 1, 1, kitEyeDepth)
+kitLeftEye1 = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = -kitEyeOffset,
+ positionZ = kitEyeHeight,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
// 3.2 Kitty Nose
-kitLeftEye2 = pixelBox(kitFace, START, -kitEyeOffset + 1, kitEyeHeihgt + 1, 3, 1, kitEyeDepth)
-kitLeftEye3 = pixelBox(kitFace, START, -kitEyeOffset + 4, kitEyeHeihgt, 1, 1, kitEyeDepth)
-kitRightEye = pixelBox(kitFace, START, kitEyeOffset - 3, kitEyeHeihgt - 1, 2, 4, kitEyeDepth)
-kitNoseElevation = kitEyeHeihgt - 5
+kitLeftEye2 = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = -kitEyeOffset + 1,
+ positionZ = kitEyeHeight + 1,
+ width = 3,
+ height = 1,
+ depth = kitEyeDepth,
+)
+kitLeftEye3 = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = -kitEyeOffset + 4,
+ positionZ = kitEyeHeight,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
+kitRightEye = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = kitEyeOffset - 3,
+ positionZ = kitEyeHeight - 1,
+ width = 2,
+ height = 4,
+ depth = kitEyeDepth,
+)
+kitNoseElevation = kitEyeHeight - 5
kitNose = startSketchOn(kitFace, face = START)
|> startProfile(at = [-2, kitNoseElevation]) // H V
|> line(end = [0, 1]) // lower-left up
@@ -97,13 +137,45 @@ kitNose = startSketchOn(kitFace, face = START)
// 3.3 Kitty Mouth
kitMouthOffset = 4
-kitMouthHeight = kitEyeHeihgt - 3
-kitMouthUpLeft = pixelBox(kitFace, START, -kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth)
+kitMouthHeight = kitEyeHeight - 3
+kitMouthUpLeft = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = -kitMouthOffset,
+ positionZ = kitMouthHeight,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
// 4. Kitty Belly
-kitMouthDownLeft = pixelBox(kitFace, START, -kitMouthOffset + 1, kitMouthHeight - 1, 1, 1, kitEyeDepth)
-kitMouthUpRight = pixelBox(kitFace, START, kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth)
-kitMouthDownRight = pixelBox(kitFace, START, kitMouthOffset - 1, kitMouthHeight - 1, 1, 1, kitEyeDepth)
+kitMouthDownLeft = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = -kitMouthOffset + 1,
+ positionZ = kitMouthHeight - 1,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
+kitMouthUpRight = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = kitMouthOffset,
+ positionZ = kitMouthHeight,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
+kitMouthDownRight = pixelBox(
+ kitExtrude = kitFace,
+ extrudeTag = START,
+ positionY = kitMouthOffset - 1,
+ positionZ = kitMouthHeight - 1,
+ width = 1,
+ height = 1,
+ depth = kitEyeDepth,
+)
kitBellyElevation = kitBodyElevation + 1
kitBellyHeight = kitHeadElevation - kitBellyElevation - 1
@@ -111,7 +183,15 @@ kitBellyHeight = kitHeadElevation - kitBellyElevation - 1
// 4.1 Kitty VHS
kitBellyWidth = kitHeadWidth
kitBellyDepth = kitHeadDepth
-kitBelly = pixelBox(kitBody, END, -kitBellyWidth / 2, kitBellyElevation, kitBellyWidth, kitBellyHeight, kitBellyDepth)
+kitBelly = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = END,
+ positionY = -kitBellyWidth / 2,
+ positionZ = kitBellyElevation,
+ width = kitBellyWidth,
+ height = kitBellyHeight,
+ depth = kitBellyDepth,
+)
kitVHSelevation = kitBellyElevation + 1
kitVHSheight = 2
@@ -119,7 +199,15 @@ kitVHSheight = 2
// 4.2 Kitty Floppy
kitVHSwidth = 8
kitVHSdepth = 1
-kitVHS = pixelBox(kitBelly, END, -kitVHSwidth / 2, kitVHSelevation, kitVHSwidth, kitVHSheight, kitVHSdepth)
+kitVHS = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = -kitVHSwidth / 2,
+ positionZ = kitVHSelevation,
+ width = kitVHSwidth,
+ height = kitVHSheight,
+ depth = kitVHSdepth,
+)
kitFloppyElevation = kitBellyElevation + 1
kitFloppyHeight = 1
@@ -128,9 +216,33 @@ kitFloppyOffset = kitBellyWidth / 2 - 1
kitFloppyDepth = 2
// 4.3 Kitty Belly Button
-kitFloppy1 = pixelBox(kitBelly, END, -kitFloppyOffset, kitFloppyElevation, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth)
-kitFloppy2 = pixelBox(kitBelly, END, -kitFloppyOffset, kitFloppyElevation + 2, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth)
-kitFloppy3 = pixelBox(kitBelly, END, kitFloppyOffset, kitFloppyElevation, -kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth)
+kitFloppy1 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = -kitFloppyOffset,
+ positionZ = kitFloppyElevation,
+ width = kitFloppyWidth,
+ height = kitFloppyHeight,
+ depth = -kitFloppyDepth,
+)
+kitFloppy2 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = -kitFloppyOffset,
+ positionZ = kitFloppyElevation + 2,
+ width = kitFloppyWidth,
+ height = kitFloppyHeight,
+ depth = -kitFloppyDepth,
+)
+kitFloppy3 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = kitFloppyOffset,
+ positionZ = kitFloppyElevation,
+ width = -kitFloppyWidth,
+ height = kitFloppyHeight,
+ depth = -kitFloppyDepth,
+)
kitBellyButtonOffset = kitHeadWidth / 2 - 3
kitBellyButtonElevation = kitHeadElevation - 1
@@ -139,18 +251,50 @@ kitBellyButtonWidth = 2
// 4.4 Kitty Buttons
kitBellyButtonHeight = 1
kitBellyButtonDepth = kitHeadDepth + 1
-kitBellyButton = pixelBox(kitBody, END, -kitBellyButtonOffset, kitBellyButtonElevation, kitBellyButtonWidth, kitBellyButtonHeight, kitBellyButtonDepth)
+kitBellyButton = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = END,
+ positionY = -kitBellyButtonOffset,
+ positionZ = kitBellyButtonElevation,
+ width = kitBellyButtonWidth,
+ height = kitBellyButtonHeight,
+ depth = kitBellyButtonDepth,
+)
kitButtonWidth = 1
kitButtonHeight = 2
kitButtonDepth = kitFloppyDepth
kitButtonElevation = kitFloppyElevation + 2
-kitButton1 = pixelBox(kitBelly, END, kitFloppyOffset, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth)
+kitButton1 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = kitFloppyOffset,
+ positionZ = kitFloppyElevation + 2,
+ width = -kitButtonWidth,
+ height = kitButtonHeight,
+ depth = -kitButtonDepth,
+)
// 5. Kitty Legs
-kitButton2 = pixelBox(kitBelly, END, kitFloppyOffset - kitButtonWidth - 1, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth)
-kitButton3 = pixelBox(kitBelly, END, kitFloppyOffset - (2 * (kitButtonWidth + 1)), kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth)
+kitButton2 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = kitFloppyOffset - kitButtonWidth - 1,
+ positionZ = kitFloppyElevation + 2,
+ width = -kitButtonWidth,
+ height = kitButtonHeight,
+ depth = -kitButtonDepth,
+)
+kitButton3 = pixelBox(
+ kitExtrude = kitBelly,
+ extrudeTag = END,
+ positionY = kitFloppyOffset - (2 * (kitButtonWidth + 1)),
+ positionZ = kitFloppyElevation + 2,
+ width = -kitButtonWidth,
+ height = kitButtonHeight,
+ depth = -kitButtonDepth,
+)
kitShoeWidth = 7
kitShoeLength = 10
@@ -175,14 +319,22 @@ fn kitLeg(offsetFront, offsetSide) {
kitPantsFrontWidth = kitPantsWidth
kitPantsHeight = kitBodyElevation - kitShoeHeight
- kitPants = pixelBox(kitShoe, END, kitPantsOffsetSide, kitPantsOffsetFront, kitPantsFrontWidth, kitPantsWidth, kitPantsHeight)
+ kitPants = pixelBox(
+ kitExtrude = kitShoe,
+ extrudeTag = END,
+ positionY = kitPantsOffsetSide,
+ positionZ = kitPantsOffsetFront,
+ width = kitPantsFrontWidth,
+ height = kitPantsWidth,
+ depth = kitPantsHeight,
+ )
return kitShoe
}
kitLegOffset = 3
-kitRightLeg = kitLeg(0, kitLegOffset)
-kitLeftLeg = kitLeg(0, -kitLegOffset - kitShoeWidth)
+kitRightLeg = kitLeg(offsetFront = 0, offsetSide = kitLegOffset)
+kitLeftLeg = kitLeg(offsetFront = 0, offsetSide = -kitLegOffset - kitShoeWidth)
// 6. Kitty Ears
kitEarWidth = 8
@@ -192,24 +344,56 @@ kitEarHeight = 2
fn kitEar(earOffsetFront, earOffsetSide) {
kitNewEarOffsetFront = kitBodyDepth - earOffsetFront
kitNewEarOffsetSide = -(kitBodyWidth / 2 - earOffsetSide)
- baseVolume = pixelBox(kitBody, seg01, kitNewEarOffsetSide, kitNewEarOffsetFront, kitEarWidth, -kitEarDepth, kitEarHeight)
+ baseVolume = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg01,
+ positionY = kitNewEarOffsetSide,
+ positionZ = kitNewEarOffsetFront,
+ width = kitEarWidth,
+ height = -kitEarDepth,
+ depth = kitEarHeight,
+ )
secondOffset = 1
- secondLevel = pixelBox(baseVolume, END, kitNewEarOffsetSide + secondOffset, kitNewEarOffsetFront - 0.01, kitEarWidth - (secondOffset * 2), -kitEarDepth + secondOffset * 2, kitEarHeight)
+ secondLevel = pixelBox(
+ kitExtrude = baseVolume,
+ extrudeTag = END,
+ positionY = kitNewEarOffsetSide + secondOffset,
+ positionZ = kitNewEarOffsetFront - 0.01,
+ width = kitEarWidth - (secondOffset * 2),
+ height = -kitEarDepth + secondOffset * 2,
+ depth = kitEarHeight,
+ )
thirdOffset = 2
- thirdLevel = pixelBox(secondLevel, END, kitNewEarOffsetSide + thirdOffset, kitNewEarOffsetFront - 0.02, kitEarWidth - (thirdOffset * 2), -kitEarDepth + thirdOffset * 2, kitEarHeight)
+ thirdLevel = pixelBox(
+ kitExtrude = secondLevel,
+ extrudeTag = END,
+ positionY = kitNewEarOffsetSide + thirdOffset,
+ positionZ = kitNewEarOffsetFront - 0.02,
+ width = kitEarWidth - (thirdOffset * 2),
+ height = -kitEarDepth + thirdOffset * 2,
+ depth = kitEarHeight,
+ )
fourthOffset = 3
- fourthLevel = pixelBox(thirdLevel, END, kitNewEarOffsetSide + fourthOffset, kitNewEarOffsetFront - 0.03, kitEarWidth - (fourthOffset * 2), -kitEarDepth + fourthOffset * 2, kitEarHeight)
+ fourthLevel = pixelBox(
+ kitExtrude = thirdLevel,
+ extrudeTag = END,
+ positionY = kitNewEarOffsetSide + fourthOffset,
+ positionZ = kitNewEarOffsetFront - 0.03,
+ width = kitEarWidth - (fourthOffset * 2),
+ height = -kitEarDepth + fourthOffset * 2,
+ depth = kitEarHeight,
+ )
return baseVolume
}
kitEarOffsetFront = 4
kitEarOffsetSide = 1
-kitRightEar = kitEar(kitEarOffsetFront, kitEarOffsetSide)
-kitLeftEar = kitEar(kitEarOffsetFront, kitBodyWidth - kitEarWidth - kitEarOffsetSide)
+kitRightEar = kitEar(earOffsetFront = kitEarOffsetFront, earOffsetSide = kitEarOffsetSide)
+kitLeftEar = kitEar(earOffsetFront = kitEarOffsetFront, earOffsetSide = kitBodyWidth - kitEarWidth - kitEarOffsetSide)
// 7. Kitty Side
// 7.1 Grill
@@ -228,19 +412,75 @@ grillColumnE = grillColumnA - 4
grillHoleSize = 1
grillHoleDepth = -2
-grillHoleAB = pixelBox(kitBody, seg02, grillRowA, grillColumnB, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleAB = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowA,
+ positionZ = grillColumnB,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleAD = pixelBox(kitBody, seg02, grillRowA, grillColumnD, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleAD = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowA,
+ positionZ = grillColumnD,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleBA = pixelBox(kitBody, seg02, grillRowB, grillColumnA, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleBA = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowB,
+ positionZ = grillColumnA,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleBC = pixelBox(kitBody, seg02, grillRowB, grillColumnC, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleBC = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowB,
+ positionZ = grillColumnC,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleBE = pixelBox(kitBody, seg02, grillRowB, grillColumnE, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleBE = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowB,
+ positionZ = grillColumnE,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleCB = pixelBox(kitBody, seg02, grillRowC, grillColumnB, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleCB = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowC,
+ positionZ = grillColumnB,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
-grillHoleCD = pixelBox(kitBody, seg02, grillRowC, grillColumnD, grillHoleSize, grillHoleSize, grillHoleDepth)
+grillHoleCD = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = grillRowC,
+ positionZ = grillColumnD,
+ width = grillHoleSize,
+ height = grillHoleSize,
+ depth = grillHoleDepth,
+)
// 7.2 Kitty Vent
kitVentElevation = kitBodyElevation + 1
@@ -249,8 +489,32 @@ kitVentHoleWidth = 1
kitVentHoleHeight = 4
kitVentHoleDepth = grillHoleDepth
-kitVentA = pixelBox(kitBody, seg02, kitVentElevation, kitVentOffset, kitVentHoleHeight, kitVentHoleWidth, kitVentHoleDepth)
+kitVentA = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = kitVentElevation,
+ positionZ = kitVentOffset,
+ width = kitVentHoleHeight,
+ height = kitVentHoleWidth,
+ depth = kitVentHoleDepth,
+)
-kitVentB = pixelBox(kitBody, seg02, kitVentElevation, kitVentOffset + 2, kitVentHoleHeight, kitVentHoleWidth, kitVentHoleDepth)
+kitVentB = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = kitVentElevation,
+ positionZ = kitVentOffset + 2,
+ width = kitVentHoleHeight,
+ height = kitVentHoleWidth,
+ depth = kitVentHoleDepth,
+)
-kitVentC = pixelBox(kitBody, seg02, kitVentElevation, kitVentOffset + 4, kitVentHoleHeight, kitVentHoleWidth, kitVentHoleDepth)
+kitVentC = pixelBox(
+ kitExtrude = kitBody,
+ extrudeTag = seg02,
+ positionY = kitVentElevation,
+ positionZ = kitVentOffset + 4,
+ width = kitVentHoleHeight,
+ height = kitVentHoleWidth,
+ depth = kitVentHoleDepth,
+)
diff --git a/public/kcl-samples/makeup-mirror/main.kcl b/public/kcl-samples/makeup-mirror/main.kcl
index a2586ab97..e88b25e15 100644
--- a/public/kcl-samples/makeup-mirror/main.kcl
+++ b/public/kcl-samples/makeup-mirror/main.kcl
@@ -29,15 +29,15 @@ fn hingeFn(x, y, z) {
return hingeBody
}
-hingePartA1 = hingeFn(0, 0, 0)
-hingePartA2 = hingeFn(0, 0, hingeHeight + hingeGap)
-hingePartA3 = hingeFn(0, 0, hingeHeight * 2 + hingeGap * 2)
+hingePartA1 = hingeFn(x = 0, y = 0, z = 0)
+hingePartA2 = hingeFn(x = 0, y = 0, z = hingeHeight + hingeGap)
+hingePartA3 = hingeFn(x = 0, y = 0, z = hingeHeight * 2 + hingeGap * 2)
-hingePartB2 = hingeFn(armLength, 0, hingeHeight + hingeGap)
-hingePartB3 = hingeFn(armLength, 0, hingeHeight * 2 + hingeGap * 2)
+hingePartB2 = hingeFn(x = armLength, y = 0, z = hingeHeight + hingeGap)
+hingePartB3 = hingeFn(x = armLength, y = 0, z = hingeHeight * 2 + hingeGap * 2)
-hingePartC2 = hingeFn(armLength, -armLength, hingeHeight * 2 + hingeGap * 2)
-hingePartC3 = hingeFn(armLength, -armLength, hingeHeight * 3 + hingeGap * 3)
+hingePartC2 = hingeFn(x = armLength, y = -armLength, z = hingeHeight * 2 + hingeGap * 2)
+hingePartC3 = hingeFn(x = armLength, y = -armLength, z = hingeHeight * 3 + hingeGap * 3)
// Add a function to create the arm
fn armFn(plane, offset, altitude) {
@@ -47,8 +47,8 @@ fn armFn(plane, offset, altitude) {
return armBody
}
-armPartA = armFn(YZ, 0, hingeHeight * 1.5 + hingeGap)
-armPartB = armFn(XZ, armLength, hingeHeight * 2.5 + hingeGap * 2)
+armPartA = armFn(plane = YZ, offset = 0, altitude = hingeHeight * 1.5 + hingeGap)
+armPartB = armFn(plane = XZ, offset = armLength, altitude = hingeHeight * 2.5 + hingeGap * 2)
// Add a function to create the mirror
fn mirrorFn(plane, offsetX, offsetY, altitude, radius, tiefe, gestellR, gestellD) {
@@ -72,4 +72,13 @@ fn mirrorFn(plane, offsetX, offsetY, altitude, radius, tiefe, gestellR, gestellD
return armBody
}
-mirror = mirrorFn(XZ, armLength, armLength, hingeHeight * 4 + hingeGap * 3 + mirrorRadius + archToMirrorGap + archThickness, mirrorRadius, mirrorThickness, archRadius, archThickness)
+mirror = mirrorFn(
+ plane = XZ,
+ offsetX = armLength,
+ offsetY = armLength,
+ altitude = hingeHeight * 4 + hingeGap * 3 + mirrorRadius + archToMirrorGap + archThickness,
+ radius = mirrorRadius,
+ tiefe = mirrorThickness,
+ gestellR = archRadius,
+ gestellD = archThickness,
+)
diff --git a/public/kcl-samples/mounting-plate/main.kcl b/public/kcl-samples/mounting-plate/main.kcl
index b4a323481..601a87c44 100644
--- a/public/kcl-samples/mounting-plate/main.kcl
+++ b/public/kcl-samples/mounting-plate/main.kcl
@@ -27,7 +27,7 @@ holeRadius = .25
holeIndex = .75
// Create the mounting plate extrusion, holes, and fillets
-rs = rectShape([0, 0], plateWidth, plateLength)
+rs = rectShape(pos = [0, 0], w = plateWidth, l = plateLength)
part = rs
|> subtract2d(tool = circle(
center = [
diff --git a/public/kcl-samples/walkie-talkie/case.kcl b/public/kcl-samples/walkie-talkie/case.kcl
index 84c658978..8b1b562a9 100644
--- a/public/kcl-samples/walkie-talkie/case.kcl
+++ b/public/kcl-samples/walkie-talkie/case.kcl
@@ -62,10 +62,10 @@ case = startSketchOn(XZ)
|> subtract2d(tool = squareHolePatternSketch)
// Create the Zoo logo
- |> subtract2d(tool = zLogo(startSketchOn(XZ), [-.30, -1.825], .20))
- |> subtract2d(tool = oLogo(startSketchOn(XZ), [-.075, -1.825], .20))
- |> subtract2d(tool = oLogo2(startSketchOn(XZ), [-.075, -1.825], .20))
- |> subtract2d(tool = oLogo(startSketchOn(XZ), [.175, -1.825], .20))
- |> subtract2d(tool = oLogo2(startSketchOn(XZ), [.175, -1.825], .20))
+ |> subtract2d(tool = zLogo(surface = startSketchOn(XZ), origin = [-.30, -1.825], scale = .20))
+ |> subtract2d(tool = oLogo(surface = startSketchOn(XZ), origin = [-.075, -1.825], scale = .20))
+ |> subtract2d(tool = oLogo2(surface = startSketchOn(XZ), origin = [-.075, -1.825], scale = .20))
+ |> subtract2d(tool = oLogo(surface = startSketchOn(XZ), origin = [.175, -1.825], scale = .20))
+ |> subtract2d(tool = oLogo2(surface = startSketchOn(XZ), origin = [.175, -1.825], scale = .20))
extrude(case, length = -0.0625)
|> appearance(color = '#D0FF01', metalness = 0, roughness = 50)
diff --git a/public/zma-logomark-outlined.png b/public/zma-logomark-outlined.png
index 311f4f6c5..1da0517f9 100644
Binary files a/public/zma-logomark-outlined.png and b/public/zma-logomark-outlined.png differ
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index b3c589952..f34af57fd 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -713,6 +713,15 @@ dependencies = [
"typenum",
]
+[[package]]
+name = "csscolorparser"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46f9a16a848a7fb95dd47ce387ac1ee9a6df879ba784b815537fcd388a1a8288"
+dependencies = [
+ "phf",
+]
+
[[package]]
name = "darling"
version = "0.20.10"
@@ -1899,6 +1908,7 @@ dependencies = [
"console_error_panic_hook",
"convert_case",
"criterion",
+ "csscolorparser",
"dashmap 6.1.0",
"dhat",
"expectorate",
@@ -2064,9 +2074,9 @@ dependencies = [
[[package]]
name = "kittycad-modeling-cmds"
-version = "0.2.114"
+version = "0.2.115"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "681ce29b9da92aa6f8bfc003ccb79a9f1a84368e064d68684327b3181dfe16ec"
+checksum = "e95dfcade93787f8a7529ad7b9b81f038823e273e7684297085ef720962b7497"
dependencies = [
"anyhow",
"chrono",
@@ -2630,6 +2640,48 @@ dependencies = [
"sha2",
]
+[[package]]
+name = "phf"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+dependencies = [
+ "phf_macros",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
+dependencies = [
+ "phf_shared",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.100",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+dependencies = [
+ "siphasher",
+]
+
[[package]]
name = "phonenumber"
version = "0.3.7+8.13.52"
@@ -3575,6 +3627,12 @@ version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
+[[package]]
+name = "siphasher"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
[[package]]
name = "slab"
version = "0.4.9"
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index cff411851..d403ce4d3 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -36,7 +36,7 @@ dashmap = { version = "6.1.0" }
http = "1"
indexmap = "2.9.0"
kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] }
-kittycad-modeling-cmds = { version = "0.2.114", features = ["ts-rs", "websocket"] }
+kittycad-modeling-cmds = { version = "0.2.115", features = ["ts-rs", "websocket"] }
lazy_static = "1.5.0"
miette = "7.5.0"
pyo3 = { version = "0.24.1" }
diff --git a/rust/kcl-derive-docs/src/lib.rs b/rust/kcl-derive-docs/src/lib.rs
index 0a0a5abd8..b1cb159c4 100644
--- a/rust/kcl-derive-docs/src/lib.rs
+++ b/rust/kcl-derive-docs/src/lib.rs
@@ -792,15 +792,21 @@ fn rust_type_to_openapi_type(t: &str) -> String {
if t.starts_with("Option<") {
t = t.replace("Option<", "").replace('>', "");
}
+
+ if t == "[TyF64;2]" {
+ return "Point2d".to_owned();
+ }
+ if t == "[TyF64;3]" {
+ return "Point3d".to_owned();
+ }
+
if let Some((inner_type, _length)) = parse_array_type(&t) {
t = format!("[{inner_type}]")
}
- if t == "f64" || t == "TyF64" {
+ if t == "f64" || t == "TyF64" || t == "u32" || t == "NonZeroU32" {
return "number".to_string();
- } else if t == "u32" {
- return "integer".to_string();
- } else if t == "str" {
+ } else if t == "str" || t == "String" {
return "string".to_string();
} else {
return t.replace("f64", "number").replace("TyF64", "number").to_string();
diff --git a/rust/kcl-lib/Cargo.toml b/rust/kcl-lib/Cargo.toml
index bafd947da..9ad253667 100644
--- a/rust/kcl-lib/Cargo.toml
+++ b/rust/kcl-lib/Cargo.toml
@@ -31,6 +31,7 @@ clap = { version = "4.5.36", default-features = false, optional = true, features
"derive",
] }
convert_case = "0.8.0"
+csscolorparser = "0.7.0"
dashmap = { workspace = true }
dhat = { version = "0.3", optional = true }
fnv = "1.0.7"
diff --git a/rust/kcl-lib/e2e/executor/inputs/cube.kcl b/rust/kcl-lib/e2e/executor/inputs/cube.kcl
index 236ccb38f..d42b5a9d7 100644
--- a/rust/kcl-lib/e2e/executor/inputs/cube.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/cube.kcl
@@ -17,4 +17,4 @@ fn cube(length, center) {
|> extrude(length = length)
}
-myCube = cube(40, [0,0])
+myCube = cube(length=40, center=[0,0])
diff --git a/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl
index 8a6e4aa51..f2e0bde2a 100644
--- a/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl
@@ -48,7 +48,7 @@ fn bracketSketch(w, d, t) {
}
// build the body of the bracket
-bs = bracketSketch(width, depth, thk)
+bs = bracketSketch(w = width, d = depth, t = thk)
bracketBody = bs
|> fillet(
radius = radius,
diff --git a/rust/kcl-lib/e2e/executor/inputs/fillet-and-shell.kcl b/rust/kcl-lib/e2e/executor/inputs/fillet-and-shell.kcl
index 5049b7673..eac52902c 100644
--- a/rust/kcl-lib/e2e/executor/inputs/fillet-and-shell.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/fillet-and-shell.kcl
@@ -40,9 +40,9 @@ miniHdmiHole = startSketchOn(XY)
case = startSketchOn(XY)
|> startProfile(at = [0, 0])
- |> line(endAbsolute = [caseWidth, 0], $edge1)
- |> line(endAbsolute = [caseWidth, caseLength], $edge2)
- |> line(endAbsolute = [0, caseLength], $edge3)
+ |> line(endAbsolute = [caseWidth, 0], tag = $edge1)
+ |> line(endAbsolute = [caseWidth, caseLength], tag = $edge2)
+ |> line(endAbsolute = [0, caseLength], tag = $edge3)
|> close(tag = $edge4)
|> extrude(length = caseHeight)
|> fillet(
@@ -65,15 +65,15 @@ fn m25Screw(x, y, height) {
return screw
}
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
shell(
- faces = ['end'],
+ faces = [END],
thickness = caseThickness
)
diff --git a/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl b/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl
index 831ec4ffc..ed867dd74 100644
--- a/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl
@@ -48,7 +48,7 @@ fn bracketSketch(w, d, t) {
}
// build the body of the bracket
-bs = bracketSketch(width, depth, thk)
+bs = bracketSketch(w = width, d = depth, t = thk)
bracketBody = bs
|> extrude(length = length + 2 * thk)
|> fillet(
diff --git a/rust/kcl-lib/e2e/executor/inputs/function_sketch.kcl b/rust/kcl-lib/e2e/executor/inputs/function_sketch.kcl
index 10d18389d..b3db288fa 100644
--- a/rust/kcl-lib/e2e/executor/inputs/function_sketch.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/function_sketch.kcl
@@ -10,4 +10,4 @@ fn box(h, l, w) {
return myBox
}
-fnBox = box(3, 6, 10)
+fnBox = box(h = 3, l = 6, w = 10)
diff --git a/rust/kcl-lib/e2e/executor/inputs/function_sketch_with_position.kcl b/rust/kcl-lib/e2e/executor/inputs/function_sketch_with_position.kcl
index e1ff9664f..c1b2325bb 100644
--- a/rust/kcl-lib/e2e/executor/inputs/function_sketch_with_position.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/function_sketch_with_position.kcl
@@ -10,4 +10,4 @@ fn box(p, h, l, w) {
return myBox
}
-thing = box([0,0], 3, 6, 10)
+thing = box(p = [0,0], h = 3, l = 6, w = 10)
diff --git a/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl
index 819d53f69..5fc1a34cf 100644
--- a/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl
@@ -48,7 +48,7 @@ fn bracketSketch(w, d, t) {
}
// build the body of the bracket
-bs = bracketSketch(width, depth, thk)
+bs = bracketSketch(w = width, d = depth, t = thk)
bracketBody = bs
|> extrude(length = length + 2 * thk)
|> fillet(
diff --git a/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl b/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl
index 0748ced2d..aefc82a5d 100644
--- a/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl
@@ -3,14 +3,14 @@
// Comparators
-fn cond(bools) {
+fn cond(@bools) {
return fn(a, b) {
x = min([max([-1, a-b]), 1]) + 1
return bools[x]
}
}
-fn Not(b) { return if b { false } else { true } }
+fn Not(@b) { return if b { false } else { true } }
fn And(a, b) { return if a { if b { true } else { false } } else { false }}
fn Or(a, b) { return if a { true } else { if b { true } else { false }}}
@@ -18,14 +18,14 @@ Eq = cond([false, true, false])
Lt = cond([true, false, false])
Gt = cond([false, false, true])
-fn Lte(a, b) { return Not(Gt(a, b)) }
-fn Gte(a, b) { return Not(Lt(a, b)) }
+fn Lte(a, b) { return Not(Gt(a = a, b = b)) }
+fn Gte(a, b) { return Not(Lt(a = a, b = b)) }
// L-system
// Note: it was most concise to encode productions directly in axioms.
// Change them as you need.
-fn setSketch(state, q) {
+fn setSketch(@state, q) {
return {
depthMax = state.depthMax,
depth = state.depth + 1,
@@ -37,7 +37,7 @@ fn setSketch(state, q) {
}
}
-fn setDepth(state, q) {
+fn setDepth(@state, q) {
return {
depthMax = state.depthMax,
depth = q,
@@ -49,7 +49,7 @@ fn setDepth(state, q) {
}
}
-fn setAngle(state, q) {
+fn setAngle(@state, q) {
return {
depthMax = state.depthMax,
depth = state.depth,
@@ -61,7 +61,7 @@ fn setAngle(state, q) {
}
}
-fn setLength(state, q) {
+fn setLength(@state, q) {
return {
depthMax = state.depthMax,
depth = state.depth,
@@ -73,31 +73,31 @@ fn setLength(state, q) {
}
}
-fn Gt2(state) { return setLength(state, state.currentLength * state.factor) }
-fn Lt2(state) { return setLength(state, state.currentLength / state.factor) }
-fn Add(state) { return setAngle(state, rem(state.currentAngle - state.angle, divisor = 360)) }
-fn Sub(state) { return setAngle(state, rem(state.currentAngle + state.angle, divisor = 360)) }
+fn Gt2(@state) { return setLength(state, q = state.currentLength * state.factor) }
+fn Lt2(@state) { return setLength(state, q = state.currentLength / state.factor) }
+fn Add(@state) { return setAngle(state, q = rem(state.currentAngle - state.angle, divisor = 360)) }
+fn Sub(@state) { return setAngle(state, q = rem(state.currentAngle + state.angle, divisor = 360)) }
// Only necessary to get around recursion limitations...
-fn F(state, F) {
- return if Lt(state.depth, state.depthMax) {
- stateNext = state |> setDepth(%, state.depth + 1)
+fn F(@state, F) {
+ return if Lt(a = state.depth, b = state.depthMax) {
+ stateNext = state |> setDepth(%, q = state.depth + 1)
// Produce
// Note:if you need [ and ], just save state to a variable.
stateNext
- |> F(%, F) |> Sub(%) |> F(%, F)
+ |> F(%, F = F) |> Sub(%) |> F(%, F = F)
|> Add(%) |> Add(%)
- |> F(%, F) |> Sub(%) |> F(%, F)
- |> setDepth(%, stateNext.depth - 1)
+ |> F(%, F = F) |> Sub(%) |> F(%, F = F)
+ |> setDepth(%, q = stateNext.depth - 1)
} else {
// Pass onto the next instruction
- state |> setSketch(%, angledLine(state.q, angle = state.currentAngle, length = state.currentLength))
+ state |> setSketch(%, q = angledLine(state.q, angle = state.currentAngle, length = state.currentLength))
}
}
-fn LSystem(args, axioms) {
+fn LSystem(@args, axioms) {
myThing = startSketchOn(XY)
|> startProfile(at = [0, 0])
return axioms({
@@ -115,7 +115,8 @@ LSystem({
iterations = 1,
factor = 1.36,
angle = 60,
-}, fn(q) {
- result = q |> F(%, F) |> Add(%) |> Add(%) |> F(%, F) |> Add(%) |> Add(%) |> F(%, F)
+}, axioms = fn(@q) {
+ result = q |> F(%, F = F) |> Add(%) |> Add(%) |> F(%, F = F) |> Add(%) |> Add(%) |> F(%, F = F)
return result.q
})
+
diff --git a/rust/kcl-lib/e2e/executor/inputs/member_expression_sketch.kcl b/rust/kcl-lib/e2e/executor/inputs/member_expression_sketch.kcl
index f251c5ba7..72ba39c2e 100644
--- a/rust/kcl-lib/e2e/executor/inputs/member_expression_sketch.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/member_expression_sketch.kcl
@@ -9,8 +9,8 @@ fn square(pos, scale) {
return sg
}
-sq = square([0,0], 10)
-cb = square([3,3], 4)
+sq = square(pos = [0,0], scale = 10)
+cb = square(pos = [3,3], scale = 4)
|> extrude(length = 10)
// pt1 = sq.paths[0]
diff --git a/rust/kcl-lib/e2e/executor/inputs/negative_args.kcl b/rust/kcl-lib/e2e/executor/inputs/negative_args.kcl
index ce660f60a..7066a271c 100644
--- a/rust/kcl-lib/e2e/executor/inputs/negative_args.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/negative_args.kcl
@@ -13,7 +13,7 @@ fn box(sk1, sk2, scale) {
return boxSketch
}
-box(0, 0, 5)
-box(10, 23, 8)
-thing = box(-12, -15, 10)
-box(-20, -5, 10)
+box(sk1 = 0, sk2 = 0, scale = 5)
+box(sk1 = 10, sk2 = 23, scale = 8)
+thing = box(sk1 = -12, sk2 = -15, scale = 10)
+box(sk1 = -20, sk2 = -5, scale = 10)
diff --git a/rust/kcl-lib/e2e/executor/inputs/no_visuals/identity.kcl b/rust/kcl-lib/e2e/executor/inputs/no_visuals/identity.kcl
index 01c9f74b0..266179666 100644
--- a/rust/kcl-lib/e2e/executor/inputs/no_visuals/identity.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/no_visuals/identity.kcl
@@ -1,3 +1,3 @@
-export fn identity(x) {
+export fn identity(@x) {
return x
}
diff --git a/rust/kcl-lib/e2e/executor/inputs/no_visuals/numbers.kcl b/rust/kcl-lib/e2e/executor/inputs/no_visuals/numbers.kcl
index 6f26c0049..d00dcd6cd 100644
--- a/rust/kcl-lib/e2e/executor/inputs/no_visuals/numbers.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/no_visuals/numbers.kcl
@@ -1,7 +1,7 @@
-export fn increment(x) {
+export fn increment(@x) {
return x + 1
}
-export fn decrement(x) {
+export fn decrement(@x) {
return x - 1
}
diff --git a/rust/kcl-lib/e2e/executor/inputs/no_visuals/pipe_substitution_inside_function_called_from_pipeline.kcl b/rust/kcl-lib/e2e/executor/inputs/no_visuals/pipe_substitution_inside_function_called_from_pipeline.kcl
index b56efda1f..5b31ef8db 100644
--- a/rust/kcl-lib/e2e/executor/inputs/no_visuals/pipe_substitution_inside_function_called_from_pipeline.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/no_visuals/pipe_substitution_inside_function_called_from_pipeline.kcl
@@ -1,5 +1,5 @@
// Make sure pipe value doesn't leak into the function call.
-fn f(ignored) {
+fn f(@ignored) {
return %
}
diff --git a/rust/kcl-lib/e2e/executor/inputs/pattern_vase.kcl b/rust/kcl-lib/e2e/executor/inputs/pattern_vase.kcl
index 4fd999134..2f776041f 100644
--- a/rust/kcl-lib/e2e/executor/inputs/pattern_vase.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/pattern_vase.kcl
@@ -4,7 +4,7 @@ h = 10 // layer height
t = 0.005 // taper factor [0-1)
// Defines how to modify each layer of the vase.
// Each replica is shifted up the Z axis, and has a smoothly-varying radius
-fn transform(replicaId) {
+fn transform(@replicaId) {
scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))
return {
translate = [0, 0, replicaId * 10],
diff --git a/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl b/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl
index 4e62c28d1..695d26ef4 100644
--- a/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl
@@ -10,7 +10,7 @@ p = startSketchOn(XY)
|> angledLine(angle = 300, length = triangleLen, tag = $c)
|> extrude(length = triangleHeight)
-fn circl(x, face) {
+fn circl(@x, face) {
return startSketchOn(p, face = face)
|> startProfile(at = [x + radius, triangleHeight/2])
|> arc(
@@ -22,7 +22,7 @@ return startSketchOn(p, face = face)
|> close()
}
-c1 = circl(-200,c)
+c1 = circl(-200, face = c)
plumbus1 =
c1
|> extrude(length = plumbusLen)
@@ -30,7 +30,7 @@ plumbus1 =
radius = 5,
tags = [c1.tags.arc_tag, getOppositeEdge(c1.tags.arc_tag)]
)
-c2 = circl(200, a)
+c2 = circl(200, face = a)
plumbus0 =
c2
|> extrude(length = plumbusLen)
diff --git a/rust/kcl-lib/e2e/executor/inputs/pipe_as_arg.kcl b/rust/kcl-lib/e2e/executor/inputs/pipe_as_arg.kcl
index c474adc9d..7bec20674 100644
--- a/rust/kcl-lib/e2e/executor/inputs/pipe_as_arg.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/pipe_as_arg.kcl
@@ -17,7 +17,7 @@ fn cube(length, center) {
|> extrude(length = length)
}
-fn double(x) { return x * 2}
+fn double(@x) { return x * 2}
fn width() { return 200 }
-myCube = cube(200 |> double(%), [0,0])
+myCube = cube(length = 200 |> double(), center = [0,0])
diff --git a/rust/kcl-lib/e2e/executor/inputs/riddle.kcl b/rust/kcl-lib/e2e/executor/inputs/riddle.kcl
index cf25ccc22..e7e12d850 100644
--- a/rust/kcl-lib/e2e/executor/inputs/riddle.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/riddle.kcl
@@ -1,11 +1,11 @@
ANSWER = 41803
-fn m(s) {
+fn m(@s) {
return (ANSWER * s + 12345) % 214748
}
-fn p(xs, ys) {
- ox = 35 - (m(xs) % 70)
- oy = 35 - (m(ys) % 70)
+fn p(x, y) {
+ ox = 35 - (m(x) % 70)
+ oy = 35 - (m(y) % 70)
r = startSketchOn(XZ)
|> startProfile(at = [ox, oy])
|> line(end = [1, 0])
@@ -15,2640 +15,2640 @@ fn p(xs, ys) {
|> extrude(length = 1)
return r
}
-p(177533, 177533)
-p(133828, 31489)
-p(144509, 138041)
-p(87312, 57981)
-p(160197, 14025)
-p(76508, 129013)
-p(212949, 43329)
-p(155560, 70405)
-p(23301, 60893)
-p(64504, 75837)
-p(32297, 166861)
-p(113668, 168121)
-p(84273, 151141)
-p(156140, 172777)
-p(172545, 179961)
-p(23840, 102521)
-p(14437, 158125)
-p(175384, 118925)
-p(74857, 149881)
-p(188160, 98057)
-p(7481, 153469)
-p(53632, 172685)
-p(71397, 109897)
-p(161504, 66717)
-p(59133, 126201)
-p(107904, 151817)
-p(70065, 208005)
-p(88948, 18197)
-p(117193, 119701)
-p(143744, 134645)
-p(192365, 65941)
-p(77044, 11013)
-p(9317, 54293)
-p(83804, 116305)
-p(87401, 139301)
-p(162664, 3545)
-p(53985, 72733)
-p(4748, 151041)
-p(109849, 31589)
-p(66428, 19649)
-p(211705, 141629)
-p(195360, 39449)
-p(62425, 42361)
-p(164956, 112325)
-p(169429, 128821)
-p(158808, 2769)
-p(127569, 108153)
-p(129956, 174721)
-p(91825, 71181)
-p(147196, 149005)
-p(103533, 49053)
-p(86320, 136389)
-p(26261, 148421)
-p(205548, 114361)
-p(69701, 7909)
-p(80524, 44689)
-p(35217, 156281)
-p(120084, 149297)
-p(173561, 146193)
-p(152268, 196165)
-p(28745, 13733)
-p(122832, 155021)
-p(42297, 30521)
-p(155600, 68853)
-p(51093, 184325)
-p(173616, 137457)
-p(61057, 197425)
-p(116036, 138817)
-p(65681, 162981)
-p(162981, 12040)
-p(12040, 12040)
-p(62221, 143240)
-p(148348, 201848)
-p(202309, 83656)
-p(7412, 49112)
-p(15573, 212236)
-p(167400, 74052)
-p(40189, 102872)
-p(68092, 162356)
-p(24629, 139260)
-p(129196, 186712)
-p(64189, 21068)
-p(156816, 24948)
-p(176817, 102096)
-p(131844, 161480)
-p(58493, 185744)
-p(130844, 93844)
-p(95141, 164876)
-p(83260, 68812)
-p(53089, 93068)
-p(115736, 49888)
-p(187745, 132760)
-p(36420, 153328)
-p(48461, 91224)
-p(0, 6416)
-p(115581, 15828)
-p(24708, 57164)
-p(144561, 117716)
-p(88332, 184384)
-p(136277, 92584)
-p(184272, 38924)
-p(193985, 91616)
-p(91664, 188848)
-p(191425, 13108)
-p(84064, 127420)
-p(109881, 202624)
-p(169908, 194380)
-p(34253, 124024)
-p(89624, 60952)
-p(134657, 194672)
-p(107056, 38240)
-p(144713, 155080)
-p(111972, 123732)
-p(11353, 112768)
-p(145224, 170508)
-p(140961, 196224)
-p(26800, 76572)
-p(156649, 116748)
-p(187372, 159252)
-p(18433, 104424)
-p(42264, 100544)
-p(161141, 44548)
-p(206324, 173320)
-p(174017, 16020)
-p(108476, 71040)
-p(169521, 209708)
-p(37796, 163132)
-p(108545, 106168)
-p(63188, 211844)
-p(214089, 61728)
-p(205804, 71816)
-p(85093, 48628)
-p(11400, 160704)
-p(72637, 9228)
-p(24176, 197484)
-p(43785, 151292)
-p(33164, 159152)
-p(183489, 3112)
-p(214121, 34269)
-p(88704, 137617)
-p(137617, 137617)
-p(48980, 164985)
-p(71017, 72601)
-p(84560, 78325)
-p(71369, 46885)
-p(155752, 53193)
-p(146157, 26409)
-p(35976, 131309)
-p(116913, 197201)
-p(152000, 94045)
-p(25273, 161681)
-p(139352, 169641)
-p(40669, 118985)
-p(127480, 154505)
-p(206281, 152077)
-p(163544, 102973)
-p(168209, 22045)
-p(192524, 59017)
-p(102677, 79877)
-p(88952, 62221)
-p(181145, 8845)
-p(171692, 49021)
-p(177717, 35045)
-p(20860, 183033)
-p(128581, 129173)
-p(53628, 166829)
-p(115257, 81821)
-p(90568, 20685)
-p(135501, 191477)
-p(81700, 82497)
-p(112473, 123549)
-p(78564, 67553)
-p(210449, 149265)
-p(107060, 9237)
-p(204301, 76581)
-p(108096, 157801)
-p(119553, 135481)
-p(64876, 20785)
-p(194725, 25341)
-p(30492, 93661)
-p(200901, 193221)
-p(8916, 161973)
-p(130321, 208649)
-p(176472, 7393)
-p(111657, 70565)
-p(62512, 2345)
-p(34961, 62413)
-p(172328, 188173)
-p(119353, 144509)
-p(100872, 122965)
-p(148141, 154989)
-p(152080, 12049)
-p(100557, 126361)
-p(39964, 205837)
-p(10569, 69789)
-p(6356, 120153)
-p(93893, 57949)
-p(166920, 9429)
-p(163533, 196033)
-p(158544, 40677)
-p(15221, 51833)
-p(18092, 106369)
-p(127657, 101521)
-p(166240, 35437)
-p(59021, 70857)
-p(194928, 96281)
-p(139625, 133637)
-p(16937, 95364)
-p(159252, 42380)
-p(132377, 98568)
-p(39633, 208124)
-p(92476, 48980)
-p(201849, 104100)
-p(17693, 174356)
-p(173300, 148348)
-p(175445, 189592)
-p(63969, 125836)
-p(68876, 174548)
-p(160685, 164168)
-p(138041, 212497)
-p(117716, 56749)
-p(154989, 12793)
-p(111733, 146513)
-p(9020, 144085)
-p(142073, 106921)
-p(134525, 76549)
-p(864, 63449)
-p(41917, 39285)
-p(158097, 110025)
-p(116036, 89065)
-p(65681, 25117)
-p(196457, 214592)
-p(143240, 87472)
-p(90165, 15664)
-p(102705, 4792)
-p(94128, 72820)
-p(176033, 71460)
-p(127249, 46228)
-p(156028, 140356)
-p(115861, 31576)
-p(9725, 28472)
-p(85372, 204696)
-p(212793, 193048)
-p(78557, 96017)
-p(71816, 165013)
-p(150041, 82725)
-p(213533, 213533)
-p(184088, 112513)
-p(70561, 62833)
-p(30344, 104169)
-p(36469, 66713)
-p(65540, 153173)
-p(197809, 118629)
-p(141488, 198105)
-p(208065, 90101)
-p(21612, 110769)
-p(208417, 158029)
-p(31084, 52061)
-p(170637, 202569)
-p(17468, 92329)
-p(176329, 201017)
-p(110081, 206157)
-p(177092, 34105)
-p(185253, 190537)
-p(200544, 148709)
-p(132525, 188693)
-p(75812, 127849)
-p(15749, 48181)
-p(199116, 15573)
-p(71905, 86705)
-p(198085, 18385)
-p(143316, 183645)
-p(106445, 93789)
-p(31684, 63025)
-p(150953, 154725)
-p(6712, 108441)
-p(85905, 145121)
-p(152432, 139689)
-p(22017, 32553)
-p(131732, 70885)
-p(210341, 193541)
-p(169156, 50993)
-p(99877, 57785)
-p(14052, 205189)
-p(54137, 125421)
-p(165081, 118821)
-p(30936, 121441)
-p(161845, 208001)
-p(177533, 105972)
-p(203500, 197188)
-p(144509, 207284)
-p(212949, 198356)
-p(198356, 198356)
-p(103261, 97144)
-p(64504, 106264)
-p(208229, 11844)
-p(189748, 151972)
-p(134637, 59104)
-p(29504, 150804)
-p(145861, 99764)
-p(9380, 165456)
-p(153589, 184864)
-p(81256, 76084)
-p(185773, 58812)
-p(118096, 115000)
-p(2725, 104128)
-p(138225, 60656)
-p(49780, 65796)
-p(11457, 154784)
-p(30044, 91612)
-p(178909, 165072)
-p(161404, 206600)
-p(11093, 121692)
-p(40164, 30184)
-p(162537, 61624)
-p(162473, 147116)
-p(107796, 34940)
-p(1161, 114416)
-p(2864, 53864)
-p(82349, 131104)
-p(209328, 15532)
-p(204197, 92388)
-p(149036, 182536)
-p(68309, 173900)
-p(176172, 169436)
-p(87001, 9032)
-p(179536, 19512)
-p(121029, 46004)
-p(202308, 170796)
-p(188633, 164780)
-p(20689, 65120)
-p(154268, 167400)
-p(144381, 154300)
-p(195097, 211173)
-p(102872, 11753)
-p(67553, 172649)
-p(142309, 79389)
-p(194376, 129269)
-p(129269, 129269)
-p(66832, 113549)
-p(182121, 124905)
-p(141036, 199917)
-p(25665, 8649)
-p(168756, 195353)
-p(61629, 175461)
-p(63048, 123545)
-p(93913, 184681)
-p(155008, 75901)
-p(139681, 137905)
-p(173892, 214569)
-p(110829, 190113)
-p(4989, 166049)
-p(120228, 138297)
-p(166137, 170413)
-p(91664, 178373)
-p(142813, 143921)
-p(84064, 3509)
-p(144713, 33589)
-p(177280, 188369)
-p(186117, 114909)
-p(156649, 108893)
-p(53068, 73765)
-p(18433, 59113)
-p(42264, 45429)
-p(161141, 67457)
-p(168184, 91229)
-p(153541, 103069)
-p(108476, 7581)
-p(169521, 38245)
-p(21200, 46881)
-p(22085, 54841)
-p(113452, 190889)
-p(88037, 131697)
-p(209876, 141009)
-p(41713, 196905)
-p(201569, 183513)
-p(68684, 105789)
-p(23761, 70561)
-p(57013, 30344)
-p(56972, 52664)
-p(100745, 115452)
-p(202569, 140000)
-p(206600, 149220)
-p(62117, 121952)
-p(50017, 181144)
-p(76952, 80416)
-p(191949, 120300)
-p(39725, 149120)
-p(46676, 193176)
-p(5441, 150964)
-p(41304, 16568)
-p(73237, 212876)
-p(95808, 180560)
-p(64876, 66832)
-p(194725, 189296)
-p(41748, 99048)
-p(124437, 132140)
-p(59472, 80808)
-p(116445, 135728)
-p(124433, 39272)
-p(190084, 145340)
-p(64817, 65280)
-p(189249, 75176)
-p(192604, 200552)
-p(43949, 43252)
-p(10501, 9484)
-p(196388, 50820)
-p(205901, 110888)
-p(151817, 184549)
-p(155080, 159901)
-p(70857, 154469)
-p(164237, 86833)
-p(115000, 8617)
-p(67457, 45105)
-p(1689, 109637)
-p(26396, 20457)
-p(97045, 115553)
-p(56321, 127101)
-p(184568, 126425)
-p(11649, 27441)
-p(205880, 115653)
-p(108073, 44813)
-p(76108, 112741)
-p(23832, 156797)
-p(210153, 116913)
-p(122776, 208713)
-p(30401, 101485)
-p(31528, 29385)
-p(190097, 83145)
-p(77657, 162037)
-p(80044, 36177)
-p(59577, 3085)
-p(85609, 19973)
-p(45492, 115261)
-p(164569, 18613)
-p(165081, 186101)
-p(30936, 193961)
-p(161845, 169897)
-p(177533, 158500)
-p(15828, 22644)
-p(19717, 187128)
-p(212949, 49720)
-p(168952, 122696)
-p(103261, 175096)
-p(155209, 18180)
-p(54440, 12556)
-p(123345, 166944)
-p(126869, 69320)
-p(61328, 206052)
-p(61821, 42828)
-p(29948, 104840)
-p(361, 107460)
-p(112788, 93292)
-p(44984, 53216)
-p(59453, 191300)
-p(162952, 193144)
-p(161017, 207796)
-p(205424, 19540)
-p(48225, 106684)
-p(72033, 11388)
-p(17648, 51856)
-p(56957, 152968)
-p(129765, 208672)
-p(211428, 204984)
-p(56273, 3044)
-p(36217, 94360)
-p(109828, 3528)
-p(36669, 125800)
-p(204125, 60793)
-p(12432, 108145)
-p(129173, 30613)
-p(183645, 119401)
-p(112088, 64189)
-p(36401, 207029)
-p(95141, 25665)
-p(203880, 65349)
-p(53089, 43129)
-p(48461, 37697)
-p(0, 141)
-p(115581, 31289)
-p(24708, 203049)
-p(144561, 151233)
-p(117060, 127553)
-p(91664, 128137)
-p(117873, 84273)
-p(139468, 7517)
-p(144713, 212461)
-p(86740, 119985)
-p(30077, 34009)
-p(90757, 203533)
-p(2220, 171417)
-p(180973, 117173)
-p(35929, 183933)
-p(169216, 197809)
-p(45793, 188881)
-p(143445, 145601)
-p(130980, 16637)
-p(54717, 21393)
-p(13733, 17664)
-p(119560, 38040)
-p(197201, 135856)
-p(201985, 195632)
-p(114416, 135472)
-p(2049, 161964)
-p(173933, 176324)
-p(121592, 35228)
-p(143529, 182340)
-p(207897, 58516)
-p(20184, 14560)
-p(180789, 38332)
-p(160, 100344)
-p(25301, 23388)
-p(157328, 52892)
-p(1516, 130232)
-p(190557, 113344)
-p(131608, 80060)
-p(142193, 188164)
-p(72964, 166328)
-p(96261, 49880)
-p(58641, 16404)
-p(52000, 112860)
-p(116441, 211644)
-p(180029, 67836)
-p(105368, 82488)
-p(49573, 202816)
-p(59021, 53568)
-p(70236, 154104)
-p(71697, 5340)
-p(119701, 64641)
-p(170508, 23497)
-p(133637, 75413)
-p(184521, 201273)
-p(60656, 79293)
-p(202145, 201757)
-p(68649, 100929)
-p(200000, 6025)
-p(152357, 11657)
-p(62045, 90841)
-p(95288, 100153)
-p(99569, 194281)
-p(201124, 37081)
-p(170761, 153913)
-p(153932, 191277)
-p(184532, 56005)
-p(158917, 40669)
-p(125884, 136449)
-p(41949, 124609)
-p(114884, 149841)
-p(175445, 187197)
-p(9829, 160613)
-p(163108, 147513)
-p(156617, 214273)
-p(99877, 173129)
-p(126812, 184385)
-p(130893, 66385)
-p(165081, 54161)
-p(30936, 78417)
-p(127493, 82205)
-p(138041, 157176)
-p(117716, 1812)
-p(154989, 37332)
-p(207709, 50332)
-p(106264, 83908)
-p(193025, 11224)
-p(66221, 100504)
-p(118096, 37232)
-p(2725, 92936)
-p(21969, 139028)
-p(64432, 53728)
-p(45709, 59844)
-p(144529, 20252)
-p(111880, 78476)
-p(4077, 46260)
-p(37420, 48104)
-p(111857, 35680)
-p(83380, 66636)
-p(145885, 196668)
-p(193004, 110400)
-p(87529, 35872)
-p(13129, 77700)
-p(205424, 62756)
-p(81801, 153488)
-p(11965, 208024)
-p(188340, 192304)
-p(86069, 201132)
-p(209333, 45576)
-p(211428, 209476)
-p(210077, 212680)
-p(17293, 104192)
-p(51504, 103508)
-p(203089, 122432)
-p(61377, 116617)
-p(212236, 62665)
-p(81821, 110993)
-p(183645, 65477)
-p(24752, 41997)
-p(36401, 27053)
-p(95141, 150485)
-p(203880, 156501)
-p(159833, 150777)
-p(151517, 30741)
-p(39008, 115649)
-p(192821, 199881)
-p(152581, 32001)
-p(52688, 140781)
-p(193985, 20161)
-p(91664, 49465)
-p(191425, 127097)
-p(201480, 12493)
-p(30889, 203469)
-p(169908, 179789)
-p(100337, 24333)
-p(51461, 74113)
-p(129344, 14629)
-p(78989, 106621)
-p(157909, 190853)
-p(137492, 162617)
-p(59769, 113029)
-p(68437, 2697)
-p(211528, 32969)
-p(56173, 162325)
-p(43785, 60045)
-p(104196, 152137)
-p(134193, 68197)
-p(148421, 31084)
-p(68904, 69708)
-p(137617, 184020)
-p(201017, 184312)
-p(155752, 120656)
-p(110637, 210320)
-p(71269, 93388)
-p(20572, 77084)
-p(102677, 57576)
-p(177717, 81156)
-p(20860, 60588)
-p(54737, 43216)
-p(83685, 99596)
-p(166808, 140064)
-p(28825, 63400)
-p(165024, 80672)
-p(75177, 214008)
-p(171884, 161024)
-p(11389, 87080)
-p(87520, 1780)
-p(73845, 67572)
-p(124437, 91252)
-p(59472, 68056)
-p(31437, 193140)
-p(124433, 208376)
-p(46760, 66896)
-p(64817, 131036)
-p(64941, 48556)
-p(195708, 55056)
-p(6101, 99012)
-p(82793, 96784)
-p(128168, 79412)
-p(205901, 23616)
-p(151817, 185773)
-p(155080, 102225)
-p(70857, 83109)
-p(51185, 172481)
-p(115000, 172189)
-p(67457, 52053)
-p(40824, 196353)
-p(105073, 180825)
-p(203140, 59621)
-p(165885, 180049)
-p(173604, 1689)
-p(79293, 38177)
-p(80220, 7513)
-p(130009, 133857)
-p(115416, 27889)
-p(27889, 27889)
-p(47064, 122309)
-p(57845, 66513)
-p(75437, 93005)
-p(177092, 207609)
-p(185253, 72337)
-p(169077, 19353)
-p(108192, 36817)
-p(34841, 71269)
-p(18181, 35749)
-p(137692, 153557)
-p(57833, 118137)
-p(108932, 125321)
-p(182693, 18285)
-p(56984, 213625)
-p(115701, 181701)
-p(131572, 133473)
-p(71905, 10425)
-p(198085, 75733)
-p(143316, 79805)
-p(79953, 89509)
-p(202668, 42157)
-p(150953, 105813)
-p(6712, 63309)
-p(85905, 25561)
-p(81984, 63017)
-p(22017, 138905)
-p(131732, 30125)
-p(210341, 146181)
-p(12632, 95141)
-p(146453, 212265)
-p(45492, 74081)
-p(62581, 21197)
-p(75809, 127841)
-p(167660, 21873)
-p(42293, 155985)
-p(57981, 62492)
-p(117716, 88208)
-p(154989, 70352)
-p(207709, 52596)
-p(106264, 76368)
-p(81333, 98012)
-p(200552, 146532)
-p(24337, 133916)
-p(57872, 188160)
-p(75445, 147016)
-p(65408, 209604)
-p(185261, 54440)
-p(103900, 118096)
-p(190853, 126540)
-p(138120, 58612)
-p(180825, 151380)
-p(151380, 151380)
-p(63377, 8440)
-p(59909, 105872)
-p(49780, 194760)
-p(11457, 70744)
-p(133465, 88792)
-p(86556, 3884)
-p(117129, 155844)
-p(177809, 38620)
-p(181356, 200000)
-p(63757, 17468)
-p(20436, 160408)
-p(166681, 144588)
-p(174692, 122076)
-p(186541, 97912)
-p(146132, 204364)
-p(77529, 80448)
-p(206721, 156428)
-p(49572, 211548)
-p(93153, 176320)
-p(134064, 120040)
-p(82349, 137504)
-p(209328, 192524)
-p(204197, 78896)
-p(164464, 136728)
-p(6297, 148084)
-p(18196, 72680)
-p(43045, 140900)
-p(12340, 171080)
-p(197401, 20280)
-p(173196, 39788)
-p(91693, 121592)
-p(185949, 168268)
-p(54224, 55408)
-p(1249, 13296)
-p(104465, 14173)
-p(120920, 92681)
-p(76581, 30185)
-p(19745, 92197)
-p(113640, 51053)
-p(113549, 208353)
-p(49852, 93649)
-p(182121, 164489)
-p(211484, 132565)
-p(25665, 202821)
-p(168756, 53089)
-p(83465, 158181)
-p(130292, 86957)
-p(93913, 20097)
-p(155008, 23201)
-p(139681, 16701)
-p(173892, 110829)
-p(110829, 110829)
-p(4989, 154593)
-p(120228, 213977)
-p(166137, 193793)
-p(68641, 104421)
-p(81992, 40765)
-p(193985, 154785)
-p(30889, 182153)
-p(169908, 149837)
-p(34253, 7481)
-p(89624, 120141)
-p(134657, 14565)
-p(107056, 114225)
-p(144713, 198549)
-p(177280, 203789)
-p(186117, 15533)
-p(141997, 106073)
-p(2220, 43869)
-p(180973, 210389)
-p(144152, 8257)
-p(208501, 155661)
-p(196136, 63377)
-p(17201, 99573)
-p(172716, 97045)
-p(95577, 22133)
-p(55944, 83169)
-p(74969, 143821)
-p(45816, 94233)
-p(113361, 181085)
-p(4348, 66189)
-p(41521, 116453)
-p(176245, 186809)
-p(104196, 49401)
-p(134193, 152357)
-p(114361, 22384)
-p(147704, 24128)
-p(78325, 145624)
-p(177717, 174928)
-p(15328, 70128)
-p(128581, 181336)
-p(106973, 166584)
-p(480, 77988)
-p(118097, 203848)
-p(110365, 56252)
-p(115564, 25196)
-p(106937, 2492)
-p(5853, 111272)
-p(95960, 115736)
-p(116445, 13356)
-p(197397, 124080)
-p(154660, 62460)
-p(205901, 192008)
-p(151817, 15793)
-p(155080, 5213)
-p(70857, 97889)
-p(182665, 41801)
-p(82288, 211425)
-p(180889, 143789)
-p(128125, 196965)
-p(6596, 125833)
-p(107233, 125349)
-p(183633, 93809)
-p(142832, 40633)
-p(198253, 76345)
-p(179457, 202497)
-p(202220, 111181)
-p(137113, 82945)
-p(206225, 187745)
-p(30544, 178817)
-p(153601, 191725)
-p(59825, 136956)
-p(133828, 211576)
-p(144509, 64464)
-p(197317, 205268)
-p(170108, 67376)
-p(46585, 72424)
-p(66121, 47000)
-p(77044, 184408)
-p(9317, 122396)
-p(40693, 207696)
-p(81604, 99300)
-p(181365, 201872)
-p(145105, 199736)
-p(162628, 104932)
-p(80249, 126960)
-p(73965, 148888)
-p(124480, 54760)
-p(159133, 35160)
-p(208489, 51273)
-p(51924, 85725)
-p(62221, 177717)
-p(148348, 200621)
-p(202309, 160253)
-p(7412, 129681)
-p(15573, 83589)
-p(171088, 78057)
-p(120441, 56421)
-p(102836, 127937)
-p(32197, 211485)
-p(172768, 94845)
-p(119401, 3437)
-p(181756, 85625)
-p(122281, 125025)
-p(131844, 207897)
-p(58493, 140261)
-p(130844, 102705)
-p(131529, 7217)
-p(185348, 106493)
-p(161677, 35069)
-p(13356, 201397)
-p(178817, 12365)
-p(36420, 48461)
-p(48461, 48461)
-p(49296, 151517)
-p(115581, 169373)
-p(121840, 80777)
-p(137469, 206345)
-p(117636, 101445)
-p(44961, 5765)
-p(58312, 80193)
-p(43469, 178009)
-p(169288, 53701)
-p(201997, 197317)
-p(15836, 142881)
-p(127829, 207021)
-p(53552, 87277)
-p(184177, 150549)
-p(209560, 154913)
-p(133873, 63405)
-p(148000, 181213)
-p(68925, 111733)
-p(134384, 32741)
-p(35701, 20901)
-p(138908, 18765)
-p(152409, 64373)
-p(189048, 138225)
-p(187213, 116581)
-p(124968, 21969)
-p(41713, 59909)
-p(77192, 179369)
-p(154249, 15369)
-p(122668, 56321)
-p(116953, 182665)
-p(37628, 182181)
-p(209397, 118525)
-p(149005, 130324)
-p(151292, 173312)
-p(35729, 191068)
-p(13076, 131776)
-p(184069, 190192)
-p(6636, 92476)
-p(158029, 13776)
-p(206600, 206304)
-p(62117, 95288)
-p(121952, 85100)
-p(205993, 177092)
-p(160928, 56380)
-p(204601, 52108)
-p(17664, 155456)
-p(105493, 26200)
-p(6860, 147888)
-p(133113, 135272)
-p(93388, 9704)
-p(168209, 27168)
-p(192524, 14260)
-p(198649, 59192)
-p(51496, 65500)
-p(82945, 111300)
-p(171692, 20860)
-p(200621, 15328)
-p(15328, 15328)
-p(128581, 22028)
-p(79628, 56472)
-p(194725, 203584)
-p(41748, 129640)
-p(48065, 94128)
-p(52296, 149924)
-p(31437, 202032)
-p(90588, 18240)
-p(79149, 105284)
-p(173912, 208440)
-p(17497, 31824)
-p(24248, 39008)
-p(145845, 40752)
-p(38768, 211060)
-p(95641, 162924)
-p(6812, 140804)
-p(68049, 152736)
-p(145832, 144976)
-p(10569, 75788)
-p(188112, 213872)
-p(105341, 177192)
-p(166920, 138084)
-p(163533, 88496)
-p(158544, 182240)
-p(15221, 54920)
-p(18092, 52692)
-p(127657, 107904)
-p(166240, 170108)
-p(59021, 124208)
-p(70236, 78792)
-p(71697, 63172)
-p(86317, 155365)
-p(170508, 55413)
-p(133637, 142073)
-p(42380, 207281)
-p(42097, 213005)
-p(164036, 61821)
-p(184521, 49397)
-p(60656, 45709)
-p(202145, 11457)
-p(197740, 57549)
-p(150005, 164101)
-p(92032, 11649)
-p(142013, 123049)
-p(180496, 210869)
-p(177593, 33777)
-p(48104, 185061)
-p(144277, 120429)
-p(107648, 180889)
-p(66513, 196217)
-p(15624, 105585)
-p(186809, 94713)
-p(13164, 5149)
-p(109437, 37949)
-p(10412, 99569)
-p(75437, 8837)
-p(177092, 101313)
-p(101313, 101313)
-p(22472, 210193)
-p(182693, 128581)
-p(133256, 170601)
-p(119097, 199421)
-p(117504, 179045)
-p(84421, 51241)
-p(76520, 73077)
-p(1709, 117617)
-p(64356, 128873)
-p(196725, 118877)
-p(15996, 4373)
-p(201641, 180789)
-p(164144, 95881)
-p(90985, 177977)
-p(144896, 188065)
-p(37969, 93937)
-p(193576, 199713)
-p(23861, 90933)
-p(111740, 107037)
-p(63905, 16405)
-p(180120, 136833)
-p(86093, 115581)
-p(98476, 187581)
-p(1153, 166137)
-p(2664, 8253)
-p(144737, 207473)
-p(36400, 62981)
-p(102393, 205245)
-p(114192, 64049)
-p(51029, 89089)
-p(60893, 86136)
-p(188848, 177160)
-p(120153, 106320)
-p(212461, 57508)
-p(99660, 88948)
-p(167597, 39360)
-p(103900, 134656)
-p(192505, 212964)
-p(82324, 19276)
-p(59909, 200448)
-p(49780, 183660)
-p(11457, 133104)
-p(44761, 185796)
-p(26764, 6660)
-p(74033, 45668)
-p(140752, 113404)
-p(196365, 94288)
-p(195648, 123784)
-p(64937, 70608)
-p(177948, 99912)
-p(54233, 7436)
-p(121929, 44317)
-p(102872, 16757)
-p(67553, 114965)
-p(112709, 147081)
-p(113344, 150769)
-p(61629, 99729)
-p(63048, 111953)
-p(206573, 50433)
-p(107164, 167173)
-p(97565, 62273)
-p(140804, 15305)
-p(60945, 131653)
-p(17201, 191913)
-p(173492, 105161)
-p(151373, 70425)
-p(93984, 61205)
-p(131541, 197545)
-p(171384, 171637)
-p(200209, 126805)
-p(37628, 200749)
-p(186593, 25685)
-p(149005, 76108)
-p(159152, 78920)
-p(119469, 194300)
-p(204601, 51360)
-p(17664, 209728)
-p(56973, 90760)
-p(107004, 143644)
-p(133113, 52428)
-p(93388, 81540)
-p(198385, 166356)
-p(74036, 61456)
-p(143233, 192456)
-p(18753, 136952)
-p(145832, 93572)
-p(124881, 74940)
-p(93592, 97360)
-p(146877, 63200)
-p(56104, 86296)
-p(82793, 29724)
-p(128168, 49616)
-p(202605, 78144)
-p(109897, 94457)
-p(38240, 212357)
-p(63673, 101149)
-p(163392, 33513)
-p(138653, 38561)
-p(203436, 41373)
-p(59844, 164905)
-p(130009, 144529)
-p(140156, 181109)
-p(9476, 80481)
-p(211425, 154425)
-p(23804, 48165)
-p(39633, 100765)
-p(92476, 109785)
-p(37949, 128125)
-p(168401, 168401)
-p(141868, 74273)
-p(208445, 190137)
-p(191808, 116093)
-p(202973, 76893)
-p(34476, 136669)
-p(183633, 169077)
-p(142832, 180917)
-p(198253, 209545)
-p(55948, 110469)
-p(202101, 30601)
-p(142284, 111921)
-p(214001, 65053)
-p(129536, 207117)
-p(43277, 124729)
-p(65748, 98629)
-p(148921, 42149)
-p(183424, 50401)
-p(32825, 200517)
-p(56364, 70777)
-p(9405, 83685)
-p(29356, 2657)
-p(69149, 135501)
-p(118404, 98821)
-p(212760, 112989)
-p(161721, 106973)
-p(72308, 157237)
-p(157613, 92321)
-p(46556, 84945)
-p(2509, 6637)
-p(140853, 181460)
-p(150516, 43660)
-p(7393, 128960)
-p(10264, 23092)
-p(191637, 29592)
-p(112604, 111204)
-p(150868, 25904)
-p(46653, 127216)
-p(204980, 105672)
-p(72940, 87524)
-p(156497, 82768)
-p(131132, 213576)
-p(206345, 137696)
-p(138084, 139540)
-p(137609, 109260)
-p(18861, 131772)
-p(131772, 131772)
-p(5245, 38036)
-p(153476, 122844)
-p(39657, 196596)
-p(162856, 46672)
-p(106001, 195336)
-p(26676, 21732)
-p(116833, 84712)
-p(135424, 65204)
-p(100013, 19696)
-p(131120, 113048)
-p(61649, 7080)
-p(95768, 49000)
-p(40173, 52396)
-p(152792, 191548)
-p(105933, 20180)
-p(36412, 88884)
-p(168781, 123720)
-p(120704, 111880)
-p(42305, 8340)
-p(38184, 185924)
-p(104761, 86556)
-p(47564, 26196)
-p(14508, 49484)
-p(130865, 118288)
-p(212528, 18920)
-p(8073, 37744)
-p(155336, 76076)
-p(171941, 174084)
-p(19749, 112857)
-p(65124, 114509)
-p(94045, 58713)
-p(27728, 139349)
-p(20845, 34841)
-p(126872, 27949)
-p(104192, 46873)
-p(75473, 214069)
-p(68832, 116837)
-p(89828, 102085)
-p(43061, 20189)
-p(181204, 76953)
-p(3437, 115285)
-p(143616, 118097)
-p(118877, 172633)
-p(57485, 57161)
-p(181460, 140417)
-p(140417, 140417)
-p(180552, 110045)
-p(35585, 6989)
-p(128020, 18345)
-p(168981, 85205)
-p(214156, 2333)
-p(95873, 155461)
-p(18492, 187577)
-p(184145, 84329)
-p(177020, 167009)
-p(121909, 91605)
-p(157972, 54249)
-p(96261, 5729)
-p(168804, 168753)
-p(97005, 18729)
-p(103656, 193985)
-p(104925, 16693)
-p(69464, 78797)
-p(157585, 100633)
-p(156768, 113925)
-p(44209, 199417)
-p(104044, 36293)
-p(165500, 88017)
-p(158717, 78121)
-p(160128, 17569)
-p(65521, 193109)
-p(83820, 146141)
-p(42393, 13881)
-p(141629, 198700)
-p(209708, 15000)
-p(33885, 41492)
-p(137676, 59932)
-p(109733, 175020)
-p(28472, 142220)
-p(12761, 4136)
-p(154784, 203356)
-p(111805, 203648)
-p(36460, 71964)
-p(100609, 173952)
-p(92032, 69152)
-p(68649, 28008)
-p(200000, 129704)
-p(203013, 22768)
-p(200544, 200544)
-p(72749, 186860)
-p(75812, 18788)
-p(28853, 50228)
-p(149532, 207044)
-p(84033, 39748)
-p(17816, 117672)
-p(187641, 94476)
-p(18652, 83612)
-p(77469, 170848)
-p(199116, 177832)
-p(93057, 189772)
-p(70504, 165024)
-p(47317, 98456)
-p(86868, 50520)
-p(208976, 101076)
-p(75457, 148628)
-p(6712, 144164)
-p(85609, 180552)
-p(45492, 182688)
-p(62581, 107384)
-p(104629, 107868)
-p(167660, 151248)
-p(42293, 204232)
-p(57981, 125733)
-p(117716, 213745)
-p(154989, 143297)
-p(111184, 196181)
-p(153113, 94485)
-p(197128, 55477)
-p(34397, 120685)
-p(97144, 38297)
-p(23301, 210933)
-p(64504, 191425)
-p(208229, 170465)
-p(189748, 176773)
-p(155209, 39657)
-p(54440, 11905)
-p(123345, 66149)
-p(203356, 97297)
-p(97297, 97297)
-p(98324, 102829)
-p(117741, 85657)
-p(23764, 101669)
-p(136241, 144657)
-p(6268, 80801)
-p(185213, 82645)
-p(28748, 185801)
-p(168393, 178909)
-p(20656, 205985)
-p(56569, 133009)
-p(204808, 183957)
-p(185117, 125925)
-p(199144, 121945)
-p(193448, 148437)
-p(199765, 82353)
-p(168476, 202973)
-p(71249, 72749)
-p(105560, 132525)
-p(190285, 114961)
-p(36217, 65373)
-p(131564, 47033)
-p(94209, 26557)
-p(61377, 160720)
-p(212236, 101236)
-p(81821, 77756)
-p(178044, 188380)
-p(100129, 171884)
-p(95916, 2936)
-p(183645, 97064)
-p(24752, 109872)
-p(194093, 126368)
-p(112832, 107060)
-p(136129, 17204)
-p(102896, 30396)
-p(95141, 131608)
-p(82192, 186536)
-p(202529, 128020)
-p(91664, 12740)
-p(191425, 84064)
-p(84064, 84064)
-p(61945, 139468)
-p(182716, 201480)
-p(13877, 115888)
-p(38484, 84840)
-p(134465, 80376)
-p(122100, 124916)
-p(44961, 125208)
-p(25804, 180128)
-p(162053, 19824)
-p(169288, 163148)
-p(201997, 42044)
-p(11372, 70572)
-p(5676, 162856)
-p(92829, 1092)
-p(75416, 75036)
-p(95897, 174504)
-p(6192, 68728)
-p(41713, 208272)
-p(112005, 99492)
-p(45004, 142380)
-p(29001, 131416)
-p(71181, 83681)
-p(20776, 186445)
-p(100745, 145885)
-p(140000, 65925)
-p(206577, 51173)
-p(193144, 197217)
-p(62756, 168689)
-p(9389, 54569)
-p(120656, 25265)
-p(81165, 186545)
-p(30760, 183633)
-p(117329, 30697)
-p(198800, 206821)
-p(76345, 50105)
-p(96488, 73977)
-p(45649, 7017)
-p(9704, 198869)
-p(75989, 136665)
-p(6660, 97657)
-p(26461, 122981)
-p(134716, 28853)
-p(207044, 6925)
-p(197249, 163157)
-p(18364, 172377)
-p(172377, 172377)
-p(89848, 56897)
-p(118777, 69221)
-p(119097, 198285)
-p(117504, 101053)
-p(149245, 11389)
-p(76520, 211869)
-p(1709, 2845)
-p(186236, 200029)
-p(64096, 96489)
-p(94085, 148505)
-p(208064, 14685)
-p(146453, 195181)
-p(76156, 118517)
-p(62581, 168981)
-p(162392, 68637)
-p(75841, 42537)
-p(197780, 124533)
-p(107441, 180621)
-p(95660, 174997)
-p(144573, 204493)
-p(14025, 110716)
-p(184384, 211344)
-p(12049, 182816)
-p(75176, 169908)
-p(88769, 197368)
-p(57872, 152052)
-p(103900, 181748)
-p(5509, 211928)
-p(152772, 26676)
-p(168309, 181164)
-p(182336, 4748)
-p(55417, 88588)
-p(140092, 81604)
-p(203857, 185436)
-p(86784, 184852)
-p(59909, 65008)
-p(49780, 170876)
-p(164101, 175732)
-p(205880, 190384)
-p(108073, 88688)
-p(138020, 204068)
-p(30044, 181356)
-p(75661, 36088)
-p(161404, 123424)
-p(197217, 98876)
-p(98876, 98876)
-p(40077, 114112)
-p(46997, 172720)
-p(141276, 67044)
-p(71221, 15812)
-p(195780, 91500)
-p(33441, 169324)
-p(88812, 142832)
-p(170932, 149532)
-p(87001, 166704)
-p(179536, 37448)
-p(121029, 144484)
-p(202308, 76848)
-p(118185, 177576)
-p(120080, 128664)
-p(157061, 105084)
-p(110828, 84416)
-p(85605, 32792)
-p(39864, 64232)
-p(144381, 46084)
-p(83505, 138669)
-p(162356, 99369)
-p(67553, 102181)
-p(72556, 180297)
-p(22009, 119553)
-p(13524, 121689)
-p(195116, 42889)
-p(41121, 175641)
-p(193140, 189225)
-p(21197, 74329)
-p(163220, 126053)
-p(214369, 137893)
-p(47224, 203493)
-p(191725, 73069)
-p(136956, 95873)
-p(169373, 75397)
-p(64140, 75013)
-p(192821, 98009)
-p(84484, 72585)
-p(68481, 213681)
-p(113372, 63849)
-p(16168, 151961)
-p(170465, 43181)
-p(80376, 100337)
-p(21577, 34253)
-p(170976, 61037)
-p(61037, 61037)
-p(51461, 66861)
-p(163888, 150509)
-p(166033, 16789)
-p(145224, 56381)
-p(199769, 60745)
-p(119768, 34737)
-p(146384, 210961)
-p(75069, 136241)
-p(174780, 148273)
-p(35929, 164385)
-p(169216, 87529)
-p(45793, 29889)
-p(27120, 43281)
-p(152405, 174765)
-p(179824, 33185)
-p(19913, 111209)
-p(78772, 128673)
-p(156997, 124017)
-p(156281, 26644)
-p(94428, 115048)
-p(96473, 64976)
-p(128456, 23832)
-p(208909, 150952)
-p(190044, 47412)
-p(125321, 76424)
-p(34932, 82732)
-p(10393, 23732)
-p(211485, 211988)
-p(175540, 159396)
-p(73077, 88556)
-p(55180, 214316)
-p(102349, 200248)
-p(213416, 64392)
-p(132493, 41296)
-p(114012, 63132)
-p(175641, 126888)
-p(126888, 126888)
-p(130677, 41588)
-p(197888, 70892)
-p(106116, 213156)
-p(190741, 111944)
-p(110548, 140280)
-p(126296, 35280)
-p(179481, 4032)
-p(59404, 185888)
-p(150748, 141248)
-p(52457, 169100)
-p(45140, 194040)
-p(59021, 91076)
-p(194928, 174824)
-p(9885, 170552)
-p(72733, 137277)
-p(173320, 100013)
-p(50381, 211705)
-p(196092, 168041)
-p(209101, 24709)
-p(28472, 103217)
-p(165589, 67605)
-p(17468, 111853)
-p(43193, 132229)
-p(110081, 87105)
-p(209116, 173373)
-p(21837, 210153)
-p(15004, 110977)
-p(80321, 184829)
-p(168584, 56057)
-p(28853, 125437)
-p(161172, 35289)
-p(142649, 118061)
-p(17816, 187641)
-p(187641, 187641)
-p(174400, 182693)
-p(70504, 149893)
-p(47317, 132521)
-p(86868, 205689)
-p(161332, 89533)
-p(75457, 79537)
-p(6712, 208893)
-p(123580, 94097)
-p(94085, 176385)
-p(153528, 155809)
-p(175077, 198313)
-p(167660, 67021)
-p(58789, 87205)
-p(57981, 108608)
-p(117716, 10500)
-p(154989, 29132)
-p(60236, 89592)
-p(153113, 166640)
-p(197128, 119964)
-p(182861, 13028)
-p(118096, 199924)
-p(2725, 91144)
-p(59909, 24284)
-p(136048, 94732)
-p(37557, 166832)
-p(205880, 69792)
-p(108073, 81732)
-p(138020, 43400)
-p(24681, 150528)
-p(114112, 128500)
-p(128673, 83476)
-p(26644, 68724)
-p(167649, 104244)
-p(104244, 104244)
-p(168904, 87356)
-p(194429, 149268)
-p(39224, 113072)
-p(108348, 45436)
-p(113789, 36992)
-p(122092, 163244)
-p(76420, 142284)
-p(60509, 116468)
-p(76964, 172948)
-p(172265, 118604)
-p(177948, 34180)
-p(54233, 105796)
-p(83505, 88141)
-p(102872, 15457)
-p(67553, 40397)
-p(133696, 107257)
-p(129533, 39621)
-p(73888, 156845)
-p(139689, 133557)
-p(153232, 11577)
-p(79389, 182369)
-p(66832, 101633)
-p(138941, 45253)
-p(45448, 15073)
-p(144825, 76401)
-p(52892, 85329)
-p(173129, 200901)
-p(195116, 124437)
-p(41121, 199349)
-p(169660, 5853)
-p(74081, 20697)
-p(59580, 170045)
-p(86957, 38069)
-p(47808, 124529)
-p(109337, 99981)
-p(101436, 142193)
-p(159669, 70869)
-p(211060, 148209)
-p(62981, 164997)
-p(186664, 208761)
-p(134657, 49909)
-p(107056, 144713)
-p(147525, 51269)
-p(25312, 204005)
-p(169713, 201193)
-p(93984, 104253)
-p(131541, 10317)
-p(45816, 146849)
-p(80173, 139089)
-p(113124, 13129)
-p(38413, 55049)
-p(114361, 192708)
-p(147704, 205424)
-p(78325, 207944)
-p(128456, 19980)
-p(132245, 80340)
-p(91352, 102852)
-p(34105, 141276)
-p(121692, 40164)
-p(142369, 81600)
-p(153976, 134584)
-p(116913, 210756)
-p(152000, 167868)
-p(83981, 31528)
-p(139352, 102268)
-p(136449, 41524)
-p(62656, 148944)
-p(56357, 125556)
-p(77084, 146424)
-p(185289, 173300)
-p(136728, 211632)
-p(101609, 114884)
-p(174928, 32596)
-p(37821, 199116)
-p(137632, 131572)
-p(198385, 175436)
-p(29304, 174468)
-p(81905, 2124)
-p(126888, 163988)
-p(130677, 109644)
-p(136360, 97804)
-p(413, 26188)
-p(178340, 136912)
-p(212801, 38220)
-p(174428, 169904)
-p(40909, 201736)
-p(186620, 44820)
-p(59021, 111972)
-p(194928, 129344)
-p(139625, 47056)
-p(16937, 136045)
-p(116748, 75301)
-p(132377, 124205)
-p(172412, 36193)
-p(42097, 125565)
-p(38176, 116737)
-p(184521, 198149)
-p(60656, 16785)
-p(202145, 101793)
-p(130104, 147885)
-p(126425, 80249)
-p(133176, 166709)
-p(125417, 107809)
-p(74528, 33381)
-p(19125, 41917)
-p(35872, 199025)
-p(152137, 56569)
-p(184020, 51037)
-p(80873, 154869)
-p(97912, 48225)
-p(196513, 104897)
-p(100792, 77529)
-p(151065, 49101)
-p(7308, 71221)
-p(130365, 162537)
-p(187572, 187285)
-p(20677, 207853)
-p(76424, 145073)
-p(104185, 156813)
-p(133256, 93057)
-p(171297, 152249)
-p(101876, 84613)
-p(133709, 166417)
-p(123580, 202421)
-p(131833, 130321)
-p(77256, 31437)
-p(75809, 31145)
-p(167660, 122753)
-p(42293, 40073)
-p(57981, 106116)
-p(117716, 6072)
-p(154989, 182488)
-p(59909, 165992)
-p(136048, 125332)
-p(37557, 38480)
-p(205880, 151340)
-p(27337, 77396)
-p(138020, 85156)
-p(30044, 58664)
-p(178909, 170940)
-p(161404, 70796)
-p(58956, 58956)
-p(194429, 195780)
-p(56688, 135328)
-p(202476, 17520)
-p(82349, 2868)
-p(209328, 129504)
-p(46505, 211208)
-p(116044, 23536)
-p(151665, 139500)
-p(167440, 194328)
-p(124845, 76520)
-p(188268, 192968)
-p(185949, 155996)
-p(54224, 126692)
-p(1249, 146968)
-p(127461, 167745)
-p(21068, 178125)
-p(76581, 13741)
-p(177133, 122429)
-p(75788, 172501)
-p(178753, 138049)
-p(141932, 88269)
-p(13461, 214713)
-p(101824, 123105)
-p(62360, 2485)
-p(23745, 73809)
-p(163148, 201997)
-p(203256, 211609)
-p(211609, 211609)
-p(50672, 197049)
-p(76224, 105933)
-p(131253, 95937)
-p(47856, 123981)
-p(41849, 5981)
-p(145540, 163573)
-p(175053, 127569)
-p(27120, 134169)
-p(152405, 68961)
-p(67648, 185117)
-p(76777, 44313)
-p(78772, 18013)
-p(156997, 8501)
-p(156281, 93660)
-p(153912, 183132)
-p(78325, 134420)
-p(83589, 203800)
-p(29304, 148004)
-p(81905, 86868)
-p(38976, 28452)
-p(16757, 154120)
-p(154808, 142280)
-p(33440, 88036)
-p(142037, 160812)
-p(30396, 57564)
-p(75160, 30488)
-p(116897, 52032)
-p(52032, 52032)
-p(1604, 36020)
-p(128441, 209916)
-p(47956, 54168)
-p(6721, 103656)
-p(81400, 118308)
-p(10569, 20400)
-p(3248, 52516)
-p(34697, 66684)
-p(105204, 107152)
-p(10501, 147420)
-p(196388, 15836)
-p(205901, 211468)
-p(151817, 130157)
-p(155080, 92117)
-p(70857, 177417)
-p(65837, 141997)
-p(63468, 90757)
-p(91229, 78433)
-p(9968, 145293)
-p(198425, 209925)
-p(166068, 154321)
-p(160937, 181589)
-p(33484, 168781)
-p(164493, 133261)
-p(91476, 99785)
-p(130009, 150049)
-p(140156, 73193)
-p(183929, 150925)
-p(25136, 33701)
-p(96561, 12349)
-p(113285, 166937)
-p(173312, 179937)
-p(105585, 182073)
-p(171021, 2937)
-p(18920, 30013)
-p(10485, 48161)
-p(57312, 152669)
-p(148437, 140829)
-p(34476, 168389)
-p(23248, 206721)
-p(205981, 130641)
-p(163244, 114337)
-p(117545, 8469)
-p(102268, 49129)
-p(80925, 36029)
-p(40608, 9829)
-p(92049, 198085)
-p(2344, 121329)
-p(188665, 132969)
-p(23656, 185953)
-p(159521, 138017)
-p(76485, 152769)
-p(63344, 21377)
-p(82469, 124141)
-p(52065, 203476)
-p(185744, 151852)
-p(93661, 171360)
-p(191505, 167380)
-p(39212, 172328)
-p(75901, 24248)
-p(214428, 119636)
-p(82369, 46760)
-p(187128, 190084)
-p(203049, 10856)
-p(166328, 64908)
-p(121797, 107504)
-p(1812, 152920)
-p(6477, 93144)
-p(41564, 16580)
-p(21097, 174948)
-p(119264, 57724)
-p(200201, 37732)
-p(68937, 201632)
-p(75788, 204836)
-p(11065, 69464)
-p(18861, 145836)
-p(131772, 116532)
-p(5245, 107896)
-p(172692, 81404)
-p(39657, 43072)
-p(204292, 73444)
-p(174824, 90716)
-p(137277, 2220)
-p(91144, 83632)
-p(27589, 186012)
-p(95768, 157676)
-p(40173, 179220)
-p(52256, 568)
-p(204809, 91884)
-p(119176, 152144)
-p(14093, 205904)
-p(7552, 175140)
-p(150401, 134388)
-p(8073, 188340)
-p(155336, 17648)
-p(171941, 172620)
-p(140369, 56957)
-p(65124, 52009)
-p(161681, 178161)
-p(43425, 51617)
-p(138288, 112561)
-p(165273, 197761)
-p(181144, 113337)
-p(949, 141965)
-p(208672, 189801)
-p(121245, 52201)
-p(111792, 59577)
-p(124609, 9405)
-p(165520, 76657)
-p(45393, 142057)
-p(99596, 168457)
-p(51569, 117801)
-p(39788, 19209)
-p(111505, 1837)
-p(94845, 79953)
-p(81996, 145745)
-p(117617, 184661)
-p(205565, 60645)
-p(126148, 4557)
-p(209413, 158169)
-p(23544, 107513)
-p(190557, 173597)
-p(131608, 15813)
-p(29748, 213965)
-p(29565, 162925)
-p(136360, 119353)
-p(124529, 145845)
-p(54816, 10865)
-p(122753, 64817)
-p(32264, 198729)
-p(36737, 171269)
-p(54160, 3781)
-p(77073, 121781)
-p(85668, 201933)
-p(116433, 95289)
-p(175561, 198829)
-p(194928, 189417)
-p(139625, 18433)
-p(21009, 42264)
-p(100544, 14704)
-p(167797, 206840)
-p(72921, 191220)
-p(60656, 54588)
-p(111805, 129500)
-p(101741, 62448)
-p(105580, 33336)
-p(152357, 85152)
-p(75437, 175208)
-p(177092, 50608)
-p(21837, 136392)
-p(99136, 91752)
-p(80321, 138528)
-p(209728, 108348)
-p(169077, 208100)
-p(108192, 65452)
-p(34841, 49732)
-p(161332, 161332)
-p(150953, 208976)
-p(6712, 182192)
-p(85609, 139304)
-p(45492, 180348)
-p(164569, 46920)
-p(165081, 67688)
-p(30936, 70016)
-p(161845, 100872)
-p(138041, 148141)
-p(117716, 158621)
-p(154989, 105345)
-p(207709, 131061)
-p(106264, 186473)
-p(81333, 126305)
-p(199941, 137853)
-p(111496, 117185)
-p(145665, 16165)
-p(18765, 161141)
-p(61328, 140281)
-p(16213, 119221)
-p(29948, 87973)
-p(361, 52653)
-p(112788, 80989)
-p(89601, 196077)
-p(117512, 2581)
-p(143329, 63617)
-p(91752, 14321)
-p(14321, 14321)
-p(42616, 113789)
-p(129765, 87297)
-p(211428, 83801)
-p(56273, 3841)
-p(49217, 78269)
-p(29092, 84869)
-p(203089, 149693)
-p(61377, 3900)
-p(212236, 84928)
-p(81821, 46112)
-p(84277, 118696)
-p(67640, 150720)
-p(211173, 192156)
-p(95141, 53872)
-p(83260, 130244)
-p(53089, 198948)
-p(151517, 126848)
-p(39008, 164404)
-p(187581, 21072)
-p(24708, 206516)
-p(68481, 45044)
-p(113372, 191672)
-p(136277, 191864)
-p(105672, 73864)
-p(18729, 87256)
-p(112712, 75416)
-p(38585, 189052)
-p(189052, 189052)
-p(191577, 47856)
-p(42680, 124228)
-p(203285, 138880)
-p(149069, 155376)
-p(60240, 131312)
-p(23761, 47564)
-p(193253, 112881)
-p(20776, 150629)
-p(35729, 85805)
-p(202569, 69701)
-p(167884, 29041)
-p(62117, 18169)
-p(168209, 124237)
-p(192524, 204197)
-p(198649, 46505)
-p(177717, 4877)
-p(20860, 140149)
-p(54737, 84837)
-p(44700, 53397)
-p(174257, 214577)
-p(90568, 185273)
-p(2657, 169453)
-p(38712, 140633)
-p(32997, 127049)
-p(50520, 68341)
-p(28985, 60673)
-p(2936, 212349)
-p(211869, 202545)
-p(87520, 171297)
-p(97525, 190321)
-p(64392, 72513)
-p(172989, 177705)
-p(110936, 62225)
-p(90569, 48057)
-p(207360, 181777)
-p(130321, 105605)
-p(176472, 24093)
-p(2777, 37969)
-p(9528, 65237)
-p(30593, 30593)
-p(187076, 117637)
-p(46281, 188669)
-p(162565, 120449)
-p(142240, 6721)
-p(128081, 159657)
-p(206348, 177121)
-p(54589, 116469)
-p(25728, 27197)
-p(10985, 67465)
-p(5512, 83093)
-p(122353, 2549)
-p(191801, 204540)
-p(194380, 198332)
-p(140337, 173392)
-p(28481, 134384)
-p(61916, 181736)
-p(146349, 22108)
-p(191889, 173492)
-p(148568, 172716)
-p(97045, 174652)
-p(182665, 91104)
-p(190776, 122252)
-p(185061, 57720)
-p(186088, 34240)
-p(52177, 190764)
-p(46704, 213860)
-p(128125, 80524)
-p(6596, 10660)
-p(107233, 172032)
-p(66240, 154376)
-p(202973, 117596)
-p(22828, 104688)
-p(183633, 135160)
-p(142832, 202796)
-p(198253, 23952)
-p(94280, 134968)
-p(202101, 39380)
-p(160140, 91588)
-p(141901, 116528)
-p(125556, 31812)
-p(172241, 149036)
-p(129504, 130888)
-p(181037, 164464)
-p(174788, 25212)
-p(202737, 140208)
-p(140208, 140208)
-p(91497, 207552)
-p(52325, 31228)
-p(33944, 48600)
-p(122065, 152432)
-p(173456, 99448)
-p(107573, 123128)
-p(119372, 110704)
-p(157613, 101584)
-p(126032, 19972)
-p(161461, 199884)
-p(115621, 127693)
-p(142756, 139825)
-p(70565, 116145)
-p(203829, 133325)
-p(141100, 46281)
-p(113, 92181)
-p(28181, 72773)
-p(86172, 32789)
-p(7481, 141185)
-p(87277, 117989)
-p(63172, 189705)
-p(8353, 54433)
-p(134656, 200961)
-p(59261, 35701)
-p(131128, 76845)
-p(57677, 143997)
-p(195336, 57245)
-p(193501, 86941)
-p(204424, 60057)
-p(187937, 82961)
-p(166060, 169521)
-p(40693, 210665)
-p(81604, 169713)
-p(181365, 151373)
-p(67788, 95577)
-p(101373, 64521)
-p(103760, 124105)
-p(10317, 42009)
-p(162628, 65689)
-p(81317, 44629)
-p(212860, 57537)
-p(87977, 194169)
-p(129956, 51905)
-p(43209, 208045)
-p(200368, 56469)
-p(56469, 56469)
-p(42913, 39581)
-p(172420, 145549)
-p(66269, 170973)
-p(114164, 137013)
-p(185881, 178157)
-p(115876, 100425)
-p(50285, 101593)
-p(207352, 19789)
-p(174461, 59381)
-p(68853, 57104)
-p(182832, 59340)
-p(152077, 76420)
-p(198297, 64288)
-p(173900, 176172)
-p(170897, 202372)
-p(128717, 137940)
-p(205624, 200920)
-p(133341, 62344)
-p(125025, 131732)
-p(20184, 123580)
-p(177977, 40416)
-p(124533, 129112)
-p(83448, 64964)
-p(72585, 158224)
-p(213156, 129788)
-p(36549, 76128)
-p(29132, 164432)
-p(159753, 150748)
-p(14836, 3736)
-p(157585, 32264)
-p(32848, 32848)
-p(55269, 165500)
-p(160128, 152884)
-p(42617, 107276)
-p(49276, 37796)
-p(179409, 100484)
-p(42361, 190541)
-p(56388, 120577)
-p(181381, 131541)
-p(165013, 178901)
-p(136152, 75069)
-p(70561, 145517)
-p(207609, 139985)
-p(30760, 96029)
-p(204273, 214221)
-p(210709, 80209)
-p(9704, 60509)
-p(89473, 8109)
-p(2845, 105925)
-p(87520, 210341)
-p(149733, 11213)
-p(70800, 131833)
-p(94097, 94085)
-p(71636, 41877)
-p(140929, 122905)
-p(64908, 199177)
-p(48513, 31013)
-p(6356, 7525)
-p(7525, 7525)
-p(56104, 202673)
-p(197397, 205485)
-p(154660, 37805)
-p(163497, 199469)
-p(54101, 172160)
-p(38240, 147904)
-p(35437, 160128)
-p(101357, 207580)
-p(61916, 97832)
-p(67457, 189048)
-p(183929, 183224)
-p(88792, 190116)
-p(57845, 121120)
-p(131233, 97732)
-p(95288, 107144)
-p(99569, 152268)
-p(50105, 183808)
-p(115080, 136064)
-p(213973, 138976)
-p(74972, 76964)
-p(125437, 176916)
-p(92112, 179536)
-p(198085, 2344)
-p(143316, 10396)
-p(50549, 112776)
-p(123580, 57656)
-p(131833, 12632)
-p(12632, 12632)
-p(165081, 33300)
-p(30936, 97440)
-p(120701, 165468)
-p(31489, 170325)
-p(15828, 132869)
-p(207973, 187597)
-p(212949, 148881)
-p(155560, 208657)
-p(103261, 150433)
-p(64504, 74061)
-p(32297, 150725)
-p(113668, 64941)
-p(84273, 189249)
-p(156140, 15645)
-p(150133, 163533)
-p(80512, 144417)
-p(24333, 67753)
-p(96784, 194005)
-p(38661, 98709)
-p(147016, 91433)
-p(198549, 115113)
-p(63405, 34861)
-p(120328, 65817)
-p(142073, 126753)
-p(32856, 187213)
-p(162121, 9145)
-p(166060, 66593)
-p(80869, 131993)
-p(81604, 95897)
-p(181365, 214089)
-p(146849, 113361)
-p(138564, 3613)
-p(80249, 68437)
-p(151340, 35637)
-p(191617, 211277)
-p(37864, 35929)
-p(183433, 49705)
-p(19392, 181973)
-p(146329, 76197)
-p(86320, 16421)
-p(108449, 13993)
-p(115200, 79885)
-p(112297, 14093)
-p(80524, 3805)
-p(35217, 42913)
-p(30105, 30105)
-p(122832, 178669)
-p(209693, 6133)
-p(172749, 108121)
-p(143404, 205161)
-p(174461, 179353)
-p(68853, 71984)
-p(210876, 86928)
-p(118985, 137484)
-p(63901, 60436)
-p(15532, 211428)
-p(170897, 145052)
-p(150964, 48988)
-p(3085, 166112)
-p(196832, 50924)
-p(104457, 173196)
-p(176324, 33944)
-p(108597, 23656)
-p(87888, 198620)
-p(105945, 210360)
-p(1780, 143792)
-p(44777, 195416)
-p(178648, 157476)
-p(51053, 2212)
-p(32641, 126812)
-p(198444, 104492)
-p(93937, 45492)
-p(107868, 207548)
-p(58873, 22204)
-p(151308, 84500)
-p(1393, 127588)
-p(110716, 193964)
-p(78409, 51508)
-p(179649, 180764)
-p(136912, 69172)
-p(25421, 205120)
-p(179576, 16864)
-p(214713, 22104)
-p(184976, 157376)
-p(17589, 48696)
-p(67720, 167472)
-p(171269, 124776)
-p(67204, 40736)
-p(131837, 85668)
-p(95016, 26084)
-p(200801, 107304)
-p(107600, 130984)
-p(117989, 19000)
-p(203901, 122156)
-p(122156, 122156)
-p(212313, 141464)
-p(42617, 93720)
-p(201628, 209876)
-p(93825, 92652)
-p(42361, 41713)
-p(1268, 203285)
-p(181381, 167381)
-p(62833, 17457)
-p(18344, 10273)
-p(93949, 45793)
-p(68968, 89749)
-p(53257, 208525)
-p(213912, 36765)
-p(16345, 56949)
-p(200872, 138461)
-p(157893, 63257)
-p(77700, 71993)
-p(117785, 66269)
-p(120656, 204937)
-p(207609, 61897)
-p(30760, 209693)
-p(34165, 179705)
-p(45649, 183201)
-p(10964, 68205)
-p(134597, 190285)
-p(83612, 19301)
-p(47033, 48797)
-p(67276, 197853)
-p(123465, 91693)
-p(64232, 191545)
-p(54145, 113621)
-p(73681, 122065)
-p(90136, 19493)
-p(154777, 174173)
-p(24412, 41621)
-p(178125, 124585)
-p(42328, 79853)
-p(152769, 29681)
-p(15996, 15029)
-p(3973, 24833)
-p(14412, 162333)
-p(64493, 207165)
-p(207876, 116241)
-p(181777, 54137)
-p(86932, 130893)
-p(167677, 186597)
-p(109289, 164569)
-p(76156, 62581)
-p(62581, 62581)
-p(165081, 5617)
-p(211040, 75097)
-p(127493, 4841)
-p(138041, 162292)
-p(117716, 81264)
-p(154989, 12468)
-p(181213, 175392)
-p(123140, 128624)
-p(207281, 148124)
-p(89601, 75832)
-p(88884, 63024)
-p(42601, 101356)
-p(110296, 116784)
-p(102829, 11400)
-p(99492, 116976)
-p(148113, 176268)
-p(88688, 196744)
-p(82873, 53612)
-p(189284, 7228)
-p(59453, 27120)
-p(162952, 168992)
-p(100753, 114164)
-p(188340, 137644)
-p(119645, 93104)
-p(203321, 135900)
-p(202796, 59236)
-p(71121, 67196)
-p(49217, 205572)
-p(29092, 120080)
-p(203089, 14212)
-p(61377, 11501)
-p(106268, 208301)
-p(44365, 136685)
-p(171509, 31785)
-p(64140, 9949)
-p(166137, 122809)
-p(152581, 137461)
-p(184272, 189861)
-p(193985, 54589)
-p(150372, 152989)
-p(147177, 117469)
-p(201480, 5877)
-p(30889, 208201)
-p(169908, 187049)
-p(100337, 81081)
-p(158520, 34697)
-p(9089, 46437)
-p(107056, 127657)
-p(157909, 8497)
-p(90716, 90785)
-p(11057, 16257)
-p(156353, 92921)
-p(96636, 154149)
-p(169713, 11017)
-p(43785, 140273)
-p(33164, 35181)
-p(183489, 180741)
-p(214121, 123928)
-p(68904, 179824)
-p(164985, 108792)
-p(160253, 165172)
-p(189032, 18936)
-p(128581, 139748)
-p(135501, 203796)
-p(34348, 92196)
-p(126349, 103360)
-p(122136, 23884)
-p(205401, 188268)
-p(126368, 147608)
-p(200029, 9524)
-p(87520, 38828)
-p(73845, 110344)
-p(64876, 137320)
-p(187449, 119372)
-p(33596, 180892)
-p(159461, 4376)
-p(172328, 47656)
-p(119353, 44552)
-p(188669, 72012)
-p(35308, 36400)
-p(49869, 48240)
-p(10885, 55032)
-p(128168, 188752)
-p(202605, 118012)
-p(109897, 63485)
-p(80068, 103853)
-p(81629, 9141)
-p(163392, 59021)
-p(120505, 53197)
-p(203436, 212149)
-p(28481, 17877)
-p(61916, 117921)
-p(146349, 54457)
-p(71488, 167025)
-p(8617, 65521)
-p(54960, 131121)
-p(81653, 189729)
-p(180596, 169937)
-p(148773, 132573)
-p(192688, 203121)
-p(207933, 32529)
-p(140740, 9725)
-p(1689, 69109)
-p(27464, 88617)
-p(22133, 201569)
-p(133976, 197981)
-p(78965, 145773)
-p(139576, 116953)
-p(182665, 200209)
-p(190776, 43785)
-p(196217, 176245)
-p(141640, 80173)
-p(206081, 19913)
-p(182460, 24377)
-p(142293, 143445)
-p(150404, 188469)
-p(107233, 8073)
-p(199184, 5261)
-p(123113, 213409)
-p(179352, 37377)
-p(183633, 172749)
-p(142832, 67849)
-p(198253, 152565)
-p(94280, 73965)
-p(202101, 61057)
-p(116468, 77361)
-p(17885, 47181)
-p(173300, 122093)
-p(201837, 36217)
-p(65748, 49217)
-p(84097, 17293)
-p(183424, 196329)
-p(33217, 64937)
-p(159036, 172265)
-p(142057, 3317)
-p(29356, 91529)
-p(15681, 147225)
-p(153824, 157997)
-p(127049, 176629)
-p(107016, 185949)
-p(159817, 213893)
-p(150072, 38837)
-p(133193, 135485)
-p(67944, 76485)
-p(158485, 66297)
-p(52384, 35341)
-p(24833, 2641)
-p(15280, 157613)
-p(163953, 115109)
-p(43968, 141601)
-p(141601, 141601)
-p(126032, 150429)
-p(57045, 137913)
-p(4029, 87024)
-p(150516, 204148)
-p(7393, 177656)
-p(198520, 72080)
-p(156701, 73148)
-p(194892, 30544)
-p(191505, 119916)
-p(39212, 30936)
-p(184681, 211040)
-p(214428, 187360)
-p(126517, 68876)
-p(202072, 167660)
-p(203049, 165624)
-p(154488, 95660)
-p(123641, 192600)
-p(150868, 57328)
-p(6477, 45588)
-p(41564, 164848)
-p(21097, 114192)
-p(2424, 42192)
-p(154785, 154368)
-p(72940, 176688)
-p(156497, 30352)
-p(87076, 196480)
-p(80777, 5512)
-p(213872, 1048)
-p(98693, 125064)
-p(147756, 128168)
-p(66929, 154660)
-p(201576, 196388)
-p(212357, 75184)
-p(196596, 194928)
-p(105289, 55584)
-p(131064, 163296)
-p(87401, 158248)
-p(67760, 83820)
-p(78249, 13756)
-p(81604, 16184)
-p(181365, 60532)
-p(67788, 40248)
-p(88565, 169312)
-p(186240, 68684)
-p(134525, 60240)
-p(178540, 66064)
-p(166709, 45004)
-p(77396, 37628)
-p(154545, 172708)
-p(37864, 157472)
-p(183433, 52088)
-p(19392, 191340)
-p(146329, 104196)
-p(62448, 27540)
-p(22281, 22200)
-p(157028, 33748)
-p(71153, 113124)
-p(55684, 78772)
-p(35217, 130980)
-p(108244, 25012)
-p(67401, 155336)
-p(308, 89544)
-p(6133, 14924)
-p(183868, 207352)
-p(42297, 60140)
-p(155600, 143404)
-p(51093, 43744)
-p(173616, 124480)
-p(61057, 10068)
-p(10068, 10068)
-p(65681, 111864)
-p(196457, 212209)
-p(143240, 136813)
-p(180997, 146809)
-p(148348, 12989)
-p(202309, 36669)
-p(7412, 108477)
-p(15573, 26573)
-p(65120, 54233)
-p(129561, 144381)
-p(102836, 156413)
-p(6481, 1249)
-p(129196, 130505)
-p(130173, 106149)
-p(156816, 82469)
-p(87445, 168929)
-p(74496, 16385)
-p(174165, 201345)
-p(130844, 2509)
-p(95141, 161461)
-p(203880, 181)
-p(53089, 106049)
-p(13356, 74125)
-p(178817, 153601)
-p(36420, 19005)
-p(48461, 94309)
-p(0, 161845)
-p(115581, 160685)
-p(24708, 151173)
-p(144561, 58789)
-p(117060, 144573)
-p(96009, 86641)
-p(70928, 204641)
-p(5729, 200177)
-p(127760, 112841)
-p(143297, 195421)
-p(73000, 51029)
-p(207113, 107117)
-p(182716, 27641)
-p(13877, 141761)
-p(38484, 122353)
-p(137469, 20949)
-p(117636, 35601)
-p(3041, 66557)
-p(44820, 130797)
-p(162053, 177665)
-p(169288, 204057)
-p(201997, 163497)
-p(11372, 205901)
-p(127829, 101001)
-p(53552, 93049)
-p(184177, 106825)
-p(209560, 147969)
-p(133873, 71697)
-p(30100, 95277)
-p(139373, 139625)
-p(134384, 4545)
-p(35701, 164273)
-p(138908, 62869)
-p(130765, 24537)
-p(97832, 9885)
-p(24089, 42393)
-p(124968, 67817)
-p(76065, 198433)
-p(36048, 179409)
-p(11017, 93825)
-p(66872, 104305)
-p(9725, 182713)
-p(121860, 212793)
-p(212793, 212793)
+p(x = 177533, y = 177533)
+p(x = 133828, y = 31489)
+p(x = 144509, y = 138041)
+p(x = 87312, y = 57981)
+p(x = 160197, y = 14025)
+p(x = 76508, y = 129013)
+p(x = 212949, y = 43329)
+p(x = 155560, y = 70405)
+p(x = 23301, y = 60893)
+p(x = 64504, y = 75837)
+p(x = 32297, y = 166861)
+p(x = 113668, y = 168121)
+p(x = 84273, y = 151141)
+p(x = 156140, y = 172777)
+p(x = 172545, y = 179961)
+p(x = 23840, y = 102521)
+p(x = 14437, y = 158125)
+p(x = 175384, y = 118925)
+p(x = 74857, y = 149881)
+p(x = 188160, y = 98057)
+p(x = 7481, y = 153469)
+p(x = 53632, y = 172685)
+p(x = 71397, y = 109897)
+p(x = 161504, y = 66717)
+p(x = 59133, y = 126201)
+p(x = 107904, y = 151817)
+p(x = 70065, y = 208005)
+p(x = 88948, y = 18197)
+p(x = 117193, y = 119701)
+p(x = 143744, y = 134645)
+p(x = 192365, y = 65941)
+p(x = 77044, y = 11013)
+p(x = 9317, y = 54293)
+p(x = 83804, y = 116305)
+p(x = 87401, y = 139301)
+p(x = 162664, y = 3545)
+p(x = 53985, y = 72733)
+p(x = 4748, y = 151041)
+p(x = 109849, y = 31589)
+p(x = 66428, y = 19649)
+p(x = 211705, y = 141629)
+p(x = 195360, y = 39449)
+p(x = 62425, y = 42361)
+p(x = 164956, y = 112325)
+p(x = 169429, y = 128821)
+p(x = 158808, y = 2769)
+p(x = 127569, y = 108153)
+p(x = 129956, y = 174721)
+p(x = 91825, y = 71181)
+p(x = 147196, y = 149005)
+p(x = 103533, y = 49053)
+p(x = 86320, y = 136389)
+p(x = 26261, y = 148421)
+p(x = 205548, y = 114361)
+p(x = 69701, y = 7909)
+p(x = 80524, y = 44689)
+p(x = 35217, y = 156281)
+p(x = 120084, y = 149297)
+p(x = 173561, y = 146193)
+p(x = 152268, y = 196165)
+p(x = 28745, y = 13733)
+p(x = 122832, y = 155021)
+p(x = 42297, y = 30521)
+p(x = 155600, y = 68853)
+p(x = 51093, y = 184325)
+p(x = 173616, y = 137457)
+p(x = 61057, y = 197425)
+p(x = 116036, y = 138817)
+p(x = 65681, y = 162981)
+p(x = 162981, y = 12040)
+p(x = 12040, y = 12040)
+p(x = 62221, y = 143240)
+p(x = 148348, y = 201848)
+p(x = 202309, y = 83656)
+p(x = 7412, y = 49112)
+p(x = 15573, y = 212236)
+p(x = 167400, y = 74052)
+p(x = 40189, y = 102872)
+p(x = 68092, y = 162356)
+p(x = 24629, y = 139260)
+p(x = 129196, y = 186712)
+p(x = 64189, y = 21068)
+p(x = 156816, y = 24948)
+p(x = 176817, y = 102096)
+p(x = 131844, y = 161480)
+p(x = 58493, y = 185744)
+p(x = 130844, y = 93844)
+p(x = 95141, y = 164876)
+p(x = 83260, y = 68812)
+p(x = 53089, y = 93068)
+p(x = 115736, y = 49888)
+p(x = 187745, y = 132760)
+p(x = 36420, y = 153328)
+p(x = 48461, y = 91224)
+p(x = 0, y = 6416)
+p(x = 115581, y = 15828)
+p(x = 24708, y = 57164)
+p(x = 144561, y = 117716)
+p(x = 88332, y = 184384)
+p(x = 136277, y = 92584)
+p(x = 184272, y = 38924)
+p(x = 193985, y = 91616)
+p(x = 91664, y = 188848)
+p(x = 191425, y = 13108)
+p(x = 84064, y = 127420)
+p(x = 109881, y = 202624)
+p(x = 169908, y = 194380)
+p(x = 34253, y = 124024)
+p(x = 89624, y = 60952)
+p(x = 134657, y = 194672)
+p(x = 107056, y = 38240)
+p(x = 144713, y = 155080)
+p(x = 111972, y = 123732)
+p(x = 11353, y = 112768)
+p(x = 145224, y = 170508)
+p(x = 140961, y = 196224)
+p(x = 26800, y = 76572)
+p(x = 156649, y = 116748)
+p(x = 187372, y = 159252)
+p(x = 18433, y = 104424)
+p(x = 42264, y = 100544)
+p(x = 161141, y = 44548)
+p(x = 206324, y = 173320)
+p(x = 174017, y = 16020)
+p(x = 108476, y = 71040)
+p(x = 169521, y = 209708)
+p(x = 37796, y = 163132)
+p(x = 108545, y = 106168)
+p(x = 63188, y = 211844)
+p(x = 214089, y = 61728)
+p(x = 205804, y = 71816)
+p(x = 85093, y = 48628)
+p(x = 11400, y = 160704)
+p(x = 72637, y = 9228)
+p(x = 24176, y = 197484)
+p(x = 43785, y = 151292)
+p(x = 33164, y = 159152)
+p(x = 183489, y = 3112)
+p(x = 214121, y = 34269)
+p(x = 88704, y = 137617)
+p(x = 137617, y = 137617)
+p(x = 48980, y = 164985)
+p(x = 71017, y = 72601)
+p(x = 84560, y = 78325)
+p(x = 71369, y = 46885)
+p(x = 155752, y = 53193)
+p(x = 146157, y = 26409)
+p(x = 35976, y = 131309)
+p(x = 116913, y = 197201)
+p(x = 152000, y = 94045)
+p(x = 25273, y = 161681)
+p(x = 139352, y = 169641)
+p(x = 40669, y = 118985)
+p(x = 127480, y = 154505)
+p(x = 206281, y = 152077)
+p(x = 163544, y = 102973)
+p(x = 168209, y = 22045)
+p(x = 192524, y = 59017)
+p(x = 102677, y = 79877)
+p(x = 88952, y = 62221)
+p(x = 181145, y = 8845)
+p(x = 171692, y = 49021)
+p(x = 177717, y = 35045)
+p(x = 20860, y = 183033)
+p(x = 128581, y = 129173)
+p(x = 53628, y = 166829)
+p(x = 115257, y = 81821)
+p(x = 90568, y = 20685)
+p(x = 135501, y = 191477)
+p(x = 81700, y = 82497)
+p(x = 112473, y = 123549)
+p(x = 78564, y = 67553)
+p(x = 210449, y = 149265)
+p(x = 107060, y = 9237)
+p(x = 204301, y = 76581)
+p(x = 108096, y = 157801)
+p(x = 119553, y = 135481)
+p(x = 64876, y = 20785)
+p(x = 194725, y = 25341)
+p(x = 30492, y = 93661)
+p(x = 200901, y = 193221)
+p(x = 8916, y = 161973)
+p(x = 130321, y = 208649)
+p(x = 176472, y = 7393)
+p(x = 111657, y = 70565)
+p(x = 62512, y = 2345)
+p(x = 34961, y = 62413)
+p(x = 172328, y = 188173)
+p(x = 119353, y = 144509)
+p(x = 100872, y = 122965)
+p(x = 148141, y = 154989)
+p(x = 152080, y = 12049)
+p(x = 100557, y = 126361)
+p(x = 39964, y = 205837)
+p(x = 10569, y = 69789)
+p(x = 6356, y = 120153)
+p(x = 93893, y = 57949)
+p(x = 166920, y = 9429)
+p(x = 163533, y = 196033)
+p(x = 158544, y = 40677)
+p(x = 15221, y = 51833)
+p(x = 18092, y = 106369)
+p(x = 127657, y = 101521)
+p(x = 166240, y = 35437)
+p(x = 59021, y = 70857)
+p(x = 194928, y = 96281)
+p(x = 139625, y = 133637)
+p(x = 16937, y = 95364)
+p(x = 159252, y = 42380)
+p(x = 132377, y = 98568)
+p(x = 39633, y = 208124)
+p(x = 92476, y = 48980)
+p(x = 201849, y = 104100)
+p(x = 17693, y = 174356)
+p(x = 173300, y = 148348)
+p(x = 175445, y = 189592)
+p(x = 63969, y = 125836)
+p(x = 68876, y = 174548)
+p(x = 160685, y = 164168)
+p(x = 138041, y = 212497)
+p(x = 117716, y = 56749)
+p(x = 154989, y = 12793)
+p(x = 111733, y = 146513)
+p(x = 9020, y = 144085)
+p(x = 142073, y = 106921)
+p(x = 134525, y = 76549)
+p(x = 864, y = 63449)
+p(x = 41917, y = 39285)
+p(x = 158097, y = 110025)
+p(x = 116036, y = 89065)
+p(x = 65681, y = 25117)
+p(x = 196457, y = 214592)
+p(x = 143240, y = 87472)
+p(x = 90165, y = 15664)
+p(x = 102705, y = 4792)
+p(x = 94128, y = 72820)
+p(x = 176033, y = 71460)
+p(x = 127249, y = 46228)
+p(x = 156028, y = 140356)
+p(x = 115861, y = 31576)
+p(x = 9725, y = 28472)
+p(x = 85372, y = 204696)
+p(x = 212793, y = 193048)
+p(x = 78557, y = 96017)
+p(x = 71816, y = 165013)
+p(x = 150041, y = 82725)
+p(x = 213533, y = 213533)
+p(x = 184088, y = 112513)
+p(x = 70561, y = 62833)
+p(x = 30344, y = 104169)
+p(x = 36469, y = 66713)
+p(x = 65540, y = 153173)
+p(x = 197809, y = 118629)
+p(x = 141488, y = 198105)
+p(x = 208065, y = 90101)
+p(x = 21612, y = 110769)
+p(x = 208417, y = 158029)
+p(x = 31084, y = 52061)
+p(x = 170637, y = 202569)
+p(x = 17468, y = 92329)
+p(x = 176329, y = 201017)
+p(x = 110081, y = 206157)
+p(x = 177092, y = 34105)
+p(x = 185253, y = 190537)
+p(x = 200544, y = 148709)
+p(x = 132525, y = 188693)
+p(x = 75812, y = 127849)
+p(x = 15749, y = 48181)
+p(x = 199116, y = 15573)
+p(x = 71905, y = 86705)
+p(x = 198085, y = 18385)
+p(x = 143316, y = 183645)
+p(x = 106445, y = 93789)
+p(x = 31684, y = 63025)
+p(x = 150953, y = 154725)
+p(x = 6712, y = 108441)
+p(x = 85905, y = 145121)
+p(x = 152432, y = 139689)
+p(x = 22017, y = 32553)
+p(x = 131732, y = 70885)
+p(x = 210341, y = 193541)
+p(x = 169156, y = 50993)
+p(x = 99877, y = 57785)
+p(x = 14052, y = 205189)
+p(x = 54137, y = 125421)
+p(x = 165081, y = 118821)
+p(x = 30936, y = 121441)
+p(x = 161845, y = 208001)
+p(x = 177533, y = 105972)
+p(x = 203500, y = 197188)
+p(x = 144509, y = 207284)
+p(x = 212949, y = 198356)
+p(x = 198356, y = 198356)
+p(x = 103261, y = 97144)
+p(x = 64504, y = 106264)
+p(x = 208229, y = 11844)
+p(x = 189748, y = 151972)
+p(x = 134637, y = 59104)
+p(x = 29504, y = 150804)
+p(x = 145861, y = 99764)
+p(x = 9380, y = 165456)
+p(x = 153589, y = 184864)
+p(x = 81256, y = 76084)
+p(x = 185773, y = 58812)
+p(x = 118096, y = 115000)
+p(x = 2725, y = 104128)
+p(x = 138225, y = 60656)
+p(x = 49780, y = 65796)
+p(x = 11457, y = 154784)
+p(x = 30044, y = 91612)
+p(x = 178909, y = 165072)
+p(x = 161404, y = 206600)
+p(x = 11093, y = 121692)
+p(x = 40164, y = 30184)
+p(x = 162537, y = 61624)
+p(x = 162473, y = 147116)
+p(x = 107796, y = 34940)
+p(x = 1161, y = 114416)
+p(x = 2864, y = 53864)
+p(x = 82349, y = 131104)
+p(x = 209328, y = 15532)
+p(x = 204197, y = 92388)
+p(x = 149036, y = 182536)
+p(x = 68309, y = 173900)
+p(x = 176172, y = 169436)
+p(x = 87001, y = 9032)
+p(x = 179536, y = 19512)
+p(x = 121029, y = 46004)
+p(x = 202308, y = 170796)
+p(x = 188633, y = 164780)
+p(x = 20689, y = 65120)
+p(x = 154268, y = 167400)
+p(x = 144381, y = 154300)
+p(x = 195097, y = 211173)
+p(x = 102872, y = 11753)
+p(x = 67553, y = 172649)
+p(x = 142309, y = 79389)
+p(x = 194376, y = 129269)
+p(x = 129269, y = 129269)
+p(x = 66832, y = 113549)
+p(x = 182121, y = 124905)
+p(x = 141036, y = 199917)
+p(x = 25665, y = 8649)
+p(x = 168756, y = 195353)
+p(x = 61629, y = 175461)
+p(x = 63048, y = 123545)
+p(x = 93913, y = 184681)
+p(x = 155008, y = 75901)
+p(x = 139681, y = 137905)
+p(x = 173892, y = 214569)
+p(x = 110829, y = 190113)
+p(x = 4989, y = 166049)
+p(x = 120228, y = 138297)
+p(x = 166137, y = 170413)
+p(x = 91664, y = 178373)
+p(x = 142813, y = 143921)
+p(x = 84064, y = 3509)
+p(x = 144713, y = 33589)
+p(x = 177280, y = 188369)
+p(x = 186117, y = 114909)
+p(x = 156649, y = 108893)
+p(x = 53068, y = 73765)
+p(x = 18433, y = 59113)
+p(x = 42264, y = 45429)
+p(x = 161141, y = 67457)
+p(x = 168184, y = 91229)
+p(x = 153541, y = 103069)
+p(x = 108476, y = 7581)
+p(x = 169521, y = 38245)
+p(x = 21200, y = 46881)
+p(x = 22085, y = 54841)
+p(x = 113452, y = 190889)
+p(x = 88037, y = 131697)
+p(x = 209876, y = 141009)
+p(x = 41713, y = 196905)
+p(x = 201569, y = 183513)
+p(x = 68684, y = 105789)
+p(x = 23761, y = 70561)
+p(x = 57013, y = 30344)
+p(x = 56972, y = 52664)
+p(x = 100745, y = 115452)
+p(x = 202569, y = 140000)
+p(x = 206600, y = 149220)
+p(x = 62117, y = 121952)
+p(x = 50017, y = 181144)
+p(x = 76952, y = 80416)
+p(x = 191949, y = 120300)
+p(x = 39725, y = 149120)
+p(x = 46676, y = 193176)
+p(x = 5441, y = 150964)
+p(x = 41304, y = 16568)
+p(x = 73237, y = 212876)
+p(x = 95808, y = 180560)
+p(x = 64876, y = 66832)
+p(x = 194725, y = 189296)
+p(x = 41748, y = 99048)
+p(x = 124437, y = 132140)
+p(x = 59472, y = 80808)
+p(x = 116445, y = 135728)
+p(x = 124433, y = 39272)
+p(x = 190084, y = 145340)
+p(x = 64817, y = 65280)
+p(x = 189249, y = 75176)
+p(x = 192604, y = 200552)
+p(x = 43949, y = 43252)
+p(x = 10501, y = 9484)
+p(x = 196388, y = 50820)
+p(x = 205901, y = 110888)
+p(x = 151817, y = 184549)
+p(x = 155080, y = 159901)
+p(x = 70857, y = 154469)
+p(x = 164237, y = 86833)
+p(x = 115000, y = 8617)
+p(x = 67457, y = 45105)
+p(x = 1689, y = 109637)
+p(x = 26396, y = 20457)
+p(x = 97045, y = 115553)
+p(x = 56321, y = 127101)
+p(x = 184568, y = 126425)
+p(x = 11649, y = 27441)
+p(x = 205880, y = 115653)
+p(x = 108073, y = 44813)
+p(x = 76108, y = 112741)
+p(x = 23832, y = 156797)
+p(x = 210153, y = 116913)
+p(x = 122776, y = 208713)
+p(x = 30401, y = 101485)
+p(x = 31528, y = 29385)
+p(x = 190097, y = 83145)
+p(x = 77657, y = 162037)
+p(x = 80044, y = 36177)
+p(x = 59577, y = 3085)
+p(x = 85609, y = 19973)
+p(x = 45492, y = 115261)
+p(x = 164569, y = 18613)
+p(x = 165081, y = 186101)
+p(x = 30936, y = 193961)
+p(x = 161845, y = 169897)
+p(x = 177533, y = 158500)
+p(x = 15828, y = 22644)
+p(x = 19717, y = 187128)
+p(x = 212949, y = 49720)
+p(x = 168952, y = 122696)
+p(x = 103261, y = 175096)
+p(x = 155209, y = 18180)
+p(x = 54440, y = 12556)
+p(x = 123345, y = 166944)
+p(x = 126869, y = 69320)
+p(x = 61328, y = 206052)
+p(x = 61821, y = 42828)
+p(x = 29948, y = 104840)
+p(x = 361, y = 107460)
+p(x = 112788, y = 93292)
+p(x = 44984, y = 53216)
+p(x = 59453, y = 191300)
+p(x = 162952, y = 193144)
+p(x = 161017, y = 207796)
+p(x = 205424, y = 19540)
+p(x = 48225, y = 106684)
+p(x = 72033, y = 11388)
+p(x = 17648, y = 51856)
+p(x = 56957, y = 152968)
+p(x = 129765, y = 208672)
+p(x = 211428, y = 204984)
+p(x = 56273, y = 3044)
+p(x = 36217, y = 94360)
+p(x = 109828, y = 3528)
+p(x = 36669, y = 125800)
+p(x = 204125, y = 60793)
+p(x = 12432, y = 108145)
+p(x = 129173, y = 30613)
+p(x = 183645, y = 119401)
+p(x = 112088, y = 64189)
+p(x = 36401, y = 207029)
+p(x = 95141, y = 25665)
+p(x = 203880, y = 65349)
+p(x = 53089, y = 43129)
+p(x = 48461, y = 37697)
+p(x = 0, y = 141)
+p(x = 115581, y = 31289)
+p(x = 24708, y = 203049)
+p(x = 144561, y = 151233)
+p(x = 117060, y = 127553)
+p(x = 91664, y = 128137)
+p(x = 117873, y = 84273)
+p(x = 139468, y = 7517)
+p(x = 144713, y = 212461)
+p(x = 86740, y = 119985)
+p(x = 30077, y = 34009)
+p(x = 90757, y = 203533)
+p(x = 2220, y = 171417)
+p(x = 180973, y = 117173)
+p(x = 35929, y = 183933)
+p(x = 169216, y = 197809)
+p(x = 45793, y = 188881)
+p(x = 143445, y = 145601)
+p(x = 130980, y = 16637)
+p(x = 54717, y = 21393)
+p(x = 13733, y = 17664)
+p(x = 119560, y = 38040)
+p(x = 197201, y = 135856)
+p(x = 201985, y = 195632)
+p(x = 114416, y = 135472)
+p(x = 2049, y = 161964)
+p(x = 173933, y = 176324)
+p(x = 121592, y = 35228)
+p(x = 143529, y = 182340)
+p(x = 207897, y = 58516)
+p(x = 20184, y = 14560)
+p(x = 180789, y = 38332)
+p(x = 160, y = 100344)
+p(x = 25301, y = 23388)
+p(x = 157328, y = 52892)
+p(x = 1516, y = 130232)
+p(x = 190557, y = 113344)
+p(x = 131608, y = 80060)
+p(x = 142193, y = 188164)
+p(x = 72964, y = 166328)
+p(x = 96261, y = 49880)
+p(x = 58641, y = 16404)
+p(x = 52000, y = 112860)
+p(x = 116441, y = 211644)
+p(x = 180029, y = 67836)
+p(x = 105368, y = 82488)
+p(x = 49573, y = 202816)
+p(x = 59021, y = 53568)
+p(x = 70236, y = 154104)
+p(x = 71697, y = 5340)
+p(x = 119701, y = 64641)
+p(x = 170508, y = 23497)
+p(x = 133637, y = 75413)
+p(x = 184521, y = 201273)
+p(x = 60656, y = 79293)
+p(x = 202145, y = 201757)
+p(x = 68649, y = 100929)
+p(x = 200000, y = 6025)
+p(x = 152357, y = 11657)
+p(x = 62045, y = 90841)
+p(x = 95288, y = 100153)
+p(x = 99569, y = 194281)
+p(x = 201124, y = 37081)
+p(x = 170761, y = 153913)
+p(x = 153932, y = 191277)
+p(x = 184532, y = 56005)
+p(x = 158917, y = 40669)
+p(x = 125884, y = 136449)
+p(x = 41949, y = 124609)
+p(x = 114884, y = 149841)
+p(x = 175445, y = 187197)
+p(x = 9829, y = 160613)
+p(x = 163108, y = 147513)
+p(x = 156617, y = 214273)
+p(x = 99877, y = 173129)
+p(x = 126812, y = 184385)
+p(x = 130893, y = 66385)
+p(x = 165081, y = 54161)
+p(x = 30936, y = 78417)
+p(x = 127493, y = 82205)
+p(x = 138041, y = 157176)
+p(x = 117716, y = 1812)
+p(x = 154989, y = 37332)
+p(x = 207709, y = 50332)
+p(x = 106264, y = 83908)
+p(x = 193025, y = 11224)
+p(x = 66221, y = 100504)
+p(x = 118096, y = 37232)
+p(x = 2725, y = 92936)
+p(x = 21969, y = 139028)
+p(x = 64432, y = 53728)
+p(x = 45709, y = 59844)
+p(x = 144529, y = 20252)
+p(x = 111880, y = 78476)
+p(x = 4077, y = 46260)
+p(x = 37420, y = 48104)
+p(x = 111857, y = 35680)
+p(x = 83380, y = 66636)
+p(x = 145885, y = 196668)
+p(x = 193004, y = 110400)
+p(x = 87529, y = 35872)
+p(x = 13129, y = 77700)
+p(x = 205424, y = 62756)
+p(x = 81801, y = 153488)
+p(x = 11965, y = 208024)
+p(x = 188340, y = 192304)
+p(x = 86069, y = 201132)
+p(x = 209333, y = 45576)
+p(x = 211428, y = 209476)
+p(x = 210077, y = 212680)
+p(x = 17293, y = 104192)
+p(x = 51504, y = 103508)
+p(x = 203089, y = 122432)
+p(x = 61377, y = 116617)
+p(x = 212236, y = 62665)
+p(x = 81821, y = 110993)
+p(x = 183645, y = 65477)
+p(x = 24752, y = 41997)
+p(x = 36401, y = 27053)
+p(x = 95141, y = 150485)
+p(x = 203880, y = 156501)
+p(x = 159833, y = 150777)
+p(x = 151517, y = 30741)
+p(x = 39008, y = 115649)
+p(x = 192821, y = 199881)
+p(x = 152581, y = 32001)
+p(x = 52688, y = 140781)
+p(x = 193985, y = 20161)
+p(x = 91664, y = 49465)
+p(x = 191425, y = 127097)
+p(x = 201480, y = 12493)
+p(x = 30889, y = 203469)
+p(x = 169908, y = 179789)
+p(x = 100337, y = 24333)
+p(x = 51461, y = 74113)
+p(x = 129344, y = 14629)
+p(x = 78989, y = 106621)
+p(x = 157909, y = 190853)
+p(x = 137492, y = 162617)
+p(x = 59769, y = 113029)
+p(x = 68437, y = 2697)
+p(x = 211528, y = 32969)
+p(x = 56173, y = 162325)
+p(x = 43785, y = 60045)
+p(x = 104196, y = 152137)
+p(x = 134193, y = 68197)
+p(x = 148421, y = 31084)
+p(x = 68904, y = 69708)
+p(x = 137617, y = 184020)
+p(x = 201017, y = 184312)
+p(x = 155752, y = 120656)
+p(x = 110637, y = 210320)
+p(x = 71269, y = 93388)
+p(x = 20572, y = 77084)
+p(x = 102677, y = 57576)
+p(x = 177717, y = 81156)
+p(x = 20860, y = 60588)
+p(x = 54737, y = 43216)
+p(x = 83685, y = 99596)
+p(x = 166808, y = 140064)
+p(x = 28825, y = 63400)
+p(x = 165024, y = 80672)
+p(x = 75177, y = 214008)
+p(x = 171884, y = 161024)
+p(x = 11389, y = 87080)
+p(x = 87520, y = 1780)
+p(x = 73845, y = 67572)
+p(x = 124437, y = 91252)
+p(x = 59472, y = 68056)
+p(x = 31437, y = 193140)
+p(x = 124433, y = 208376)
+p(x = 46760, y = 66896)
+p(x = 64817, y = 131036)
+p(x = 64941, y = 48556)
+p(x = 195708, y = 55056)
+p(x = 6101, y = 99012)
+p(x = 82793, y = 96784)
+p(x = 128168, y = 79412)
+p(x = 205901, y = 23616)
+p(x = 151817, y = 185773)
+p(x = 155080, y = 102225)
+p(x = 70857, y = 83109)
+p(x = 51185, y = 172481)
+p(x = 115000, y = 172189)
+p(x = 67457, y = 52053)
+p(x = 40824, y = 196353)
+p(x = 105073, y = 180825)
+p(x = 203140, y = 59621)
+p(x = 165885, y = 180049)
+p(x = 173604, y = 1689)
+p(x = 79293, y = 38177)
+p(x = 80220, y = 7513)
+p(x = 130009, y = 133857)
+p(x = 115416, y = 27889)
+p(x = 27889, y = 27889)
+p(x = 47064, y = 122309)
+p(x = 57845, y = 66513)
+p(x = 75437, y = 93005)
+p(x = 177092, y = 207609)
+p(x = 185253, y = 72337)
+p(x = 169077, y = 19353)
+p(x = 108192, y = 36817)
+p(x = 34841, y = 71269)
+p(x = 18181, y = 35749)
+p(x = 137692, y = 153557)
+p(x = 57833, y = 118137)
+p(x = 108932, y = 125321)
+p(x = 182693, y = 18285)
+p(x = 56984, y = 213625)
+p(x = 115701, y = 181701)
+p(x = 131572, y = 133473)
+p(x = 71905, y = 10425)
+p(x = 198085, y = 75733)
+p(x = 143316, y = 79805)
+p(x = 79953, y = 89509)
+p(x = 202668, y = 42157)
+p(x = 150953, y = 105813)
+p(x = 6712, y = 63309)
+p(x = 85905, y = 25561)
+p(x = 81984, y = 63017)
+p(x = 22017, y = 138905)
+p(x = 131732, y = 30125)
+p(x = 210341, y = 146181)
+p(x = 12632, y = 95141)
+p(x = 146453, y = 212265)
+p(x = 45492, y = 74081)
+p(x = 62581, y = 21197)
+p(x = 75809, y = 127841)
+p(x = 167660, y = 21873)
+p(x = 42293, y = 155985)
+p(x = 57981, y = 62492)
+p(x = 117716, y = 88208)
+p(x = 154989, y = 70352)
+p(x = 207709, y = 52596)
+p(x = 106264, y = 76368)
+p(x = 81333, y = 98012)
+p(x = 200552, y = 146532)
+p(x = 24337, y = 133916)
+p(x = 57872, y = 188160)
+p(x = 75445, y = 147016)
+p(x = 65408, y = 209604)
+p(x = 185261, y = 54440)
+p(x = 103900, y = 118096)
+p(x = 190853, y = 126540)
+p(x = 138120, y = 58612)
+p(x = 180825, y = 151380)
+p(x = 151380, y = 151380)
+p(x = 63377, y = 8440)
+p(x = 59909, y = 105872)
+p(x = 49780, y = 194760)
+p(x = 11457, y = 70744)
+p(x = 133465, y = 88792)
+p(x = 86556, y = 3884)
+p(x = 117129, y = 155844)
+p(x = 177809, y = 38620)
+p(x = 181356, y = 200000)
+p(x = 63757, y = 17468)
+p(x = 20436, y = 160408)
+p(x = 166681, y = 144588)
+p(x = 174692, y = 122076)
+p(x = 186541, y = 97912)
+p(x = 146132, y = 204364)
+p(x = 77529, y = 80448)
+p(x = 206721, y = 156428)
+p(x = 49572, y = 211548)
+p(x = 93153, y = 176320)
+p(x = 134064, y = 120040)
+p(x = 82349, y = 137504)
+p(x = 209328, y = 192524)
+p(x = 204197, y = 78896)
+p(x = 164464, y = 136728)
+p(x = 6297, y = 148084)
+p(x = 18196, y = 72680)
+p(x = 43045, y = 140900)
+p(x = 12340, y = 171080)
+p(x = 197401, y = 20280)
+p(x = 173196, y = 39788)
+p(x = 91693, y = 121592)
+p(x = 185949, y = 168268)
+p(x = 54224, y = 55408)
+p(x = 1249, y = 13296)
+p(x = 104465, y = 14173)
+p(x = 120920, y = 92681)
+p(x = 76581, y = 30185)
+p(x = 19745, y = 92197)
+p(x = 113640, y = 51053)
+p(x = 113549, y = 208353)
+p(x = 49852, y = 93649)
+p(x = 182121, y = 164489)
+p(x = 211484, y = 132565)
+p(x = 25665, y = 202821)
+p(x = 168756, y = 53089)
+p(x = 83465, y = 158181)
+p(x = 130292, y = 86957)
+p(x = 93913, y = 20097)
+p(x = 155008, y = 23201)
+p(x = 139681, y = 16701)
+p(x = 173892, y = 110829)
+p(x = 110829, y = 110829)
+p(x = 4989, y = 154593)
+p(x = 120228, y = 213977)
+p(x = 166137, y = 193793)
+p(x = 68641, y = 104421)
+p(x = 81992, y = 40765)
+p(x = 193985, y = 154785)
+p(x = 30889, y = 182153)
+p(x = 169908, y = 149837)
+p(x = 34253, y = 7481)
+p(x = 89624, y = 120141)
+p(x = 134657, y = 14565)
+p(x = 107056, y = 114225)
+p(x = 144713, y = 198549)
+p(x = 177280, y = 203789)
+p(x = 186117, y = 15533)
+p(x = 141997, y = 106073)
+p(x = 2220, y = 43869)
+p(x = 180973, y = 210389)
+p(x = 144152, y = 8257)
+p(x = 208501, y = 155661)
+p(x = 196136, y = 63377)
+p(x = 17201, y = 99573)
+p(x = 172716, y = 97045)
+p(x = 95577, y = 22133)
+p(x = 55944, y = 83169)
+p(x = 74969, y = 143821)
+p(x = 45816, y = 94233)
+p(x = 113361, y = 181085)
+p(x = 4348, y = 66189)
+p(x = 41521, y = 116453)
+p(x = 176245, y = 186809)
+p(x = 104196, y = 49401)
+p(x = 134193, y = 152357)
+p(x = 114361, y = 22384)
+p(x = 147704, y = 24128)
+p(x = 78325, y = 145624)
+p(x = 177717, y = 174928)
+p(x = 15328, y = 70128)
+p(x = 128581, y = 181336)
+p(x = 106973, y = 166584)
+p(x = 480, y = 77988)
+p(x = 118097, y = 203848)
+p(x = 110365, y = 56252)
+p(x = 115564, y = 25196)
+p(x = 106937, y = 2492)
+p(x = 5853, y = 111272)
+p(x = 95960, y = 115736)
+p(x = 116445, y = 13356)
+p(x = 197397, y = 124080)
+p(x = 154660, y = 62460)
+p(x = 205901, y = 192008)
+p(x = 151817, y = 15793)
+p(x = 155080, y = 5213)
+p(x = 70857, y = 97889)
+p(x = 182665, y = 41801)
+p(x = 82288, y = 211425)
+p(x = 180889, y = 143789)
+p(x = 128125, y = 196965)
+p(x = 6596, y = 125833)
+p(x = 107233, y = 125349)
+p(x = 183633, y = 93809)
+p(x = 142832, y = 40633)
+p(x = 198253, y = 76345)
+p(x = 179457, y = 202497)
+p(x = 202220, y = 111181)
+p(x = 137113, y = 82945)
+p(x = 206225, y = 187745)
+p(x = 30544, y = 178817)
+p(x = 153601, y = 191725)
+p(x = 59825, y = 136956)
+p(x = 133828, y = 211576)
+p(x = 144509, y = 64464)
+p(x = 197317, y = 205268)
+p(x = 170108, y = 67376)
+p(x = 46585, y = 72424)
+p(x = 66121, y = 47000)
+p(x = 77044, y = 184408)
+p(x = 9317, y = 122396)
+p(x = 40693, y = 207696)
+p(x = 81604, y = 99300)
+p(x = 181365, y = 201872)
+p(x = 145105, y = 199736)
+p(x = 162628, y = 104932)
+p(x = 80249, y = 126960)
+p(x = 73965, y = 148888)
+p(x = 124480, y = 54760)
+p(x = 159133, y = 35160)
+p(x = 208489, y = 51273)
+p(x = 51924, y = 85725)
+p(x = 62221, y = 177717)
+p(x = 148348, y = 200621)
+p(x = 202309, y = 160253)
+p(x = 7412, y = 129681)
+p(x = 15573, y = 83589)
+p(x = 171088, y = 78057)
+p(x = 120441, y = 56421)
+p(x = 102836, y = 127937)
+p(x = 32197, y = 211485)
+p(x = 172768, y = 94845)
+p(x = 119401, y = 3437)
+p(x = 181756, y = 85625)
+p(x = 122281, y = 125025)
+p(x = 131844, y = 207897)
+p(x = 58493, y = 140261)
+p(x = 130844, y = 102705)
+p(x = 131529, y = 7217)
+p(x = 185348, y = 106493)
+p(x = 161677, y = 35069)
+p(x = 13356, y = 201397)
+p(x = 178817, y = 12365)
+p(x = 36420, y = 48461)
+p(x = 48461, y = 48461)
+p(x = 49296, y = 151517)
+p(x = 115581, y = 169373)
+p(x = 121840, y = 80777)
+p(x = 137469, y = 206345)
+p(x = 117636, y = 101445)
+p(x = 44961, y = 5765)
+p(x = 58312, y = 80193)
+p(x = 43469, y = 178009)
+p(x = 169288, y = 53701)
+p(x = 201997, y = 197317)
+p(x = 15836, y = 142881)
+p(x = 127829, y = 207021)
+p(x = 53552, y = 87277)
+p(x = 184177, y = 150549)
+p(x = 209560, y = 154913)
+p(x = 133873, y = 63405)
+p(x = 148000, y = 181213)
+p(x = 68925, y = 111733)
+p(x = 134384, y = 32741)
+p(x = 35701, y = 20901)
+p(x = 138908, y = 18765)
+p(x = 152409, y = 64373)
+p(x = 189048, y = 138225)
+p(x = 187213, y = 116581)
+p(x = 124968, y = 21969)
+p(x = 41713, y = 59909)
+p(x = 77192, y = 179369)
+p(x = 154249, y = 15369)
+p(x = 122668, y = 56321)
+p(x = 116953, y = 182665)
+p(x = 37628, y = 182181)
+p(x = 209397, y = 118525)
+p(x = 149005, y = 130324)
+p(x = 151292, y = 173312)
+p(x = 35729, y = 191068)
+p(x = 13076, y = 131776)
+p(x = 184069, y = 190192)
+p(x = 6636, y = 92476)
+p(x = 158029, y = 13776)
+p(x = 206600, y = 206304)
+p(x = 62117, y = 95288)
+p(x = 121952, y = 85100)
+p(x = 205993, y = 177092)
+p(x = 160928, y = 56380)
+p(x = 204601, y = 52108)
+p(x = 17664, y = 155456)
+p(x = 105493, y = 26200)
+p(x = 6860, y = 147888)
+p(x = 133113, y = 135272)
+p(x = 93388, y = 9704)
+p(x = 168209, y = 27168)
+p(x = 192524, y = 14260)
+p(x = 198649, y = 59192)
+p(x = 51496, y = 65500)
+p(x = 82945, y = 111300)
+p(x = 171692, y = 20860)
+p(x = 200621, y = 15328)
+p(x = 15328, y = 15328)
+p(x = 128581, y = 22028)
+p(x = 79628, y = 56472)
+p(x = 194725, y = 203584)
+p(x = 41748, y = 129640)
+p(x = 48065, y = 94128)
+p(x = 52296, y = 149924)
+p(x = 31437, y = 202032)
+p(x = 90588, y = 18240)
+p(x = 79149, y = 105284)
+p(x = 173912, y = 208440)
+p(x = 17497, y = 31824)
+p(x = 24248, y = 39008)
+p(x = 145845, y = 40752)
+p(x = 38768, y = 211060)
+p(x = 95641, y = 162924)
+p(x = 6812, y = 140804)
+p(x = 68049, y = 152736)
+p(x = 145832, y = 144976)
+p(x = 10569, y = 75788)
+p(x = 188112, y = 213872)
+p(x = 105341, y = 177192)
+p(x = 166920, y = 138084)
+p(x = 163533, y = 88496)
+p(x = 158544, y = 182240)
+p(x = 15221, y = 54920)
+p(x = 18092, y = 52692)
+p(x = 127657, y = 107904)
+p(x = 166240, y = 170108)
+p(x = 59021, y = 124208)
+p(x = 70236, y = 78792)
+p(x = 71697, y = 63172)
+p(x = 86317, y = 155365)
+p(x = 170508, y = 55413)
+p(x = 133637, y = 142073)
+p(x = 42380, y = 207281)
+p(x = 42097, y = 213005)
+p(x = 164036, y = 61821)
+p(x = 184521, y = 49397)
+p(x = 60656, y = 45709)
+p(x = 202145, y = 11457)
+p(x = 197740, y = 57549)
+p(x = 150005, y = 164101)
+p(x = 92032, y = 11649)
+p(x = 142013, y = 123049)
+p(x = 180496, y = 210869)
+p(x = 177593, y = 33777)
+p(x = 48104, y = 185061)
+p(x = 144277, y = 120429)
+p(x = 107648, y = 180889)
+p(x = 66513, y = 196217)
+p(x = 15624, y = 105585)
+p(x = 186809, y = 94713)
+p(x = 13164, y = 5149)
+p(x = 109437, y = 37949)
+p(x = 10412, y = 99569)
+p(x = 75437, y = 8837)
+p(x = 177092, y = 101313)
+p(x = 101313, y = 101313)
+p(x = 22472, y = 210193)
+p(x = 182693, y = 128581)
+p(x = 133256, y = 170601)
+p(x = 119097, y = 199421)
+p(x = 117504, y = 179045)
+p(x = 84421, y = 51241)
+p(x = 76520, y = 73077)
+p(x = 1709, y = 117617)
+p(x = 64356, y = 128873)
+p(x = 196725, y = 118877)
+p(x = 15996, y = 4373)
+p(x = 201641, y = 180789)
+p(x = 164144, y = 95881)
+p(x = 90985, y = 177977)
+p(x = 144896, y = 188065)
+p(x = 37969, y = 93937)
+p(x = 193576, y = 199713)
+p(x = 23861, y = 90933)
+p(x = 111740, y = 107037)
+p(x = 63905, y = 16405)
+p(x = 180120, y = 136833)
+p(x = 86093, y = 115581)
+p(x = 98476, y = 187581)
+p(x = 1153, y = 166137)
+p(x = 2664, y = 8253)
+p(x = 144737, y = 207473)
+p(x = 36400, y = 62981)
+p(x = 102393, y = 205245)
+p(x = 114192, y = 64049)
+p(x = 51029, y = 89089)
+p(x = 60893, y = 86136)
+p(x = 188848, y = 177160)
+p(x = 120153, y = 106320)
+p(x = 212461, y = 57508)
+p(x = 99660, y = 88948)
+p(x = 167597, y = 39360)
+p(x = 103900, y = 134656)
+p(x = 192505, y = 212964)
+p(x = 82324, y = 19276)
+p(x = 59909, y = 200448)
+p(x = 49780, y = 183660)
+p(x = 11457, y = 133104)
+p(x = 44761, y = 185796)
+p(x = 26764, y = 6660)
+p(x = 74033, y = 45668)
+p(x = 140752, y = 113404)
+p(x = 196365, y = 94288)
+p(x = 195648, y = 123784)
+p(x = 64937, y = 70608)
+p(x = 177948, y = 99912)
+p(x = 54233, y = 7436)
+p(x = 121929, y = 44317)
+p(x = 102872, y = 16757)
+p(x = 67553, y = 114965)
+p(x = 112709, y = 147081)
+p(x = 113344, y = 150769)
+p(x = 61629, y = 99729)
+p(x = 63048, y = 111953)
+p(x = 206573, y = 50433)
+p(x = 107164, y = 167173)
+p(x = 97565, y = 62273)
+p(x = 140804, y = 15305)
+p(x = 60945, y = 131653)
+p(x = 17201, y = 191913)
+p(x = 173492, y = 105161)
+p(x = 151373, y = 70425)
+p(x = 93984, y = 61205)
+p(x = 131541, y = 197545)
+p(x = 171384, y = 171637)
+p(x = 200209, y = 126805)
+p(x = 37628, y = 200749)
+p(x = 186593, y = 25685)
+p(x = 149005, y = 76108)
+p(x = 159152, y = 78920)
+p(x = 119469, y = 194300)
+p(x = 204601, y = 51360)
+p(x = 17664, y = 209728)
+p(x = 56973, y = 90760)
+p(x = 107004, y = 143644)
+p(x = 133113, y = 52428)
+p(x = 93388, y = 81540)
+p(x = 198385, y = 166356)
+p(x = 74036, y = 61456)
+p(x = 143233, y = 192456)
+p(x = 18753, y = 136952)
+p(x = 145832, y = 93572)
+p(x = 124881, y = 74940)
+p(x = 93592, y = 97360)
+p(x = 146877, y = 63200)
+p(x = 56104, y = 86296)
+p(x = 82793, y = 29724)
+p(x = 128168, y = 49616)
+p(x = 202605, y = 78144)
+p(x = 109897, y = 94457)
+p(x = 38240, y = 212357)
+p(x = 63673, y = 101149)
+p(x = 163392, y = 33513)
+p(x = 138653, y = 38561)
+p(x = 203436, y = 41373)
+p(x = 59844, y = 164905)
+p(x = 130009, y = 144529)
+p(x = 140156, y = 181109)
+p(x = 9476, y = 80481)
+p(x = 211425, y = 154425)
+p(x = 23804, y = 48165)
+p(x = 39633, y = 100765)
+p(x = 92476, y = 109785)
+p(x = 37949, y = 128125)
+p(x = 168401, y = 168401)
+p(x = 141868, y = 74273)
+p(x = 208445, y = 190137)
+p(x = 191808, y = 116093)
+p(x = 202973, y = 76893)
+p(x = 34476, y = 136669)
+p(x = 183633, y = 169077)
+p(x = 142832, y = 180917)
+p(x = 198253, y = 209545)
+p(x = 55948, y = 110469)
+p(x = 202101, y = 30601)
+p(x = 142284, y = 111921)
+p(x = 214001, y = 65053)
+p(x = 129536, y = 207117)
+p(x = 43277, y = 124729)
+p(x = 65748, y = 98629)
+p(x = 148921, y = 42149)
+p(x = 183424, y = 50401)
+p(x = 32825, y = 200517)
+p(x = 56364, y = 70777)
+p(x = 9405, y = 83685)
+p(x = 29356, y = 2657)
+p(x = 69149, y = 135501)
+p(x = 118404, y = 98821)
+p(x = 212760, y = 112989)
+p(x = 161721, y = 106973)
+p(x = 72308, y = 157237)
+p(x = 157613, y = 92321)
+p(x = 46556, y = 84945)
+p(x = 2509, y = 6637)
+p(x = 140853, y = 181460)
+p(x = 150516, y = 43660)
+p(x = 7393, y = 128960)
+p(x = 10264, y = 23092)
+p(x = 191637, y = 29592)
+p(x = 112604, y = 111204)
+p(x = 150868, y = 25904)
+p(x = 46653, y = 127216)
+p(x = 204980, y = 105672)
+p(x = 72940, y = 87524)
+p(x = 156497, y = 82768)
+p(x = 131132, y = 213576)
+p(x = 206345, y = 137696)
+p(x = 138084, y = 139540)
+p(x = 137609, y = 109260)
+p(x = 18861, y = 131772)
+p(x = 131772, y = 131772)
+p(x = 5245, y = 38036)
+p(x = 153476, y = 122844)
+p(x = 39657, y = 196596)
+p(x = 162856, y = 46672)
+p(x = 106001, y = 195336)
+p(x = 26676, y = 21732)
+p(x = 116833, y = 84712)
+p(x = 135424, y = 65204)
+p(x = 100013, y = 19696)
+p(x = 131120, y = 113048)
+p(x = 61649, y = 7080)
+p(x = 95768, y = 49000)
+p(x = 40173, y = 52396)
+p(x = 152792, y = 191548)
+p(x = 105933, y = 20180)
+p(x = 36412, y = 88884)
+p(x = 168781, y = 123720)
+p(x = 120704, y = 111880)
+p(x = 42305, y = 8340)
+p(x = 38184, y = 185924)
+p(x = 104761, y = 86556)
+p(x = 47564, y = 26196)
+p(x = 14508, y = 49484)
+p(x = 130865, y = 118288)
+p(x = 212528, y = 18920)
+p(x = 8073, y = 37744)
+p(x = 155336, y = 76076)
+p(x = 171941, y = 174084)
+p(x = 19749, y = 112857)
+p(x = 65124, y = 114509)
+p(x = 94045, y = 58713)
+p(x = 27728, y = 139349)
+p(x = 20845, y = 34841)
+p(x = 126872, y = 27949)
+p(x = 104192, y = 46873)
+p(x = 75473, y = 214069)
+p(x = 68832, y = 116837)
+p(x = 89828, y = 102085)
+p(x = 43061, y = 20189)
+p(x = 181204, y = 76953)
+p(x = 3437, y = 115285)
+p(x = 143616, y = 118097)
+p(x = 118877, y = 172633)
+p(x = 57485, y = 57161)
+p(x = 181460, y = 140417)
+p(x = 140417, y = 140417)
+p(x = 180552, y = 110045)
+p(x = 35585, y = 6989)
+p(x = 128020, y = 18345)
+p(x = 168981, y = 85205)
+p(x = 214156, y = 2333)
+p(x = 95873, y = 155461)
+p(x = 18492, y = 187577)
+p(x = 184145, y = 84329)
+p(x = 177020, y = 167009)
+p(x = 121909, y = 91605)
+p(x = 157972, y = 54249)
+p(x = 96261, y = 5729)
+p(x = 168804, y = 168753)
+p(x = 97005, y = 18729)
+p(x = 103656, y = 193985)
+p(x = 104925, y = 16693)
+p(x = 69464, y = 78797)
+p(x = 157585, y = 100633)
+p(x = 156768, y = 113925)
+p(x = 44209, y = 199417)
+p(x = 104044, y = 36293)
+p(x = 165500, y = 88017)
+p(x = 158717, y = 78121)
+p(x = 160128, y = 17569)
+p(x = 65521, y = 193109)
+p(x = 83820, y = 146141)
+p(x = 42393, y = 13881)
+p(x = 141629, y = 198700)
+p(x = 209708, y = 15000)
+p(x = 33885, y = 41492)
+p(x = 137676, y = 59932)
+p(x = 109733, y = 175020)
+p(x = 28472, y = 142220)
+p(x = 12761, y = 4136)
+p(x = 154784, y = 203356)
+p(x = 111805, y = 203648)
+p(x = 36460, y = 71964)
+p(x = 100609, y = 173952)
+p(x = 92032, y = 69152)
+p(x = 68649, y = 28008)
+p(x = 200000, y = 129704)
+p(x = 203013, y = 22768)
+p(x = 200544, y = 200544)
+p(x = 72749, y = 186860)
+p(x = 75812, y = 18788)
+p(x = 28853, y = 50228)
+p(x = 149532, y = 207044)
+p(x = 84033, y = 39748)
+p(x = 17816, y = 117672)
+p(x = 187641, y = 94476)
+p(x = 18652, y = 83612)
+p(x = 77469, y = 170848)
+p(x = 199116, y = 177832)
+p(x = 93057, y = 189772)
+p(x = 70504, y = 165024)
+p(x = 47317, y = 98456)
+p(x = 86868, y = 50520)
+p(x = 208976, y = 101076)
+p(x = 75457, y = 148628)
+p(x = 6712, y = 144164)
+p(x = 85609, y = 180552)
+p(x = 45492, y = 182688)
+p(x = 62581, y = 107384)
+p(x = 104629, y = 107868)
+p(x = 167660, y = 151248)
+p(x = 42293, y = 204232)
+p(x = 57981, y = 125733)
+p(x = 117716, y = 213745)
+p(x = 154989, y = 143297)
+p(x = 111184, y = 196181)
+p(x = 153113, y = 94485)
+p(x = 197128, y = 55477)
+p(x = 34397, y = 120685)
+p(x = 97144, y = 38297)
+p(x = 23301, y = 210933)
+p(x = 64504, y = 191425)
+p(x = 208229, y = 170465)
+p(x = 189748, y = 176773)
+p(x = 155209, y = 39657)
+p(x = 54440, y = 11905)
+p(x = 123345, y = 66149)
+p(x = 203356, y = 97297)
+p(x = 97297, y = 97297)
+p(x = 98324, y = 102829)
+p(x = 117741, y = 85657)
+p(x = 23764, y = 101669)
+p(x = 136241, y = 144657)
+p(x = 6268, y = 80801)
+p(x = 185213, y = 82645)
+p(x = 28748, y = 185801)
+p(x = 168393, y = 178909)
+p(x = 20656, y = 205985)
+p(x = 56569, y = 133009)
+p(x = 204808, y = 183957)
+p(x = 185117, y = 125925)
+p(x = 199144, y = 121945)
+p(x = 193448, y = 148437)
+p(x = 199765, y = 82353)
+p(x = 168476, y = 202973)
+p(x = 71249, y = 72749)
+p(x = 105560, y = 132525)
+p(x = 190285, y = 114961)
+p(x = 36217, y = 65373)
+p(x = 131564, y = 47033)
+p(x = 94209, y = 26557)
+p(x = 61377, y = 160720)
+p(x = 212236, y = 101236)
+p(x = 81821, y = 77756)
+p(x = 178044, y = 188380)
+p(x = 100129, y = 171884)
+p(x = 95916, y = 2936)
+p(x = 183645, y = 97064)
+p(x = 24752, y = 109872)
+p(x = 194093, y = 126368)
+p(x = 112832, y = 107060)
+p(x = 136129, y = 17204)
+p(x = 102896, y = 30396)
+p(x = 95141, y = 131608)
+p(x = 82192, y = 186536)
+p(x = 202529, y = 128020)
+p(x = 91664, y = 12740)
+p(x = 191425, y = 84064)
+p(x = 84064, y = 84064)
+p(x = 61945, y = 139468)
+p(x = 182716, y = 201480)
+p(x = 13877, y = 115888)
+p(x = 38484, y = 84840)
+p(x = 134465, y = 80376)
+p(x = 122100, y = 124916)
+p(x = 44961, y = 125208)
+p(x = 25804, y = 180128)
+p(x = 162053, y = 19824)
+p(x = 169288, y = 163148)
+p(x = 201997, y = 42044)
+p(x = 11372, y = 70572)
+p(x = 5676, y = 162856)
+p(x = 92829, y = 1092)
+p(x = 75416, y = 75036)
+p(x = 95897, y = 174504)
+p(x = 6192, y = 68728)
+p(x = 41713, y = 208272)
+p(x = 112005, y = 99492)
+p(x = 45004, y = 142380)
+p(x = 29001, y = 131416)
+p(x = 71181, y = 83681)
+p(x = 20776, y = 186445)
+p(x = 100745, y = 145885)
+p(x = 140000, y = 65925)
+p(x = 206577, y = 51173)
+p(x = 193144, y = 197217)
+p(x = 62756, y = 168689)
+p(x = 9389, y = 54569)
+p(x = 120656, y = 25265)
+p(x = 81165, y = 186545)
+p(x = 30760, y = 183633)
+p(x = 117329, y = 30697)
+p(x = 198800, y = 206821)
+p(x = 76345, y = 50105)
+p(x = 96488, y = 73977)
+p(x = 45649, y = 7017)
+p(x = 9704, y = 198869)
+p(x = 75989, y = 136665)
+p(x = 6660, y = 97657)
+p(x = 26461, y = 122981)
+p(x = 134716, y = 28853)
+p(x = 207044, y = 6925)
+p(x = 197249, y = 163157)
+p(x = 18364, y = 172377)
+p(x = 172377, y = 172377)
+p(x = 89848, y = 56897)
+p(x = 118777, y = 69221)
+p(x = 119097, y = 198285)
+p(x = 117504, y = 101053)
+p(x = 149245, y = 11389)
+p(x = 76520, y = 211869)
+p(x = 1709, y = 2845)
+p(x = 186236, y = 200029)
+p(x = 64096, y = 96489)
+p(x = 94085, y = 148505)
+p(x = 208064, y = 14685)
+p(x = 146453, y = 195181)
+p(x = 76156, y = 118517)
+p(x = 62581, y = 168981)
+p(x = 162392, y = 68637)
+p(x = 75841, y = 42537)
+p(x = 197780, y = 124533)
+p(x = 107441, y = 180621)
+p(x = 95660, y = 174997)
+p(x = 144573, y = 204493)
+p(x = 14025, y = 110716)
+p(x = 184384, y = 211344)
+p(x = 12049, y = 182816)
+p(x = 75176, y = 169908)
+p(x = 88769, y = 197368)
+p(x = 57872, y = 152052)
+p(x = 103900, y = 181748)
+p(x = 5509, y = 211928)
+p(x = 152772, y = 26676)
+p(x = 168309, y = 181164)
+p(x = 182336, y = 4748)
+p(x = 55417, y = 88588)
+p(x = 140092, y = 81604)
+p(x = 203857, y = 185436)
+p(x = 86784, y = 184852)
+p(x = 59909, y = 65008)
+p(x = 49780, y = 170876)
+p(x = 164101, y = 175732)
+p(x = 205880, y = 190384)
+p(x = 108073, y = 88688)
+p(x = 138020, y = 204068)
+p(x = 30044, y = 181356)
+p(x = 75661, y = 36088)
+p(x = 161404, y = 123424)
+p(x = 197217, y = 98876)
+p(x = 98876, y = 98876)
+p(x = 40077, y = 114112)
+p(x = 46997, y = 172720)
+p(x = 141276, y = 67044)
+p(x = 71221, y = 15812)
+p(x = 195780, y = 91500)
+p(x = 33441, y = 169324)
+p(x = 88812, y = 142832)
+p(x = 170932, y = 149532)
+p(x = 87001, y = 166704)
+p(x = 179536, y = 37448)
+p(x = 121029, y = 144484)
+p(x = 202308, y = 76848)
+p(x = 118185, y = 177576)
+p(x = 120080, y = 128664)
+p(x = 157061, y = 105084)
+p(x = 110828, y = 84416)
+p(x = 85605, y = 32792)
+p(x = 39864, y = 64232)
+p(x = 144381, y = 46084)
+p(x = 83505, y = 138669)
+p(x = 162356, y = 99369)
+p(x = 67553, y = 102181)
+p(x = 72556, y = 180297)
+p(x = 22009, y = 119553)
+p(x = 13524, y = 121689)
+p(x = 195116, y = 42889)
+p(x = 41121, y = 175641)
+p(x = 193140, y = 189225)
+p(x = 21197, y = 74329)
+p(x = 163220, y = 126053)
+p(x = 214369, y = 137893)
+p(x = 47224, y = 203493)
+p(x = 191725, y = 73069)
+p(x = 136956, y = 95873)
+p(x = 169373, y = 75397)
+p(x = 64140, y = 75013)
+p(x = 192821, y = 98009)
+p(x = 84484, y = 72585)
+p(x = 68481, y = 213681)
+p(x = 113372, y = 63849)
+p(x = 16168, y = 151961)
+p(x = 170465, y = 43181)
+p(x = 80376, y = 100337)
+p(x = 21577, y = 34253)
+p(x = 170976, y = 61037)
+p(x = 61037, y = 61037)
+p(x = 51461, y = 66861)
+p(x = 163888, y = 150509)
+p(x = 166033, y = 16789)
+p(x = 145224, y = 56381)
+p(x = 199769, y = 60745)
+p(x = 119768, y = 34737)
+p(x = 146384, y = 210961)
+p(x = 75069, y = 136241)
+p(x = 174780, y = 148273)
+p(x = 35929, y = 164385)
+p(x = 169216, y = 87529)
+p(x = 45793, y = 29889)
+p(x = 27120, y = 43281)
+p(x = 152405, y = 174765)
+p(x = 179824, y = 33185)
+p(x = 19913, y = 111209)
+p(x = 78772, y = 128673)
+p(x = 156997, y = 124017)
+p(x = 156281, y = 26644)
+p(x = 94428, y = 115048)
+p(x = 96473, y = 64976)
+p(x = 128456, y = 23832)
+p(x = 208909, y = 150952)
+p(x = 190044, y = 47412)
+p(x = 125321, y = 76424)
+p(x = 34932, y = 82732)
+p(x = 10393, y = 23732)
+p(x = 211485, y = 211988)
+p(x = 175540, y = 159396)
+p(x = 73077, y = 88556)
+p(x = 55180, y = 214316)
+p(x = 102349, y = 200248)
+p(x = 213416, y = 64392)
+p(x = 132493, y = 41296)
+p(x = 114012, y = 63132)
+p(x = 175641, y = 126888)
+p(x = 126888, y = 126888)
+p(x = 130677, y = 41588)
+p(x = 197888, y = 70892)
+p(x = 106116, y = 213156)
+p(x = 190741, y = 111944)
+p(x = 110548, y = 140280)
+p(x = 126296, y = 35280)
+p(x = 179481, y = 4032)
+p(x = 59404, y = 185888)
+p(x = 150748, y = 141248)
+p(x = 52457, y = 169100)
+p(x = 45140, y = 194040)
+p(x = 59021, y = 91076)
+p(x = 194928, y = 174824)
+p(x = 9885, y = 170552)
+p(x = 72733, y = 137277)
+p(x = 173320, y = 100013)
+p(x = 50381, y = 211705)
+p(x = 196092, y = 168041)
+p(x = 209101, y = 24709)
+p(x = 28472, y = 103217)
+p(x = 165589, y = 67605)
+p(x = 17468, y = 111853)
+p(x = 43193, y = 132229)
+p(x = 110081, y = 87105)
+p(x = 209116, y = 173373)
+p(x = 21837, y = 210153)
+p(x = 15004, y = 110977)
+p(x = 80321, y = 184829)
+p(x = 168584, y = 56057)
+p(x = 28853, y = 125437)
+p(x = 161172, y = 35289)
+p(x = 142649, y = 118061)
+p(x = 17816, y = 187641)
+p(x = 187641, y = 187641)
+p(x = 174400, y = 182693)
+p(x = 70504, y = 149893)
+p(x = 47317, y = 132521)
+p(x = 86868, y = 205689)
+p(x = 161332, y = 89533)
+p(x = 75457, y = 79537)
+p(x = 6712, y = 208893)
+p(x = 123580, y = 94097)
+p(x = 94085, y = 176385)
+p(x = 153528, y = 155809)
+p(x = 175077, y = 198313)
+p(x = 167660, y = 67021)
+p(x = 58789, y = 87205)
+p(x = 57981, y = 108608)
+p(x = 117716, y = 10500)
+p(x = 154989, y = 29132)
+p(x = 60236, y = 89592)
+p(x = 153113, y = 166640)
+p(x = 197128, y = 119964)
+p(x = 182861, y = 13028)
+p(x = 118096, y = 199924)
+p(x = 2725, y = 91144)
+p(x = 59909, y = 24284)
+p(x = 136048, y = 94732)
+p(x = 37557, y = 166832)
+p(x = 205880, y = 69792)
+p(x = 108073, y = 81732)
+p(x = 138020, y = 43400)
+p(x = 24681, y = 150528)
+p(x = 114112, y = 128500)
+p(x = 128673, y = 83476)
+p(x = 26644, y = 68724)
+p(x = 167649, y = 104244)
+p(x = 104244, y = 104244)
+p(x = 168904, y = 87356)
+p(x = 194429, y = 149268)
+p(x = 39224, y = 113072)
+p(x = 108348, y = 45436)
+p(x = 113789, y = 36992)
+p(x = 122092, y = 163244)
+p(x = 76420, y = 142284)
+p(x = 60509, y = 116468)
+p(x = 76964, y = 172948)
+p(x = 172265, y = 118604)
+p(x = 177948, y = 34180)
+p(x = 54233, y = 105796)
+p(x = 83505, y = 88141)
+p(x = 102872, y = 15457)
+p(x = 67553, y = 40397)
+p(x = 133696, y = 107257)
+p(x = 129533, y = 39621)
+p(x = 73888, y = 156845)
+p(x = 139689, y = 133557)
+p(x = 153232, y = 11577)
+p(x = 79389, y = 182369)
+p(x = 66832, y = 101633)
+p(x = 138941, y = 45253)
+p(x = 45448, y = 15073)
+p(x = 144825, y = 76401)
+p(x = 52892, y = 85329)
+p(x = 173129, y = 200901)
+p(x = 195116, y = 124437)
+p(x = 41121, y = 199349)
+p(x = 169660, y = 5853)
+p(x = 74081, y = 20697)
+p(x = 59580, y = 170045)
+p(x = 86957, y = 38069)
+p(x = 47808, y = 124529)
+p(x = 109337, y = 99981)
+p(x = 101436, y = 142193)
+p(x = 159669, y = 70869)
+p(x = 211060, y = 148209)
+p(x = 62981, y = 164997)
+p(x = 186664, y = 208761)
+p(x = 134657, y = 49909)
+p(x = 107056, y = 144713)
+p(x = 147525, y = 51269)
+p(x = 25312, y = 204005)
+p(x = 169713, y = 201193)
+p(x = 93984, y = 104253)
+p(x = 131541, y = 10317)
+p(x = 45816, y = 146849)
+p(x = 80173, y = 139089)
+p(x = 113124, y = 13129)
+p(x = 38413, y = 55049)
+p(x = 114361, y = 192708)
+p(x = 147704, y = 205424)
+p(x = 78325, y = 207944)
+p(x = 128456, y = 19980)
+p(x = 132245, y = 80340)
+p(x = 91352, y = 102852)
+p(x = 34105, y = 141276)
+p(x = 121692, y = 40164)
+p(x = 142369, y = 81600)
+p(x = 153976, y = 134584)
+p(x = 116913, y = 210756)
+p(x = 152000, y = 167868)
+p(x = 83981, y = 31528)
+p(x = 139352, y = 102268)
+p(x = 136449, y = 41524)
+p(x = 62656, y = 148944)
+p(x = 56357, y = 125556)
+p(x = 77084, y = 146424)
+p(x = 185289, y = 173300)
+p(x = 136728, y = 211632)
+p(x = 101609, y = 114884)
+p(x = 174928, y = 32596)
+p(x = 37821, y = 199116)
+p(x = 137632, y = 131572)
+p(x = 198385, y = 175436)
+p(x = 29304, y = 174468)
+p(x = 81905, y = 2124)
+p(x = 126888, y = 163988)
+p(x = 130677, y = 109644)
+p(x = 136360, y = 97804)
+p(x = 413, y = 26188)
+p(x = 178340, y = 136912)
+p(x = 212801, y = 38220)
+p(x = 174428, y = 169904)
+p(x = 40909, y = 201736)
+p(x = 186620, y = 44820)
+p(x = 59021, y = 111972)
+p(x = 194928, y = 129344)
+p(x = 139625, y = 47056)
+p(x = 16937, y = 136045)
+p(x = 116748, y = 75301)
+p(x = 132377, y = 124205)
+p(x = 172412, y = 36193)
+p(x = 42097, y = 125565)
+p(x = 38176, y = 116737)
+p(x = 184521, y = 198149)
+p(x = 60656, y = 16785)
+p(x = 202145, y = 101793)
+p(x = 130104, y = 147885)
+p(x = 126425, y = 80249)
+p(x = 133176, y = 166709)
+p(x = 125417, y = 107809)
+p(x = 74528, y = 33381)
+p(x = 19125, y = 41917)
+p(x = 35872, y = 199025)
+p(x = 152137, y = 56569)
+p(x = 184020, y = 51037)
+p(x = 80873, y = 154869)
+p(x = 97912, y = 48225)
+p(x = 196513, y = 104897)
+p(x = 100792, y = 77529)
+p(x = 151065, y = 49101)
+p(x = 7308, y = 71221)
+p(x = 130365, y = 162537)
+p(x = 187572, y = 187285)
+p(x = 20677, y = 207853)
+p(x = 76424, y = 145073)
+p(x = 104185, y = 156813)
+p(x = 133256, y = 93057)
+p(x = 171297, y = 152249)
+p(x = 101876, y = 84613)
+p(x = 133709, y = 166417)
+p(x = 123580, y = 202421)
+p(x = 131833, y = 130321)
+p(x = 77256, y = 31437)
+p(x = 75809, y = 31145)
+p(x = 167660, y = 122753)
+p(x = 42293, y = 40073)
+p(x = 57981, y = 106116)
+p(x = 117716, y = 6072)
+p(x = 154989, y = 182488)
+p(x = 59909, y = 165992)
+p(x = 136048, y = 125332)
+p(x = 37557, y = 38480)
+p(x = 205880, y = 151340)
+p(x = 27337, y = 77396)
+p(x = 138020, y = 85156)
+p(x = 30044, y = 58664)
+p(x = 178909, y = 170940)
+p(x = 161404, y = 70796)
+p(x = 58956, y = 58956)
+p(x = 194429, y = 195780)
+p(x = 56688, y = 135328)
+p(x = 202476, y = 17520)
+p(x = 82349, y = 2868)
+p(x = 209328, y = 129504)
+p(x = 46505, y = 211208)
+p(x = 116044, y = 23536)
+p(x = 151665, y = 139500)
+p(x = 167440, y = 194328)
+p(x = 124845, y = 76520)
+p(x = 188268, y = 192968)
+p(x = 185949, y = 155996)
+p(x = 54224, y = 126692)
+p(x = 1249, y = 146968)
+p(x = 127461, y = 167745)
+p(x = 21068, y = 178125)
+p(x = 76581, y = 13741)
+p(x = 177133, y = 122429)
+p(x = 75788, y = 172501)
+p(x = 178753, y = 138049)
+p(x = 141932, y = 88269)
+p(x = 13461, y = 214713)
+p(x = 101824, y = 123105)
+p(x = 62360, y = 2485)
+p(x = 23745, y = 73809)
+p(x = 163148, y = 201997)
+p(x = 203256, y = 211609)
+p(x = 211609, y = 211609)
+p(x = 50672, y = 197049)
+p(x = 76224, y = 105933)
+p(x = 131253, y = 95937)
+p(x = 47856, y = 123981)
+p(x = 41849, y = 5981)
+p(x = 145540, y = 163573)
+p(x = 175053, y = 127569)
+p(x = 27120, y = 134169)
+p(x = 152405, y = 68961)
+p(x = 67648, y = 185117)
+p(x = 76777, y = 44313)
+p(x = 78772, y = 18013)
+p(x = 156997, y = 8501)
+p(x = 156281, y = 93660)
+p(x = 153912, y = 183132)
+p(x = 78325, y = 134420)
+p(x = 83589, y = 203800)
+p(x = 29304, y = 148004)
+p(x = 81905, y = 86868)
+p(x = 38976, y = 28452)
+p(x = 16757, y = 154120)
+p(x = 154808, y = 142280)
+p(x = 33440, y = 88036)
+p(x = 142037, y = 160812)
+p(x = 30396, y = 57564)
+p(x = 75160, y = 30488)
+p(x = 116897, y = 52032)
+p(x = 52032, y = 52032)
+p(x = 1604, y = 36020)
+p(x = 128441, y = 209916)
+p(x = 47956, y = 54168)
+p(x = 6721, y = 103656)
+p(x = 81400, y = 118308)
+p(x = 10569, y = 20400)
+p(x = 3248, y = 52516)
+p(x = 34697, y = 66684)
+p(x = 105204, y = 107152)
+p(x = 10501, y = 147420)
+p(x = 196388, y = 15836)
+p(x = 205901, y = 211468)
+p(x = 151817, y = 130157)
+p(x = 155080, y = 92117)
+p(x = 70857, y = 177417)
+p(x = 65837, y = 141997)
+p(x = 63468, y = 90757)
+p(x = 91229, y = 78433)
+p(x = 9968, y = 145293)
+p(x = 198425, y = 209925)
+p(x = 166068, y = 154321)
+p(x = 160937, y = 181589)
+p(x = 33484, y = 168781)
+p(x = 164493, y = 133261)
+p(x = 91476, y = 99785)
+p(x = 130009, y = 150049)
+p(x = 140156, y = 73193)
+p(x = 183929, y = 150925)
+p(x = 25136, y = 33701)
+p(x = 96561, y = 12349)
+p(x = 113285, y = 166937)
+p(x = 173312, y = 179937)
+p(x = 105585, y = 182073)
+p(x = 171021, y = 2937)
+p(x = 18920, y = 30013)
+p(x = 10485, y = 48161)
+p(x = 57312, y = 152669)
+p(x = 148437, y = 140829)
+p(x = 34476, y = 168389)
+p(x = 23248, y = 206721)
+p(x = 205981, y = 130641)
+p(x = 163244, y = 114337)
+p(x = 117545, y = 8469)
+p(x = 102268, y = 49129)
+p(x = 80925, y = 36029)
+p(x = 40608, y = 9829)
+p(x = 92049, y = 198085)
+p(x = 2344, y = 121329)
+p(x = 188665, y = 132969)
+p(x = 23656, y = 185953)
+p(x = 159521, y = 138017)
+p(x = 76485, y = 152769)
+p(x = 63344, y = 21377)
+p(x = 82469, y = 124141)
+p(x = 52065, y = 203476)
+p(x = 185744, y = 151852)
+p(x = 93661, y = 171360)
+p(x = 191505, y = 167380)
+p(x = 39212, y = 172328)
+p(x = 75901, y = 24248)
+p(x = 214428, y = 119636)
+p(x = 82369, y = 46760)
+p(x = 187128, y = 190084)
+p(x = 203049, y = 10856)
+p(x = 166328, y = 64908)
+p(x = 121797, y = 107504)
+p(x = 1812, y = 152920)
+p(x = 6477, y = 93144)
+p(x = 41564, y = 16580)
+p(x = 21097, y = 174948)
+p(x = 119264, y = 57724)
+p(x = 200201, y = 37732)
+p(x = 68937, y = 201632)
+p(x = 75788, y = 204836)
+p(x = 11065, y = 69464)
+p(x = 18861, y = 145836)
+p(x = 131772, y = 116532)
+p(x = 5245, y = 107896)
+p(x = 172692, y = 81404)
+p(x = 39657, y = 43072)
+p(x = 204292, y = 73444)
+p(x = 174824, y = 90716)
+p(x = 137277, y = 2220)
+p(x = 91144, y = 83632)
+p(x = 27589, y = 186012)
+p(x = 95768, y = 157676)
+p(x = 40173, y = 179220)
+p(x = 52256, y = 568)
+p(x = 204809, y = 91884)
+p(x = 119176, y = 152144)
+p(x = 14093, y = 205904)
+p(x = 7552, y = 175140)
+p(x = 150401, y = 134388)
+p(x = 8073, y = 188340)
+p(x = 155336, y = 17648)
+p(x = 171941, y = 172620)
+p(x = 140369, y = 56957)
+p(x = 65124, y = 52009)
+p(x = 161681, y = 178161)
+p(x = 43425, y = 51617)
+p(x = 138288, y = 112561)
+p(x = 165273, y = 197761)
+p(x = 181144, y = 113337)
+p(x = 949, y = 141965)
+p(x = 208672, y = 189801)
+p(x = 121245, y = 52201)
+p(x = 111792, y = 59577)
+p(x = 124609, y = 9405)
+p(x = 165520, y = 76657)
+p(x = 45393, y = 142057)
+p(x = 99596, y = 168457)
+p(x = 51569, y = 117801)
+p(x = 39788, y = 19209)
+p(x = 111505, y = 1837)
+p(x = 94845, y = 79953)
+p(x = 81996, y = 145745)
+p(x = 117617, y = 184661)
+p(x = 205565, y = 60645)
+p(x = 126148, y = 4557)
+p(x = 209413, y = 158169)
+p(x = 23544, y = 107513)
+p(x = 190557, y = 173597)
+p(x = 131608, y = 15813)
+p(x = 29748, y = 213965)
+p(x = 29565, y = 162925)
+p(x = 136360, y = 119353)
+p(x = 124529, y = 145845)
+p(x = 54816, y = 10865)
+p(x = 122753, y = 64817)
+p(x = 32264, y = 198729)
+p(x = 36737, y = 171269)
+p(x = 54160, y = 3781)
+p(x = 77073, y = 121781)
+p(x = 85668, y = 201933)
+p(x = 116433, y = 95289)
+p(x = 175561, y = 198829)
+p(x = 194928, y = 189417)
+p(x = 139625, y = 18433)
+p(x = 21009, y = 42264)
+p(x = 100544, y = 14704)
+p(x = 167797, y = 206840)
+p(x = 72921, y = 191220)
+p(x = 60656, y = 54588)
+p(x = 111805, y = 129500)
+p(x = 101741, y = 62448)
+p(x = 105580, y = 33336)
+p(x = 152357, y = 85152)
+p(x = 75437, y = 175208)
+p(x = 177092, y = 50608)
+p(x = 21837, y = 136392)
+p(x = 99136, y = 91752)
+p(x = 80321, y = 138528)
+p(x = 209728, y = 108348)
+p(x = 169077, y = 208100)
+p(x = 108192, y = 65452)
+p(x = 34841, y = 49732)
+p(x = 161332, y = 161332)
+p(x = 150953, y = 208976)
+p(x = 6712, y = 182192)
+p(x = 85609, y = 139304)
+p(x = 45492, y = 180348)
+p(x = 164569, y = 46920)
+p(x = 165081, y = 67688)
+p(x = 30936, y = 70016)
+p(x = 161845, y = 100872)
+p(x = 138041, y = 148141)
+p(x = 117716, y = 158621)
+p(x = 154989, y = 105345)
+p(x = 207709, y = 131061)
+p(x = 106264, y = 186473)
+p(x = 81333, y = 126305)
+p(x = 199941, y = 137853)
+p(x = 111496, y = 117185)
+p(x = 145665, y = 16165)
+p(x = 18765, y = 161141)
+p(x = 61328, y = 140281)
+p(x = 16213, y = 119221)
+p(x = 29948, y = 87973)
+p(x = 361, y = 52653)
+p(x = 112788, y = 80989)
+p(x = 89601, y = 196077)
+p(x = 117512, y = 2581)
+p(x = 143329, y = 63617)
+p(x = 91752, y = 14321)
+p(x = 14321, y = 14321)
+p(x = 42616, y = 113789)
+p(x = 129765, y = 87297)
+p(x = 211428, y = 83801)
+p(x = 56273, y = 3841)
+p(x = 49217, y = 78269)
+p(x = 29092, y = 84869)
+p(x = 203089, y = 149693)
+p(x = 61377, y = 3900)
+p(x = 212236, y = 84928)
+p(x = 81821, y = 46112)
+p(x = 84277, y = 118696)
+p(x = 67640, y = 150720)
+p(x = 211173, y = 192156)
+p(x = 95141, y = 53872)
+p(x = 83260, y = 130244)
+p(x = 53089, y = 198948)
+p(x = 151517, y = 126848)
+p(x = 39008, y = 164404)
+p(x = 187581, y = 21072)
+p(x = 24708, y = 206516)
+p(x = 68481, y = 45044)
+p(x = 113372, y = 191672)
+p(x = 136277, y = 191864)
+p(x = 105672, y = 73864)
+p(x = 18729, y = 87256)
+p(x = 112712, y = 75416)
+p(x = 38585, y = 189052)
+p(x = 189052, y = 189052)
+p(x = 191577, y = 47856)
+p(x = 42680, y = 124228)
+p(x = 203285, y = 138880)
+p(x = 149069, y = 155376)
+p(x = 60240, y = 131312)
+p(x = 23761, y = 47564)
+p(x = 193253, y = 112881)
+p(x = 20776, y = 150629)
+p(x = 35729, y = 85805)
+p(x = 202569, y = 69701)
+p(x = 167884, y = 29041)
+p(x = 62117, y = 18169)
+p(x = 168209, y = 124237)
+p(x = 192524, y = 204197)
+p(x = 198649, y = 46505)
+p(x = 177717, y = 4877)
+p(x = 20860, y = 140149)
+p(x = 54737, y = 84837)
+p(x = 44700, y = 53397)
+p(x = 174257, y = 214577)
+p(x = 90568, y = 185273)
+p(x = 2657, y = 169453)
+p(x = 38712, y = 140633)
+p(x = 32997, y = 127049)
+p(x = 50520, y = 68341)
+p(x = 28985, y = 60673)
+p(x = 2936, y = 212349)
+p(x = 211869, y = 202545)
+p(x = 87520, y = 171297)
+p(x = 97525, y = 190321)
+p(x = 64392, y = 72513)
+p(x = 172989, y = 177705)
+p(x = 110936, y = 62225)
+p(x = 90569, y = 48057)
+p(x = 207360, y = 181777)
+p(x = 130321, y = 105605)
+p(x = 176472, y = 24093)
+p(x = 2777, y = 37969)
+p(x = 9528, y = 65237)
+p(x = 30593, y = 30593)
+p(x = 187076, y = 117637)
+p(x = 46281, y = 188669)
+p(x = 162565, y = 120449)
+p(x = 142240, y = 6721)
+p(x = 128081, y = 159657)
+p(x = 206348, y = 177121)
+p(x = 54589, y = 116469)
+p(x = 25728, y = 27197)
+p(x = 10985, y = 67465)
+p(x = 5512, y = 83093)
+p(x = 122353, y = 2549)
+p(x = 191801, y = 204540)
+p(x = 194380, y = 198332)
+p(x = 140337, y = 173392)
+p(x = 28481, y = 134384)
+p(x = 61916, y = 181736)
+p(x = 146349, y = 22108)
+p(x = 191889, y = 173492)
+p(x = 148568, y = 172716)
+p(x = 97045, y = 174652)
+p(x = 182665, y = 91104)
+p(x = 190776, y = 122252)
+p(x = 185061, y = 57720)
+p(x = 186088, y = 34240)
+p(x = 52177, y = 190764)
+p(x = 46704, y = 213860)
+p(x = 128125, y = 80524)
+p(x = 6596, y = 10660)
+p(x = 107233, y = 172032)
+p(x = 66240, y = 154376)
+p(x = 202973, y = 117596)
+p(x = 22828, y = 104688)
+p(x = 183633, y = 135160)
+p(x = 142832, y = 202796)
+p(x = 198253, y = 23952)
+p(x = 94280, y = 134968)
+p(x = 202101, y = 39380)
+p(x = 160140, y = 91588)
+p(x = 141901, y = 116528)
+p(x = 125556, y = 31812)
+p(x = 172241, y = 149036)
+p(x = 129504, y = 130888)
+p(x = 181037, y = 164464)
+p(x = 174788, y = 25212)
+p(x = 202737, y = 140208)
+p(x = 140208, y = 140208)
+p(x = 91497, y = 207552)
+p(x = 52325, y = 31228)
+p(x = 33944, y = 48600)
+p(x = 122065, y = 152432)
+p(x = 173456, y = 99448)
+p(x = 107573, y = 123128)
+p(x = 119372, y = 110704)
+p(x = 157613, y = 101584)
+p(x = 126032, y = 19972)
+p(x = 161461, y = 199884)
+p(x = 115621, y = 127693)
+p(x = 142756, y = 139825)
+p(x = 70565, y = 116145)
+p(x = 203829, y = 133325)
+p(x = 141100, y = 46281)
+p(x = 113, y = 92181)
+p(x = 28181, y = 72773)
+p(x = 86172, y = 32789)
+p(x = 7481, y = 141185)
+p(x = 87277, y = 117989)
+p(x = 63172, y = 189705)
+p(x = 8353, y = 54433)
+p(x = 134656, y = 200961)
+p(x = 59261, y = 35701)
+p(x = 131128, y = 76845)
+p(x = 57677, y = 143997)
+p(x = 195336, y = 57245)
+p(x = 193501, y = 86941)
+p(x = 204424, y = 60057)
+p(x = 187937, y = 82961)
+p(x = 166060, y = 169521)
+p(x = 40693, y = 210665)
+p(x = 81604, y = 169713)
+p(x = 181365, y = 151373)
+p(x = 67788, y = 95577)
+p(x = 101373, y = 64521)
+p(x = 103760, y = 124105)
+p(x = 10317, y = 42009)
+p(x = 162628, y = 65689)
+p(x = 81317, y = 44629)
+p(x = 212860, y = 57537)
+p(x = 87977, y = 194169)
+p(x = 129956, y = 51905)
+p(x = 43209, y = 208045)
+p(x = 200368, y = 56469)
+p(x = 56469, y = 56469)
+p(x = 42913, y = 39581)
+p(x = 172420, y = 145549)
+p(x = 66269, y = 170973)
+p(x = 114164, y = 137013)
+p(x = 185881, y = 178157)
+p(x = 115876, y = 100425)
+p(x = 50285, y = 101593)
+p(x = 207352, y = 19789)
+p(x = 174461, y = 59381)
+p(x = 68853, y = 57104)
+p(x = 182832, y = 59340)
+p(x = 152077, y = 76420)
+p(x = 198297, y = 64288)
+p(x = 173900, y = 176172)
+p(x = 170897, y = 202372)
+p(x = 128717, y = 137940)
+p(x = 205624, y = 200920)
+p(x = 133341, y = 62344)
+p(x = 125025, y = 131732)
+p(x = 20184, y = 123580)
+p(x = 177977, y = 40416)
+p(x = 124533, y = 129112)
+p(x = 83448, y = 64964)
+p(x = 72585, y = 158224)
+p(x = 213156, y = 129788)
+p(x = 36549, y = 76128)
+p(x = 29132, y = 164432)
+p(x = 159753, y = 150748)
+p(x = 14836, y = 3736)
+p(x = 157585, y = 32264)
+p(x = 32848, y = 32848)
+p(x = 55269, y = 165500)
+p(x = 160128, y = 152884)
+p(x = 42617, y = 107276)
+p(x = 49276, y = 37796)
+p(x = 179409, y = 100484)
+p(x = 42361, y = 190541)
+p(x = 56388, y = 120577)
+p(x = 181381, y = 131541)
+p(x = 165013, y = 178901)
+p(x = 136152, y = 75069)
+p(x = 70561, y = 145517)
+p(x = 207609, y = 139985)
+p(x = 30760, y = 96029)
+p(x = 204273, y = 214221)
+p(x = 210709, y = 80209)
+p(x = 9704, y = 60509)
+p(x = 89473, y = 8109)
+p(x = 2845, y = 105925)
+p(x = 87520, y = 210341)
+p(x = 149733, y = 11213)
+p(x = 70800, y = 131833)
+p(x = 94097, y = 94085)
+p(x = 71636, y = 41877)
+p(x = 140929, y = 122905)
+p(x = 64908, y = 199177)
+p(x = 48513, y = 31013)
+p(x = 6356, y = 7525)
+p(x = 7525, y = 7525)
+p(x = 56104, y = 202673)
+p(x = 197397, y = 205485)
+p(x = 154660, y = 37805)
+p(x = 163497, y = 199469)
+p(x = 54101, y = 172160)
+p(x = 38240, y = 147904)
+p(x = 35437, y = 160128)
+p(x = 101357, y = 207580)
+p(x = 61916, y = 97832)
+p(x = 67457, y = 189048)
+p(x = 183929, y = 183224)
+p(x = 88792, y = 190116)
+p(x = 57845, y = 121120)
+p(x = 131233, y = 97732)
+p(x = 95288, y = 107144)
+p(x = 99569, y = 152268)
+p(x = 50105, y = 183808)
+p(x = 115080, y = 136064)
+p(x = 213973, y = 138976)
+p(x = 74972, y = 76964)
+p(x = 125437, y = 176916)
+p(x = 92112, y = 179536)
+p(x = 198085, y = 2344)
+p(x = 143316, y = 10396)
+p(x = 50549, y = 112776)
+p(x = 123580, y = 57656)
+p(x = 131833, y = 12632)
+p(x = 12632, y = 12632)
+p(x = 165081, y = 33300)
+p(x = 30936, y = 97440)
+p(x = 120701, y = 165468)
+p(x = 31489, y = 170325)
+p(x = 15828, y = 132869)
+p(x = 207973, y = 187597)
+p(x = 212949, y = 148881)
+p(x = 155560, y = 208657)
+p(x = 103261, y = 150433)
+p(x = 64504, y = 74061)
+p(x = 32297, y = 150725)
+p(x = 113668, y = 64941)
+p(x = 84273, y = 189249)
+p(x = 156140, y = 15645)
+p(x = 150133, y = 163533)
+p(x = 80512, y = 144417)
+p(x = 24333, y = 67753)
+p(x = 96784, y = 194005)
+p(x = 38661, y = 98709)
+p(x = 147016, y = 91433)
+p(x = 198549, y = 115113)
+p(x = 63405, y = 34861)
+p(x = 120328, y = 65817)
+p(x = 142073, y = 126753)
+p(x = 32856, y = 187213)
+p(x = 162121, y = 9145)
+p(x = 166060, y = 66593)
+p(x = 80869, y = 131993)
+p(x = 81604, y = 95897)
+p(x = 181365, y = 214089)
+p(x = 146849, y = 113361)
+p(x = 138564, y = 3613)
+p(x = 80249, y = 68437)
+p(x = 151340, y = 35637)
+p(x = 191617, y = 211277)
+p(x = 37864, y = 35929)
+p(x = 183433, y = 49705)
+p(x = 19392, y = 181973)
+p(x = 146329, y = 76197)
+p(x = 86320, y = 16421)
+p(x = 108449, y = 13993)
+p(x = 115200, y = 79885)
+p(x = 112297, y = 14093)
+p(x = 80524, y = 3805)
+p(x = 35217, y = 42913)
+p(x = 30105, y = 30105)
+p(x = 122832, y = 178669)
+p(x = 209693, y = 6133)
+p(x = 172749, y = 108121)
+p(x = 143404, y = 205161)
+p(x = 174461, y = 179353)
+p(x = 68853, y = 71984)
+p(x = 210876, y = 86928)
+p(x = 118985, y = 137484)
+p(x = 63901, y = 60436)
+p(x = 15532, y = 211428)
+p(x = 170897, y = 145052)
+p(x = 150964, y = 48988)
+p(x = 3085, y = 166112)
+p(x = 196832, y = 50924)
+p(x = 104457, y = 173196)
+p(x = 176324, y = 33944)
+p(x = 108597, y = 23656)
+p(x = 87888, y = 198620)
+p(x = 105945, y = 210360)
+p(x = 1780, y = 143792)
+p(x = 44777, y = 195416)
+p(x = 178648, y = 157476)
+p(x = 51053, y = 2212)
+p(x = 32641, y = 126812)
+p(x = 198444, y = 104492)
+p(x = 93937, y = 45492)
+p(x = 107868, y = 207548)
+p(x = 58873, y = 22204)
+p(x = 151308, y = 84500)
+p(x = 1393, y = 127588)
+p(x = 110716, y = 193964)
+p(x = 78409, y = 51508)
+p(x = 179649, y = 180764)
+p(x = 136912, y = 69172)
+p(x = 25421, y = 205120)
+p(x = 179576, y = 16864)
+p(x = 214713, y = 22104)
+p(x = 184976, y = 157376)
+p(x = 17589, y = 48696)
+p(x = 67720, y = 167472)
+p(x = 171269, y = 124776)
+p(x = 67204, y = 40736)
+p(x = 131837, y = 85668)
+p(x = 95016, y = 26084)
+p(x = 200801, y = 107304)
+p(x = 107600, y = 130984)
+p(x = 117989, y = 19000)
+p(x = 203901, y = 122156)
+p(x = 122156, y = 122156)
+p(x = 212313, y = 141464)
+p(x = 42617, y = 93720)
+p(x = 201628, y = 209876)
+p(x = 93825, y = 92652)
+p(x = 42361, y = 41713)
+p(x = 1268, y = 203285)
+p(x = 181381, y = 167381)
+p(x = 62833, y = 17457)
+p(x = 18344, y = 10273)
+p(x = 93949, y = 45793)
+p(x = 68968, y = 89749)
+p(x = 53257, y = 208525)
+p(x = 213912, y = 36765)
+p(x = 16345, y = 56949)
+p(x = 200872, y = 138461)
+p(x = 157893, y = 63257)
+p(x = 77700, y = 71993)
+p(x = 117785, y = 66269)
+p(x = 120656, y = 204937)
+p(x = 207609, y = 61897)
+p(x = 30760, y = 209693)
+p(x = 34165, y = 179705)
+p(x = 45649, y = 183201)
+p(x = 10964, y = 68205)
+p(x = 134597, y = 190285)
+p(x = 83612, y = 19301)
+p(x = 47033, y = 48797)
+p(x = 67276, y = 197853)
+p(x = 123465, y = 91693)
+p(x = 64232, y = 191545)
+p(x = 54145, y = 113621)
+p(x = 73681, y = 122065)
+p(x = 90136, y = 19493)
+p(x = 154777, y = 174173)
+p(x = 24412, y = 41621)
+p(x = 178125, y = 124585)
+p(x = 42328, y = 79853)
+p(x = 152769, y = 29681)
+p(x = 15996, y = 15029)
+p(x = 3973, y = 24833)
+p(x = 14412, y = 162333)
+p(x = 64493, y = 207165)
+p(x = 207876, y = 116241)
+p(x = 181777, y = 54137)
+p(x = 86932, y = 130893)
+p(x = 167677, y = 186597)
+p(x = 109289, y = 164569)
+p(x = 76156, y = 62581)
+p(x = 62581, y = 62581)
+p(x = 165081, y = 5617)
+p(x = 211040, y = 75097)
+p(x = 127493, y = 4841)
+p(x = 138041, y = 162292)
+p(x = 117716, y = 81264)
+p(x = 154989, y = 12468)
+p(x = 181213, y = 175392)
+p(x = 123140, y = 128624)
+p(x = 207281, y = 148124)
+p(x = 89601, y = 75832)
+p(x = 88884, y = 63024)
+p(x = 42601, y = 101356)
+p(x = 110296, y = 116784)
+p(x = 102829, y = 11400)
+p(x = 99492, y = 116976)
+p(x = 148113, y = 176268)
+p(x = 88688, y = 196744)
+p(x = 82873, y = 53612)
+p(x = 189284, y = 7228)
+p(x = 59453, y = 27120)
+p(x = 162952, y = 168992)
+p(x = 100753, y = 114164)
+p(x = 188340, y = 137644)
+p(x = 119645, y = 93104)
+p(x = 203321, y = 135900)
+p(x = 202796, y = 59236)
+p(x = 71121, y = 67196)
+p(x = 49217, y = 205572)
+p(x = 29092, y = 120080)
+p(x = 203089, y = 14212)
+p(x = 61377, y = 11501)
+p(x = 106268, y = 208301)
+p(x = 44365, y = 136685)
+p(x = 171509, y = 31785)
+p(x = 64140, y = 9949)
+p(x = 166137, y = 122809)
+p(x = 152581, y = 137461)
+p(x = 184272, y = 189861)
+p(x = 193985, y = 54589)
+p(x = 150372, y = 152989)
+p(x = 147177, y = 117469)
+p(x = 201480, y = 5877)
+p(x = 30889, y = 208201)
+p(x = 169908, y = 187049)
+p(x = 100337, y = 81081)
+p(x = 158520, y = 34697)
+p(x = 9089, y = 46437)
+p(x = 107056, y = 127657)
+p(x = 157909, y = 8497)
+p(x = 90716, y = 90785)
+p(x = 11057, y = 16257)
+p(x = 156353, y = 92921)
+p(x = 96636, y = 154149)
+p(x = 169713, y = 11017)
+p(x = 43785, y = 140273)
+p(x = 33164, y = 35181)
+p(x = 183489, y = 180741)
+p(x = 214121, y = 123928)
+p(x = 68904, y = 179824)
+p(x = 164985, y = 108792)
+p(x = 160253, y = 165172)
+p(x = 189032, y = 18936)
+p(x = 128581, y = 139748)
+p(x = 135501, y = 203796)
+p(x = 34348, y = 92196)
+p(x = 126349, y = 103360)
+p(x = 122136, y = 23884)
+p(x = 205401, y = 188268)
+p(x = 126368, y = 147608)
+p(x = 200029, y = 9524)
+p(x = 87520, y = 38828)
+p(x = 73845, y = 110344)
+p(x = 64876, y = 137320)
+p(x = 187449, y = 119372)
+p(x = 33596, y = 180892)
+p(x = 159461, y = 4376)
+p(x = 172328, y = 47656)
+p(x = 119353, y = 44552)
+p(x = 188669, y = 72012)
+p(x = 35308, y = 36400)
+p(x = 49869, y = 48240)
+p(x = 10885, y = 55032)
+p(x = 128168, y = 188752)
+p(x = 202605, y = 118012)
+p(x = 109897, y = 63485)
+p(x = 80068, y = 103853)
+p(x = 81629, y = 9141)
+p(x = 163392, y = 59021)
+p(x = 120505, y = 53197)
+p(x = 203436, y = 212149)
+p(x = 28481, y = 17877)
+p(x = 61916, y = 117921)
+p(x = 146349, y = 54457)
+p(x = 71488, y = 167025)
+p(x = 8617, y = 65521)
+p(x = 54960, y = 131121)
+p(x = 81653, y = 189729)
+p(x = 180596, y = 169937)
+p(x = 148773, y = 132573)
+p(x = 192688, y = 203121)
+p(x = 207933, y = 32529)
+p(x = 140740, y = 9725)
+p(x = 1689, y = 69109)
+p(x = 27464, y = 88617)
+p(x = 22133, y = 201569)
+p(x = 133976, y = 197981)
+p(x = 78965, y = 145773)
+p(x = 139576, y = 116953)
+p(x = 182665, y = 200209)
+p(x = 190776, y = 43785)
+p(x = 196217, y = 176245)
+p(x = 141640, y = 80173)
+p(x = 206081, y = 19913)
+p(x = 182460, y = 24377)
+p(x = 142293, y = 143445)
+p(x = 150404, y = 188469)
+p(x = 107233, y = 8073)
+p(x = 199184, y = 5261)
+p(x = 123113, y = 213409)
+p(x = 179352, y = 37377)
+p(x = 183633, y = 172749)
+p(x = 142832, y = 67849)
+p(x = 198253, y = 152565)
+p(x = 94280, y = 73965)
+p(x = 202101, y = 61057)
+p(x = 116468, y = 77361)
+p(x = 17885, y = 47181)
+p(x = 173300, y = 122093)
+p(x = 201837, y = 36217)
+p(x = 65748, y = 49217)
+p(x = 84097, y = 17293)
+p(x = 183424, y = 196329)
+p(x = 33217, y = 64937)
+p(x = 159036, y = 172265)
+p(x = 142057, y = 3317)
+p(x = 29356, y = 91529)
+p(x = 15681, y = 147225)
+p(x = 153824, y = 157997)
+p(x = 127049, y = 176629)
+p(x = 107016, y = 185949)
+p(x = 159817, y = 213893)
+p(x = 150072, y = 38837)
+p(x = 133193, y = 135485)
+p(x = 67944, y = 76485)
+p(x = 158485, y = 66297)
+p(x = 52384, y = 35341)
+p(x = 24833, y = 2641)
+p(x = 15280, y = 157613)
+p(x = 163953, y = 115109)
+p(x = 43968, y = 141601)
+p(x = 141601, y = 141601)
+p(x = 126032, y = 150429)
+p(x = 57045, y = 137913)
+p(x = 4029, y = 87024)
+p(x = 150516, y = 204148)
+p(x = 7393, y = 177656)
+p(x = 198520, y = 72080)
+p(x = 156701, y = 73148)
+p(x = 194892, y = 30544)
+p(x = 191505, y = 119916)
+p(x = 39212, y = 30936)
+p(x = 184681, y = 211040)
+p(x = 214428, y = 187360)
+p(x = 126517, y = 68876)
+p(x = 202072, y = 167660)
+p(x = 203049, y = 165624)
+p(x = 154488, y = 95660)
+p(x = 123641, y = 192600)
+p(x = 150868, y = 57328)
+p(x = 6477, y = 45588)
+p(x = 41564, y = 164848)
+p(x = 21097, y = 114192)
+p(x = 2424, y = 42192)
+p(x = 154785, y = 154368)
+p(x = 72940, y = 176688)
+p(x = 156497, y = 30352)
+p(x = 87076, y = 196480)
+p(x = 80777, y = 5512)
+p(x = 213872, y = 1048)
+p(x = 98693, y = 125064)
+p(x = 147756, y = 128168)
+p(x = 66929, y = 154660)
+p(x = 201576, y = 196388)
+p(x = 212357, y = 75184)
+p(x = 196596, y = 194928)
+p(x = 105289, y = 55584)
+p(x = 131064, y = 163296)
+p(x = 87401, y = 158248)
+p(x = 67760, y = 83820)
+p(x = 78249, y = 13756)
+p(x = 81604, y = 16184)
+p(x = 181365, y = 60532)
+p(x = 67788, y = 40248)
+p(x = 88565, y = 169312)
+p(x = 186240, y = 68684)
+p(x = 134525, y = 60240)
+p(x = 178540, y = 66064)
+p(x = 166709, y = 45004)
+p(x = 77396, y = 37628)
+p(x = 154545, y = 172708)
+p(x = 37864, y = 157472)
+p(x = 183433, y = 52088)
+p(x = 19392, y = 191340)
+p(x = 146329, y = 104196)
+p(x = 62448, y = 27540)
+p(x = 22281, y = 22200)
+p(x = 157028, y = 33748)
+p(x = 71153, y = 113124)
+p(x = 55684, y = 78772)
+p(x = 35217, y = 130980)
+p(x = 108244, y = 25012)
+p(x = 67401, y = 155336)
+p(x = 308, y = 89544)
+p(x = 6133, y = 14924)
+p(x = 183868, y = 207352)
+p(x = 42297, y = 60140)
+p(x = 155600, y = 143404)
+p(x = 51093, y = 43744)
+p(x = 173616, y = 124480)
+p(x = 61057, y = 10068)
+p(x = 10068, y = 10068)
+p(x = 65681, y = 111864)
+p(x = 196457, y = 212209)
+p(x = 143240, y = 136813)
+p(x = 180997, y = 146809)
+p(x = 148348, y = 12989)
+p(x = 202309, y = 36669)
+p(x = 7412, y = 108477)
+p(x = 15573, y = 26573)
+p(x = 65120, y = 54233)
+p(x = 129561, y = 144381)
+p(x = 102836, y = 156413)
+p(x = 6481, y = 1249)
+p(x = 129196, y = 130505)
+p(x = 130173, y = 106149)
+p(x = 156816, y = 82469)
+p(x = 87445, y = 168929)
+p(x = 74496, y = 16385)
+p(x = 174165, y = 201345)
+p(x = 130844, y = 2509)
+p(x = 95141, y = 161461)
+p(x = 203880, y = 181)
+p(x = 53089, y = 106049)
+p(x = 13356, y = 74125)
+p(x = 178817, y = 153601)
+p(x = 36420, y = 19005)
+p(x = 48461, y = 94309)
+p(x = 0, y = 161845)
+p(x = 115581, y = 160685)
+p(x = 24708, y = 151173)
+p(x = 144561, y = 58789)
+p(x = 117060, y = 144573)
+p(x = 96009, y = 86641)
+p(x = 70928, y = 204641)
+p(x = 5729, y = 200177)
+p(x = 127760, y = 112841)
+p(x = 143297, y = 195421)
+p(x = 73000, y = 51029)
+p(x = 207113, y = 107117)
+p(x = 182716, y = 27641)
+p(x = 13877, y = 141761)
+p(x = 38484, y = 122353)
+p(x = 137469, y = 20949)
+p(x = 117636, y = 35601)
+p(x = 3041, y = 66557)
+p(x = 44820, y = 130797)
+p(x = 162053, y = 177665)
+p(x = 169288, y = 204057)
+p(x = 201997, y = 163497)
+p(x = 11372, y = 205901)
+p(x = 127829, y = 101001)
+p(x = 53552, y = 93049)
+p(x = 184177, y = 106825)
+p(x = 209560, y = 147969)
+p(x = 133873, y = 71697)
+p(x = 30100, y = 95277)
+p(x = 139373, y = 139625)
+p(x = 134384, y = 4545)
+p(x = 35701, y = 164273)
+p(x = 138908, y = 62869)
+p(x = 130765, y = 24537)
+p(x = 97832, y = 9885)
+p(x = 24089, y = 42393)
+p(x = 124968, y = 67817)
+p(x = 76065, y = 198433)
+p(x = 36048, y = 179409)
+p(x = 11017, y = 93825)
+p(x = 66872, y = 104305)
+p(x = 9725, y = 182713)
+p(x = 121860, y = 212793)
+p(x = 212793, y = 212793)
diff --git a/rust/kcl-lib/e2e/executor/inputs/riddle_small.kcl b/rust/kcl-lib/e2e/executor/inputs/riddle_small.kcl
index 966358cd1..ba0447e8f 100644
--- a/rust/kcl-lib/e2e/executor/inputs/riddle_small.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/riddle_small.kcl
@@ -1,6 +1,6 @@
ANSWER = 41803
-fn t(s) {
+fn t(@s) {
return (ANSWER * s + 12345) % 214748
}
diff --git a/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl
index af4a138ff..02f0788d9 100644
--- a/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl
@@ -1,4 +1,4 @@
-fn rect(origin) {
+fn rect(@origin) {
return startSketchOn(XZ)
|> startProfile(at = origin)
|> angledLine(
diff --git a/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl b/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl
index 83329542d..df9cb4456 100644
--- a/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl
@@ -9,7 +9,7 @@ serverDepth = 31
width = 21.53
// simple caster model at each corner
-fn caster(originStart) {
+fn caster(@originStart) {
plane001c = {
origin = [
-(3.543 - 2.756) / 2 + originStart[0],
@@ -1330,7 +1330,7 @@ extrude012rl = extrude(sketch012rl, length = -thickness)
// GENERATE SERVER MODELS
// Define planes so the server can be moved
-fn streamServer(serverPos) {
+fn streamServer(@serverPos) {
planeXYs = {
origin = [0, 0 + 2, 4.114 + 1 + serverPos * 1.75],
xAxis = [1.0, 0.0, 0.0],
diff --git a/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl b/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl
index cfdc21b3c..71b40462b 100644
--- a/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl
@@ -7,7 +7,7 @@ serverDepth = 31
width = 21.53
// simple caster model at each corner
-fn caster(originStart) {
+fn caster(@originStart) {
plane001c = {
origin = [
-(3.543 - 2.756) / 2 + originStart[0],
@@ -967,7 +967,7 @@ sketch012rl = startSketchOn(extrude001rl, face = 'START')
extrude012rl = extrude(sketch012rl, length = -thickness)
// Define planes so the server can be moved
-fn streamServer(serverPos) {
+fn streamServer(@serverPos) {
planeXYs = {
origin = [0, 0 + 2, 4.114 + 1 + serverPos * 1.75],
xAxis = [1.0, 0.0, 0.0],
diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl
index 0def47d95..55ba40de9 100644
--- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl
@@ -7,10 +7,10 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
part002 = startSketchOn(part001, face = "end")
- |> circle(center: [0, 0], radius: 5, tag =$myCircle)
+ |> circle(center = [0, 0], radius = 5, tag = $myCircle)
|> extrude(length = 5)
diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl
index 143b52b89..341335536 100644
--- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl
index 9acdd83e8..8dddd1ba3 100644
--- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl
index 33e55287e..7cbf7b8bf 100644
--- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl
+++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
diff --git a/rust/kcl-lib/e2e/executor/main.rs b/rust/kcl-lib/e2e/executor/main.rs
index dd227a24d..c6d2e25fa 100644
--- a/rust/kcl-lib/e2e/executor/main.rs
+++ b/rust/kcl-lib/e2e/executor/main.rs
@@ -197,11 +197,11 @@ fn box(sk1, sk2, scale, plane) {
return boxsketch
}
-box(0, 0, 5, XY)
-box(10, 23, 8, XZ)
-box(30, 43, 18, -XY)
-thing = box(-12, -15, 10, YZ)
-box(-20, -5, 10, XY)"#;
+box(sk1 = 0, sk2 = 0, scale = 5, plane = XY)
+box(sk1 = 10, sk2 = 23, scale = 8, plane = XZ)
+box(sk1 = 30, sk2 = 43, scale = 18, plane = -XY)
+thing = box(sk1 = -12, sk2 = -15, scale = 10, plane = YZ)
+box(sk1 = -20, sk2 = -5, scale = 10, plane = XY)"#;
let result = execute_and_snapshot(code, None).await.unwrap();
assert_out("different_planes_same_drawing", &result);
@@ -295,7 +295,7 @@ async fn optional_params() {
return sg
}
-thing = other_circle([2, 2], 20)
+thing = other_circle(pos = [2, 2], radius = 20)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
assert_out("optional_params", &result);
@@ -303,7 +303,7 @@ thing = other_circle([2, 2], 20)
#[tokio::test(flavor = "multi_thread")]
async fn kcl_test_rounded_with_holes() {
- let code = r#"fn tarc(to, sktch, tag?) {
+ let code = r#"fn tarc(@to, sktch, tag?) {
return tangentialArc(sktch, endAbsolute = to, tag = tag)
}
@@ -311,13 +311,13 @@ fn roundedRectangle(pos, w, l, cornerRadius) {
rr = startSketchOn(XY)
|> startProfile(at = [pos[0] - w/2, 0])
|> line(endAbsolute = [pos[0] - w/2, pos[1] - l/2 + cornerRadius])
- |> tarc([pos[0] - w/2 + cornerRadius, pos[1] - l/2], %, $arc0)
+ |> tarc([pos[0] - w/2 + cornerRadius, pos[1] - l/2], sktch=%, tag=$arc0)
|> line(endAbsolute = [pos[0] + w/2 - cornerRadius, pos[1] - l/2])
- |> tarc([pos[0] + w/2, pos[1] - l/2 + cornerRadius], %)
+ |> tarc([pos[0] + w/2, pos[1] - l/2 + cornerRadius], sktch=%)
|> line(endAbsolute = [pos[0] + w/2, pos[1] + l/2 - cornerRadius])
- |> tarc([pos[0] + w/2 - cornerRadius, pos[1] + l/2], %, $arc2)
+ |> tarc([pos[0] + w/2 - cornerRadius, pos[1] + l/2], sktch=%, tag=$arc2)
|> line(endAbsolute = [pos[0] - w/2 + cornerRadius, pos[1] + l/2])
- |> tarc([pos[0] - w/2, pos[1] + l/2 - cornerRadius], %)
+ |> tarc([pos[0] - w/2, pos[1] + l/2 - cornerRadius], sktch=%)
|> close()
return rr
}
@@ -325,11 +325,11 @@ fn roundedRectangle(pos, w, l, cornerRadius) {
holeRadius = 1
holeIndex = 6
-part = roundedRectangle([0, 0], 20, 20, 4)
- |> subtract2d(tool = circle(center = [-holeIndex, holeIndex], radius= holeRadius))
- |> subtract2d(tool = circle(center = [holeIndex, holeIndex], radius= holeRadius))
- |> subtract2d(tool = circle(center = [-holeIndex, -holeIndex], radius= holeRadius))
- |> subtract2d(tool = circle(center = [holeIndex, -holeIndex], radius= holeRadius))
+part = roundedRectangle(pos=[0, 0], w=20, l=20, cornerRadius=4)
+ |> subtract2d(tool = circle(center = [-holeIndex, holeIndex], radius = holeRadius))
+ |> subtract2d(tool = circle(center = [holeIndex, holeIndex], radius = holeRadius))
+ |> subtract2d(tool = circle(center = [-holeIndex, -holeIndex], radius = holeRadius))
+ |> subtract2d(tool = circle(center = [holeIndex, -holeIndex], radius = holeRadius))
|> extrude(length = 2)
"#;
@@ -581,7 +581,7 @@ async fn kcl_test_cube_mm() {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -603,7 +603,7 @@ fn cube(pos, scale) {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -625,7 +625,7 @@ fn cube(pos, scale) {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -647,7 +647,7 @@ fn cube(pos, scale) {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -669,7 +669,7 @@ fn cube(pos, scale) {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -691,7 +691,7 @@ fn cube(pos, scale) {
return sg
}
-myCube = cube([0,0], 10)
+myCube = cube(pos = [0,0], scale = 10)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -709,7 +709,7 @@ async fn kcl_test_error_sketch_on_arc_face() {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close()
|> extrude(length = 20)
@@ -745,7 +745,7 @@ async fn kcl_test_sketch_on_face_of_face() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
@@ -805,7 +805,7 @@ async fn kcl_test_sketch_on_face_circle() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close()
|> extrude(length = 20)
@@ -1151,7 +1151,7 @@ async fn kcl_test_plumbus_fillets() {
return sg
}
-fn pentagon(len) {
+fn pentagon(@len) {
sg = startSketchOn(XY)
|> startProfile(at = [-len / 2, -len / 2])
|> angledLine(angle = 0, length = len, tag = $a)
@@ -1181,7 +1181,7 @@ fn pentagon(len) {
p = pentagon(32)
|> extrude(length = 10)
-circle0 = make_circle(p, p.sketch.tags.a, [0, 0], 2.5)
+circle0 = make_circle(ext=p, face=p.sketch.tags.a, pos=[0, 0], radius=2.5)
plumbus0 = circle0
|> extrude(length = 10)
|> fillet(
@@ -1189,7 +1189,7 @@ plumbus0 = circle0
tags = [circle0.tags.arc1, getOppositeEdge(circle0.tags.arc1)]
)
-circle1 = make_circle(p, p.sketch.tags.b, [0, 0], 2.5)
+circle1 = make_circle(ext=p, face=p.sketch.tags.b, pos=[0, 0], radius=2.5)
plumbus1 = circle1
|> extrude(length = 10)
|> fillet(
@@ -1231,7 +1231,7 @@ async fn kcl_test_member_expression_in_params() {
return screw
}
-capScrew([0, 0.5, 0], 50, 37.5, 50, 25)
+capScrew(originStart = [0, 0.5, 0], length=50, dia=37.5, capDia=50, capHeadLength=25)
"#;
let result = execute_and_snapshot(code, None).await.unwrap();
@@ -1327,13 +1327,13 @@ fn squareHole(l, w) {
extrusion = startSketchOn(XY)
|> circle(center = [0, 0], radius= dia/2 )
- |> subtract2d(tool = squareHole(length, width, height))
+ |> subtract2d(tool = squareHole(l = length, w = width, h = height))
|> extrude(length = height)
"#;
let result = execute_and_snapshot(code, None).await;
assert!(result.is_err());
- let expected_msg = "semantic: Expected 2 arguments, got 3";
+ let expected_msg = "semantic: `h` is not an argument of `squareHole`";
let err = result.unwrap_err().as_kcl_error().unwrap().get_message();
assert_eq!(err, expected_msg);
}
@@ -1531,7 +1531,7 @@ async fn kcl_test_linear_pattern3d_filleted_sketch() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close(tag = $line1)
|> extrude(length = 20)
|> fillet(
@@ -1562,7 +1562,7 @@ async fn kcl_test_circular_pattern3d_filleted_sketch() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close(tag = $line1)
|> extrude(length = 20)
|> fillet(
@@ -1589,7 +1589,7 @@ async fn kcl_test_circular_pattern3d_chamfered_sketch() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close(tag = $line1)
|> extrude(length = 20)
|> chamfer(
@@ -1615,7 +1615,7 @@ async fn kcl_test_tag_chamfer_with_more_than_one_edge_should_fail() {
return sg
}
-part001 = cube([0,0], 20)
+part001 = cube(pos = [0,0], scale = 20)
|> close(tag = $line1)
|> extrude(length = 20)
|> chamfer(
@@ -1640,7 +1640,7 @@ part001 = cube([0,0], 20)
#[tokio::test(flavor = "multi_thread")]
async fn kcl_test_duplicate_tags_should_error() {
- let code = r#"fn triangle(len) {
+ let code = r#"fn triangle(@len) {
return startSketchOn(XY)
|> startProfile(at = [-len / 2, -len / 2])
|> angledLine(angle = 0, length = len , tag = $a)
@@ -1926,7 +1926,7 @@ example = extrude(exampleSketch, length = 10)
#[tokio::test(flavor = "multi_thread")]
async fn kcl_test_error_inside_fn_also_has_source_range_of_call_site() {
- let code = r#"fn someFunction(something) {
+ let code = r#"fn someFunction(@something) {
startSketchOn(something)
}
@@ -1937,14 +1937,14 @@ someFunction('INVALID')
assert!(result.is_err());
assert_eq!(
result.err().unwrap().to_string(),
- r#"semantic: KclErrorDetails { source_ranges: [SourceRange([45, 54, 0]), SourceRange([59, 82, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"#
+ r#"semantic: KclErrorDetails { source_ranges: [SourceRange([46, 55, 0]), SourceRange([60, 83, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"#
);
}
#[tokio::test(flavor = "multi_thread")]
async fn kcl_test_error_inside_fn_also_has_source_range_of_call_site_recursive() {
- let code = r#"fn someFunction(something) {
- fn someNestedFunction(something2) {
+ let code = r#"fn someFunction(@something) {
+ fn someNestedFunction(@something2) {
startSketchOn(something2)
}
@@ -1958,7 +1958,7 @@ someFunction('INVALID')
assert!(result.is_err());
assert_eq!(
result.err().unwrap().to_string(),
- r#"semantic: KclErrorDetails { source_ranges: [SourceRange([91, 101, 0]), SourceRange([114, 143, 0]), SourceRange([147, 170, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"#
+ r#"semantic: KclErrorDetails { source_ranges: [SourceRange([93, 103, 0]), SourceRange([116, 145, 0]), SourceRange([149, 172, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"#
);
}
@@ -2038,6 +2038,17 @@ async fn kcl_test_ensure_nothing_left_in_batch_multi_file() {
ctx.close().await;
}
+#[tokio::test(flavor = "multi_thread")]
+async fn kcl_test_default_param_for_unlabeled() {
+ let code = r#"fn myExtrude(@sk, len) {
+ return extrude(sk, length = len)
+}
+
+sketch001 = startSketchOn(XY)
+|> circle(center = [0, 0], radius = 93.75)
+|> myExtrude(len = 40)"#;
+ let _ = execute_and_snapshot(code, None).await.unwrap();
+}
#[tokio::test(flavor = "multi_thread")]
async fn kcl_test_better_type_names() {
diff --git a/rust/kcl-lib/src/docs/gen_std_tests.rs b/rust/kcl-lib/src/docs/gen_std_tests.rs
index 87f572a36..c0c3750e4 100644
--- a/rust/kcl-lib/src/docs/gen_std_tests.rs
+++ b/rust/kcl-lib/src/docs/gen_std_tests.rs
@@ -1,113 +1,60 @@
use std::{
- collections::{BTreeMap, HashMap},
- fs::File,
+ collections::HashMap,
+ fs::{self, File},
io::Read as _,
+ path::Path,
};
use anyhow::Result;
use base64::Engine;
use convert_case::Casing;
-use handlebars::Renderable;
use indexmap::IndexMap;
use itertools::Itertools;
-use schemars::schema::SingleOrVec;
use serde_json::json;
use tokio::task::JoinSet;
use super::kcl_doc::{ConstData, DocData, ExampleProperties, FnData, TyData};
-use crate::{
- docs::{is_primitive, StdLibFn},
- std::StdLib,
- ExecutorContext,
-};
+use crate::{docs::StdLibFn, std::StdLib, ExecutorContext};
-const TYPES_DIR: &str = "../../docs/kcl/types";
-const LANG_TOPICS: [&str; 5] = ["Types", "Modules", "Settings", "Known Issues", "Constants"];
-// These types are declared in std.
-const DECLARED_TYPES: [&str; 14] = [
- "number", "string", "tag", "bool", "Sketch", "Solid", "Plane", "Helix", "Face", "Edge", "Point2d", "Point3d",
- "Axis2d", "Axis3d",
+const LANG_TOPICS: [&str; 4] = ["Types", "Modules", "Settings", "Known Issues"];
+// These types are declared in (KCL) std.
+const DECLARED_TYPES: [&str; 15] = [
+ "any", "number", "string", "tag", "bool", "Sketch", "Solid", "Plane", "Helix", "Face", "Edge", "Point2d",
+ "Point3d", "Axis2d", "Axis3d",
];
+// Types with special handling.
+const SPECIAL_TYPES: [&str; 5] = ["TagDeclarator", "TagIdentifier", "Start", "End", "ImportedGeometry"];
+
+const TYPE_REWRITES: [(&str, &str); 11] = [
+ ("TagNode", "TagDeclarator"),
+ ("SketchData", "Plane | Solid"),
+ ("SketchOrSurface", "Sketch | Plane | Face"),
+ ("SketchSurface", "Plane | Face"),
+ ("SolidOrImportedGeometry", "[Solid] | ImportedGeometry"),
+ (
+ "SolidOrSketchOrImportedGeometry",
+ "[Solid] | [Sketch] | ImportedGeometry",
+ ),
+ ("KclValue", "any"),
+ ("[KclValue]", "[any]"),
+ ("FaceTag", "TagIdentifier | Start | End"),
+ ("GeometryWithImportedGeometry", "Solid | Sketch | ImportedGeometry"),
+ ("SweepPath", "Sketch | Helix"),
+];
+
+fn rename_type(input: &str) -> &str {
+ for (i, o) in TYPE_REWRITES {
+ if input == i {
+ return o;
+ }
+ }
+
+ input
+}
+
fn init_handlebars() -> Result> {
let mut hbs = handlebars::Handlebars::new();
- // Register the 'json' helper
- hbs.register_helper(
- "json",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or("");
- out.write(&serde_json::to_string(¶m).unwrap())?;
- Ok(())
- },
- ),
- );
-
- // Register the 'basename' helper
- hbs.register_helper(
- "times",
- Box::new(
- |h: &handlebars::Helper,
- hb: &handlebars::Handlebars,
- ctx: &handlebars::Context,
- rc: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let n = h.param(0).and_then(|v| v.value().as_u64()).ok_or_else(|| {
- handlebars::RenderErrorReason::Other(
- "times helper expects an integer as first parameter".to_string(),
- )
- })?;
-
- let template = h
- .template()
- .ok_or_else(|| handlebars::RenderErrorReason::Other("times helper expects a block".to_string()))?;
-
- for i in 0..n {
- let mut local_ctx = ctx.clone();
- let mut rc = rc.clone();
- let m = local_ctx.data_mut().as_object_mut().unwrap();
- m.insert("@index".to_string(), handlebars::JsonValue::Number(i.into()));
- if i == 0 {
- m.insert("@first".to_string(), handlebars::JsonValue::Bool(true));
- }
- template.render(hb, &local_ctx, &mut rc, out)?;
- }
-
- Ok(())
- },
- ),
- );
-
- hbs.register_helper(
- "lte",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let a = h.param(0).and_then(|v| v.value().as_f64()).ok_or_else(|| {
- handlebars::RenderErrorReason::Other("lte helper expects a number as first parameter".to_string())
- })?;
-
- let b = h.param(1).and_then(|v| v.value().as_f64()).ok_or_else(|| {
- handlebars::RenderErrorReason::Other("lte helper expects a number as second parameter".to_string())
- })?;
-
- let result = a <= b;
- out.write(if result { "true" } else { "false" })?;
-
- Ok(())
- },
- ),
- );
hbs.register_helper(
"firstLine",
@@ -131,146 +78,6 @@ fn init_handlebars() -> Result> {
),
);
- hbs.register_helper(
- "neq",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let param1 = h
- .param(0)
- .ok_or_else(|| {
- handlebars::RenderErrorReason::Other("neq helper expects two parameters".to_string())
- })?
- .value();
- let param2 = h
- .param(1)
- .ok_or_else(|| {
- handlebars::RenderErrorReason::Other("neq helper expects two parameters".to_string())
- })?
- .value();
-
- let result = param1 != param2;
- out.write(if result { "true" } else { "false" })?;
-
- Ok(())
- },
- ),
- );
-
- // Register the 'lowercase' helper
- hbs.register_helper(
- "lowercase",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or("");
- out.write(¶m.to_lowercase())?;
- Ok(())
- },
- ),
- );
-
- hbs.register_helper(
- "pretty_enum",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- if let Some(enum_value) = h.param(0) {
- if let Some(array) = enum_value.value().as_array() {
- let pretty_options = array
- .iter()
- .filter_map(|v| v.as_str())
- .map(|s| format!("`{}`", s))
- .collect::>()
- .join(", ");
- out.write(&pretty_options)?;
- return Ok(());
- }
- }
- out.write("Invalid enum")?;
- Ok(())
- },
- ),
- );
-
- hbs.register_helper(
- "pretty_enum",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- if let Some(enum_value) = h.param(0) {
- if let Some(array) = enum_value.value().as_array() {
- let pretty_options = array
- .iter()
- .filter_map(|v| v.as_str())
- .map(|s| format!("`{}`", s))
- .collect::>()
- .join(", ");
- out.write(&pretty_options)?;
- return Ok(());
- }
- }
- out.write("Invalid enum")?;
- Ok(())
- },
- ),
- );
-
- hbs.register_helper(
- "pretty_ref",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or("");
- let basename = param.split('/').next_back().unwrap_or("");
- out.write(&format!("`{}`", basename))?;
- Ok(())
- },
- ),
- );
-
- // Register helper to remove newlines from a string.
- hbs.register_helper(
- "remove_newlines",
- Box::new(
- |h: &handlebars::Helper,
- _: &handlebars::Handlebars,
- _: &handlebars::Context,
- _: &mut handlebars::RenderContext,
- out: &mut dyn handlebars::Output|
- -> handlebars::HelperResult {
- if let Some(param) = h.param(0) {
- if let Some(string) = param.value().as_str() {
- out.write(&string.replace("\n", ""))?;
- return Ok(());
- }
- }
- out.write("")?;
- Ok(())
- },
- ),
- );
-
// Register a helper to do safe YAML new lines.
hbs.register_helper(
"safe_yaml",
@@ -296,16 +103,9 @@ fn init_handlebars() -> Result> {
),
);
- hbs.register_template_string("schemaType", include_str!("templates/schemaType.hbs"))?;
- hbs.register_template_string("properties", include_str!("templates/properties.hbs"))?;
- hbs.register_template_string("array", include_str!("templates/array.hbs"))?;
- hbs.register_template_string("propertyType", include_str!("templates/propertyType.hbs"))?;
- hbs.register_template_string("schema", include_str!("templates/schema.hbs"))?;
hbs.register_template_string("index", include_str!("templates/index.hbs"))?;
- hbs.register_template_string("consts-index", include_str!("templates/consts-index.hbs"))?;
hbs.register_template_string("function", include_str!("templates/function.hbs"))?;
hbs.register_template_string("const", include_str!("templates/const.hbs"))?;
- hbs.register_template_string("type", include_str!("templates/type.hbs"))?;
hbs.register_template_string("kclType", include_str!("templates/kclType.hbs"))?;
Ok(hbs)
@@ -318,7 +118,9 @@ fn generate_index(combined: &IndexMap>, kcl_lib: &[Doc
functions.insert("std".to_owned(), Vec::new());
let mut constants = HashMap::new();
- constants.insert("std".to_owned(), Vec::new());
+
+ let mut types = HashMap::new();
+ types.insert("Primitive types".to_owned(), Vec::new());
for key in combined.keys() {
let internal_fn = combined
@@ -335,33 +137,34 @@ fn generate_index(combined: &IndexMap>, kcl_lib: &[Doc
.push((internal_fn.name(), internal_fn.name()));
}
+ for name in SPECIAL_TYPES {
+ types
+ .get_mut("Primitive types")
+ .unwrap()
+ .push((name.to_owned(), format!("types.md#{name}")));
+ }
+
for d in kcl_lib {
if d.hide() {
continue;
}
- functions.entry(d.mod_name()).or_default().push(match d {
- DocData::Fn(f) => (f.preferred_name.clone(), d.file_name()),
- DocData::Const(c) => (c.preferred_name.clone(), d.file_name()),
- DocData::Ty(t) => (t.preferred_name.clone(), d.file_name()),
- });
+ let group = match d {
+ DocData::Fn(_) => functions.entry(d.mod_name()).or_default(),
+ DocData::Ty(_) => types.entry(d.mod_name()).or_default(),
+ DocData::Const(_) => constants.entry(d.mod_name()).or_default(),
+ };
- if let DocData::Const(c) = d {
- constants
- .entry(d.mod_name())
- .or_default()
- .push((c.name.clone(), d.file_name()));
- }
+ group.push((d.preferred_name().to_owned(), d.file_name()));
}
- // TODO we should sub-divide into types, constants, and functions.
- let mut sorted: Vec<_> = functions
+ let mut sorted_fns: Vec<_> = functions
.into_iter()
.map(|(m, mut fns)| {
fns.sort();
let val = json!({
"name": m,
- "functions": fns.into_iter().map(|(n, f)| json!({
+ "items": fns.into_iter().map(|(n, f)| json!({
"name": n,
"file_name": f,
})).collect::>(),
@@ -369,35 +172,16 @@ fn generate_index(combined: &IndexMap>, kcl_lib: &[Doc
(m, val)
})
.collect();
- sorted.sort_by(|t1, t2| t1.0.cmp(&t2.0));
- let data: Vec<_> = sorted.into_iter().map(|(_, val)| val).collect();
+ sorted_fns.sort_by(|t1, t2| t1.0.cmp(&t2.0));
+ let functions_data: Vec<_> = sorted_fns.into_iter().map(|(_, val)| val).collect();
- let topics: Vec<_> = LANG_TOPICS
- .iter()
- .map(|name| {
- json!({
- "name": name,
- "file_name": name.to_lowercase().replace(' ', "-").replace("constants", "consts"),
- })
- })
- .collect();
- let data = json!({
- "lang_topics": topics,
- "modules": data,
- });
-
- let output = hbs.render("index", &data)?;
-
- expectorate::assert_contents("../../docs/kcl/index.md", &output);
-
- // Generate the index for the constants.
let mut sorted_consts: Vec<_> = constants
.into_iter()
.map(|(m, mut consts)| {
consts.sort();
let val = json!({
"name": m,
- "consts": consts.into_iter().map(|(n, f)| json!({
+ "items": consts.into_iter().map(|(n, f)| json!({
"name": n,
"file_name": f,
})).collect::>(),
@@ -406,14 +190,45 @@ fn generate_index(combined: &IndexMap>, kcl_lib: &[Doc
})
.collect();
sorted_consts.sort_by(|t1, t2| t1.0.cmp(&t2.0));
- let data: Vec<_> = sorted_consts.into_iter().map(|(_, val)| val).collect();
+ let consts_data: Vec<_> = sorted_consts.into_iter().map(|(_, val)| val).collect();
+
+ let mut sorted_types: Vec<_> = types
+ .into_iter()
+ .map(|(m, mut tys)| {
+ tys.sort();
+ let val = json!({
+ "name": m,
+ "items": tys.into_iter().map(|(n, f)| json!({
+ "name": n,
+ "file_name": f,
+ })).collect::>(),
+ });
+ (m, val)
+ })
+ .collect();
+ sorted_types.sort_by(|t1, t2| t1.0.cmp(&t2.0));
+ let types_data: Vec<_> = sorted_types.into_iter().map(|(_, val)| val).collect();
+
+ let topics: Vec<_> = LANG_TOPICS
+ .iter()
+ .map(|name| {
+ json!({
+ "name": name,
+ "file_name": name.to_lowercase().replace(' ', "-"),
+ })
+ })
+ .collect();
+
let data = json!({
- "consts": data,
+ "lang_topics": topics,
+ "functions": functions_data,
+ "consts": consts_data,
+ "types": types_data,
});
- let output = hbs.render("consts-index", &data)?;
+ let output = hbs.render("index", &data)?;
- expectorate::assert_contents("../../docs/kcl/consts.md", &output);
+ expectorate::assert_contents("../../docs/kcl/index.md", &output);
Ok(())
}
@@ -446,7 +261,7 @@ fn generate_example(index: usize, src: &str, props: &ExampleProperties, file_nam
}
fn generate_type_from_kcl(ty: &TyData, file_name: String, example_name: String) -> Result<()> {
- if ty.properties.doc_hidden {
+ if ty.properties.doc_hidden || !DECLARED_TYPES.contains(&&*ty.name) {
return Ok(());
}
@@ -461,7 +276,7 @@ fn generate_type_from_kcl(ty: &TyData, file_name: String, example_name: String)
let data = json!({
"name": ty.qual_name(),
- "definition": ty.alias.as_ref().map(|t| cleanup_sig(format!("type {} = {t}", ty.preferred_name), ty.referenced_types.iter().filter(|t| !DECLARED_TYPES.contains(&&***t)))),
+ "definition": ty.alias.as_ref().map(|t| format!("type {} = {t}", ty.preferred_name)),
"summary": ty.summary,
"description": ty.description,
"deprecated": ty.properties.deprecated,
@@ -469,16 +284,13 @@ fn generate_type_from_kcl(ty: &TyData, file_name: String, example_name: String)
});
let output = hbs.render("kclType", &data)?;
- let output = cleanup_type_links(
- &output,
- ty.referenced_types.iter().filter(|t| !DECLARED_TYPES.contains(&&***t)),
- );
+ let output = cleanup_types(&output);
expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output);
Ok(())
}
-fn generate_function_from_kcl(function: &FnData, file_name: String) -> Result<()> {
+fn generate_function_from_kcl(function: &FnData, file_name: String, example_name: String) -> Result<()> {
if function.properties.doc_hidden {
return Ok(());
}
@@ -489,7 +301,7 @@ fn generate_function_from_kcl(function: &FnData, file_name: String) -> Result<()
.examples
.iter()
.enumerate()
- .filter_map(|(index, example)| generate_example(index, &example.0, &example.1, &file_name))
+ .filter_map(|(index, example)| generate_example(index, &example.0, &example.1, &example_name))
.collect();
let data = json!({
@@ -497,10 +309,7 @@ fn generate_function_from_kcl(function: &FnData, file_name: String) -> Result<()
"summary": function.summary,
"description": function.description,
"deprecated": function.properties.deprecated,
- "fn_signature": cleanup_sig(function.preferred_name.clone() + &function.fn_signature(), function
- .referenced_types
- .iter()
- .filter(|t| !DECLARED_TYPES.contains(&&***t))),
+ "fn_signature": function.preferred_name.clone() + &function.fn_signature(),
"tags": [],
"examples": examples,
"is_utilities": false,
@@ -521,14 +330,8 @@ fn generate_function_from_kcl(function: &FnData, file_name: String) -> Result<()
});
let output = hbs.render("function", &data)?;
- let output = cleanup_type_links(
- &output,
- function
- .referenced_types
- .iter()
- .filter(|t| !DECLARED_TYPES.contains(&&***t)),
- );
- expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), &output);
+ let output = &cleanup_types(&output);
+ expectorate::assert_contents(format!("../../docs/kcl/{}.md", file_name), output);
Ok(())
}
@@ -562,11 +365,11 @@ fn generate_const_from_kcl(cnst: &ConstData, file_name: String, example_name: St
Ok(())
}
-fn generate_function(internal_fn: Box) -> Result> {
+fn generate_function(internal_fn: Box) -> Result<()> {
let hbs = init_handlebars()?;
if internal_fn.unpublished() {
- return Ok(BTreeMap::new());
+ return Ok(());
}
let fn_name = internal_fn.name();
@@ -598,48 +401,26 @@ fn generate_function(internal_fn: Box) -> Result>(),
"return_value": internal_fn.return_value(false).map(|ret| {
json!({
- "type_": ret.type_,
+ "type_": rename_type(&ret.type_),
"description": ret.description(),
})
}),
@@ -647,295 +428,170 @@ fn generate_function(internal_fn: Box) -> Result(output: &str, types: impl Iterator- ) -> String {
- let mut cleaned_output = output.to_string();
-
- // Cleanup our weird number arrays.
- // TODO: This is a hack for the handlebars template being too complex.
- cleaned_output = cleaned_output.replace("`[, `number`, `number`]`", "`[number, number]`");
- cleaned_output = cleaned_output.replace("`[, `number`, `number`, `number`]`", "`[number, number, number]`");
-
- // Fix the links to the types.
- for type_name in types.map(|s| &**s).chain(DECLARED_TYPES) {
- if type_name == "TagDeclarator" || type_name == "TagIdentifier" || type_name == "TagNode" || type_name == "tag"
- {
- continue;
- } else {
- let link = format!("(/docs/kcl/types/{})", type_name);
- cleaned_output =
- cleaned_output.replace(&format!("`{}`", type_name), &format!("[`{}`]{}", type_name, &link));
- // Do the same for the type with brackets.
- cleaned_output =
- cleaned_output.replace(&format!("`[{}]`", type_name), &format!("[`[{}]`]{}", type_name, link));
- }
- }
-
- // TODO handle union types generically rather than special casing them.
- cleaned_output = cleaned_output.replace(
- "`Sketch | Plane | Face`",
- "[`Sketch`](/docs/kcl/types/Sketch) or [`Plane`](/docs/kcl/types/Plane) or [`Face`](/docs/kcl/types/Face)",
- );
- cleaned_output = cleaned_output.replace(
- "`Axis3d | Edge`",
- "[`Axis3d`](/docs/kcl/types/Axis3d) or [`Edge`](/docs/kcl/types/Edge)",
- );
- cleaned_output = cleaned_output.replace(
- "`Axis2d | Edge`",
- "[`Axis2d`](/docs/kcl/types/Axis2d) or [`Edge`](/docs/kcl/types/Edge)",
- );
-
- // Fix the links to the types.
- // Gross hack for the stupid alias types.
- cleaned_output = cleaned_output.replace("TagNode", "TagDeclarator");
-
- let link = "[`TagDeclarator`](/docs/kcl/types#tag-declaration)";
- cleaned_output = cleaned_output.replace("`TagDeclarator`", link);
- let link = "[`TagIdentifier`](/docs/kcl/types#tag-identifier)";
- cleaned_output = cleaned_output.replace("`TagIdentifier`", link);
-
- cleaned_output
-}
-
-// TODO total code dup with `cleanup_type_links`, just this version doesn't have the backticks. :-(
-fn cleanup_sig<'a>(input: String, types: impl Iterator
- ) -> String {
- let mut cleaned_output = input;
-
- // Fix the links to the types.
- for type_name in types.map(|s| &**s).chain(DECLARED_TYPES) {
- if type_name == "TagDeclarator" || type_name == "TagIdentifier" || type_name == "TagNode" || type_name == "tag"
- {
- continue;
- } else {
- let link = format!("(/docs/kcl/types/{})", type_name);
- // Do the same for the type with brackets.
- cleaned_output = cleaned_output.replace(&format!("[{}]", type_name), &format!("[[{}]]{}", type_name, link));
- cleaned_output = cleaned_output.replace(type_name, &format!("[{}]{}", type_name, &link));
- }
- }
-
- // TODO handle union types generically rather than special casing them.
- cleaned_output = cleaned_output.replace(
- "Sketch | Plane | Face",
- "[Sketch](/docs/kcl/types/Sketch) | [Plane](/docs/kcl/types/Plane) | [Face](/docs/kcl/types/Face)",
- );
- cleaned_output = cleaned_output.replace(
- "Axis3d | Edge",
- "[Axis3d](/docs/kcl/types/Axis3d) | [Edge](/docs/kcl/types/Edge)",
- );
- cleaned_output = cleaned_output.replace(
- "Axis2d | Edge",
- "[Axis2d](/docs/kcl/types/Axis2d) | [Edge](/docs/kcl/types/Edge)",
- );
-
- // Fix the links to the types.
- // Gross hack for the stupid alias types.
- cleaned_output = cleaned_output.replace("TagNode", "TagDeclarator");
-
- let link = "[TagDeclarator](/docs/kcl/types#tag-declaration)";
- cleaned_output = cleaned_output.replace("TagDeclarator", link);
- let link = "[TagIdentifier](/docs/kcl/types#tag-identifier)";
- cleaned_output = cleaned_output.replace("TagIdentifier", link);
-
- cleaned_output
-}
-
-fn add_to_types(
- name: &str,
- schema: &schemars::schema::Schema,
- types: &mut BTreeMap
,
-) -> Result<()> {
- if name.is_empty() {
- return Err(anyhow::anyhow!("Empty type name"));
- }
-
- if DECLARED_TYPES.contains(&name) || name == "TyF64" {
- return Ok(());
- }
-
- if name.starts_with("number(") {
- panic!("uom number");
- }
-
- let schemars::schema::Schema::Object(o) = schema else {
- return Err(anyhow::anyhow!(
- "Failed to get object schema, should have not been a primitive"
- ));
- };
-
- if name == "SourceRange" {
- types.insert(name.to_string(), schema.clone());
- return Ok(());
- }
-
- // If we have an array we want to generate the type markdown files for each item in the
- // array.
- if let Some(array) = &o.array {
- // Recursively generate the type markdown files for each item in the array.
- if let Some(items) = &array.items {
- match items {
- schemars::schema::SingleOrVec::Single(item) => {
- if is_primitive(item)?.is_some() {
- return Ok(());
- }
- return add_to_types(name.trim_start_matches('[').trim_end_matches(']'), item, types);
- }
- schemars::schema::SingleOrVec::Vec(items) => {
- for item in items {
- if is_primitive(item)?.is_some() {
- continue;
- }
- add_to_types(name.trim_start_matches('[').trim_end_matches(']'), item, types)?;
- }
- }
- }
- } else {
- return Err(anyhow::anyhow!("Failed to get array items"));
- }
- }
-
- types.insert(name.to_string(), schema.clone());
-
Ok(())
}
-fn generate_type(
- name: &str,
- schema: &schemars::schema::Schema,
- types: &BTreeMap,
-) -> Result<()> {
- if name.is_empty() {
- return Err(anyhow::anyhow!("Empty type name"));
+fn cleanup_types(input: &str) -> String {
+ #[derive(Copy, Clone, Eq, PartialEq, Debug)]
+ enum State {
+ Text,
+ PreCodeBlock,
+ CodeBlock,
+ CodeBlockType,
+ Slash,
+ Comment,
}
- // Skip over TagDeclarator and TagIdentifier since they have custom docs.
- if name == "TagDeclarator" || name == "TagIdentifier" || name == "TagNode" || name == "TyF64" {
- return Ok(());
- }
+ let mut output = String::new();
+ let mut code_annot = String::new();
+ let mut code = String::new();
+ let mut code_type = String::new();
+ let mut state = State::Text;
+ let mut ticks = 0;
- let schemars::schema::Schema::Object(o) = schema else {
- return Err(anyhow::anyhow!(
- "Failed to get object schema, should have not been a primitive"
- ));
- };
-
- // If we have an array we want to generate the type markdown files for each item in the
- // array.
- if let Some(array) = &o.array {
- // Recursively generate the type markdown files for each item in the array.
- if let Some(items) = &array.items {
- match items {
- schemars::schema::SingleOrVec::Single(item) => {
- if is_primitive(item)?.is_some() {
- return Ok(());
- }
- return generate_type(name.trim_start_matches('[').trim_end_matches(']'), item, types);
+ for c in input.chars() {
+ if state == State::CodeBlockType {
+ if ['`', ',', '\n', ')', '/'].contains(&c) {
+ if code_type.starts_with(' ') {
+ code.push(' ');
}
- schemars::schema::SingleOrVec::Vec(items) => {
- for item in items {
- if is_primitive(item)?.is_some() {
- continue;
- }
- generate_type(name.trim_start_matches('[').trim_end_matches(']'), item, types)?;
+ code.push_str(&cleanup_type_string(code_type.trim(), false));
+ if code_type.ends_with(' ') {
+ code.push(' ');
+ }
+
+ code_type = String::new();
+ state = State::CodeBlock;
+ } else {
+ code_type.push(c);
+ continue;
+ }
+ }
+ if c == '`' {
+ if state == State::Comment {
+ code.push(c);
+ } else {
+ if state == State::Slash {
+ state = State::CodeBlock;
+ }
+
+ ticks += 1;
+ if ticks == 3 {
+ if state == State::Text {
+ state = State::PreCodeBlock;
+ } else {
+ output.push_str("```");
+ output.push_str(&code_annot);
+ output.push_str(&code);
+ // `code` includes the first two of three backticks
+ output.push('`');
+ state = State::Text;
+ code_annot = String::new();
+ code = String::new();
}
- return Ok(());
+ ticks = 0;
+ } else if state == State::Text && ticks == 2 && !code.is_empty() {
+ output.push_str(&cleanup_type_string(&code, true));
+ code = String::new();
+ ticks = 0;
+ } else if state == State::CodeBlock {
+ code.push(c);
}
}
} else {
- return Err(anyhow::anyhow!("Failed to get array items"));
+ if ticks == 2 {
+ // Empty code block
+ ticks = 0;
+ }
+
+ if c == '\n' && (state == State::PreCodeBlock || state == State::Comment) {
+ state = State::CodeBlock;
+ }
+
+ if c == '/' {
+ match state {
+ State::CodeBlock => state = State::Slash,
+ State::Slash => state = State::Comment,
+ _ => {}
+ }
+ } else if state == State::Slash {
+ state = State::CodeBlock;
+ }
+
+ match state {
+ State::Text if ticks == 0 => output.push(c),
+ State::Text if ticks == 1 => code.push(c),
+ State::Text => unreachable!(),
+ State::PreCodeBlock => code_annot.push(c),
+ State::CodeBlock | State::Slash | State::Comment => code.push(c),
+ State::CodeBlockType => unreachable!(),
+ }
+
+ if c == ':' && state == State::CodeBlock {
+ state = State::CodeBlockType;
+ }
}
}
- // Make sure the name is pascal cased.
- if !(name.is_case(convert_case::Case::Pascal)
- || name == "Point3d"
- || name == "Point2d"
- || name == "CircularPattern2dData"
- || name == "CircularPattern3dData"
- || name == "LinearPattern2dData"
- || name == "LinearPattern3dData"
- || name == "Mirror2dData"
- || name == "Axis2dOrEdgeReference"
- || name == "Axis3dOrEdgeReference"
- || name == "AxisAndOrigin2d"
- || name == "AxisAndOrigin3d")
- {
- return Err(anyhow::anyhow!("Type name is not pascal cased: {}", name));
- }
-
- let cleaned_schema = recurse_and_create_references(name, schema, types)?;
-
- let schemars::schema::Schema::Object(o) = cleaned_schema else {
- return Err(anyhow::anyhow!(
- "Failed to get object schema, should have not been a primitive"
- ));
- };
-
- let hbs = init_handlebars()?;
-
- // Add the name as the title.
- let mut object = o.clone();
- if let Some(metadata) = object.metadata.as_mut() {
- metadata.title = Some(name.to_string());
- } else {
- object.metadata = Some(Box::new(schemars::schema::Metadata {
- title: Some(name.to_string()),
- ..Default::default()
- }));
- }
-
- // Cleanup the description.
- let object = cleanup_type_description(&object)
- .map_err(|e| anyhow::anyhow!("Failed to cleanup type description for type `{}`: {}", name, e))?;
-
- let data = json!(schemars::schema::Schema::Object(object));
-
- let mut output = hbs.render("type", &data)?;
- // Fix the links to the types.
- output = cleanup_type_links(&output, types.keys());
- expectorate::assert_contents(format!("{}/{}.md", TYPES_DIR, name), &output);
-
- Ok(())
+ output
}
-fn cleanup_type_description(object: &schemars::schema::SchemaObject) -> Result {
- let mut object = object.clone();
- if let Some(metadata) = object.metadata.as_mut() {
- if let Some(description) = metadata.description.as_mut() {
- // Find any ```kcl code blocks and format the code.
- // Parse any code blocks from the doc string.
- let mut code_blocks = Vec::new();
- let d = description.clone();
- for line in d.lines() {
- if line.starts_with("```kcl") && line.ends_with("```") {
- code_blocks.push(line);
+fn cleanup_type_string(input: &str, fmt_for_text: bool) -> String {
+ assert!(
+ !(input.starts_with('[') && input.ends_with(']') && input.contains('|')),
+ "Arrays of unions are not supported"
+ );
+
+ let input = rename_type(input);
+
+ let tys: Vec<_> = input
+ .split('|')
+ .map(|ty| {
+ let ty = ty.trim();
+
+ let mut prefix = String::new();
+ let mut suffix = String::new();
+
+ if fmt_for_text {
+ prefix.push('`');
+ suffix.push('`');
+ }
+
+ let ty = if ty.starts_with('[') {
+ if ty.ends_with("; 1+]") {
+ prefix = format!("{prefix}[");
+ suffix = format!("; 1+]{suffix}");
+ &ty[1..ty.len() - 5]
+ } else if ty.ends_with(']') {
+ prefix = format!("{prefix}[");
+ suffix = format!("]{suffix}");
+ &ty[1..ty.len() - 1]
+ } else {
+ ty
}
+ } else {
+ ty
+ };
+
+ // TODO markdown links in code blocks are not turned into links by our website stack.
+ // If we can handle signatures more manually we could get highlighting and links and
+ // we might want to restore the links by not checking `fmt_for_text` here.
+
+ if fmt_for_text && SPECIAL_TYPES.contains(&ty) {
+ format!("[{prefix}{ty}{suffix}](/docs/kcl/types#{ty})")
+ } else if fmt_for_text && DECLARED_TYPES.contains(&ty) {
+ format!("[{prefix}{ty}{suffix}](/docs/kcl/types/std-types-{ty})")
+ } else {
+ format!("{prefix}{ty}{suffix}")
}
+ })
+ .collect();
- // Parse the kcl and recast it.
- for code_block in &code_blocks {
- let trimmed = code_block.trim_start_matches("```kcl").trim_end_matches("```");
- let program = crate::Program::parse_no_errs(trimmed)?;
-
- let options = crate::parsing::ast::types::FormatOptions {
- insert_final_newline: false,
- ..Default::default()
- };
- let cleaned = program.ast.recast(&options, 0);
-
- *description = description.replace(code_block, &format!("```kcl\n{}\n```", cleaned));
- }
- }
- }
-
- Ok(object)
+ tys.join(if fmt_for_text { " or " } else { " | " })
}
fn clean_function_name(name: &str) -> String {
@@ -946,14 +602,6 @@ fn clean_function_name(name: &str) -> String {
fn_name = fn_name.replace("last_seg_", "last_segment_");
} else if fn_name.contains("_2_d") {
fn_name = fn_name.replace("_2_d", "_2d");
- } else if fn_name.contains("_greater_than_or_eq") {
- fn_name = fn_name.replace("_greater_than_or_eq", "_gte");
- } else if fn_name.contains("_less_than_or_eq") {
- fn_name = fn_name.replace("_less_than_or_eq", "_lte");
- } else if fn_name.contains("_greater_than") {
- fn_name = fn_name.replace("_greater_than", "_gt");
- } else if fn_name.contains("_less_than") {
- fn_name = fn_name.replace("_less_than", "_lt");
} else if fn_name.contains("_3_d") {
fn_name = fn_name.replace("_3_d", "_3d");
} else if fn_name == "seg_ang" {
@@ -962,172 +610,11 @@ fn clean_function_name(name: &str) -> String {
fn_name = "segment_length".to_string();
} else if fn_name.starts_with("seg_") {
fn_name = fn_name.replace("seg_", "segment_");
- } else if fn_name.starts_with("log_") {
- fn_name = fn_name.replace("log_", "log");
- } else if fn_name.ends_with("tan_2") {
- fn_name = fn_name.replace("tan_2", "tan2");
}
fn_name
}
-/// Recursively create references for types we already know about.
-fn recurse_and_create_references(
- name: &str,
- schema: &schemars::schema::Schema,
- types: &BTreeMap,
-) -> Result {
- if DECLARED_TYPES.contains(&name) || name == "TyF64" {
- return Ok(schema.clone());
- }
-
- let schemars::schema::Schema::Object(o) = schema else {
- return Err(anyhow::anyhow!(
- "Failed to get object schema, should have not been a primitive"
- ));
- };
-
- // If we already have a reference add the metadata to the reference if it has none.
- if let Some(reference) = &o.reference {
- let mut obj = o.clone();
- let reference = reference.trim_start_matches("#/components/schemas/");
- if DECLARED_TYPES.contains(&reference) || reference == "TyF64" {
- return Ok(schema.clone());
- }
-
- let t = types
- .get(reference)
- .ok_or_else(|| anyhow::anyhow!("Failed to get type: {} {:?}", reference, types.keys()))?;
-
- let schemars::schema::Schema::Object(to) = t else {
- return Err(anyhow::anyhow!(
- "Failed to get object schema, should have not been a primitive"
- ));
- };
-
- // If this is a primitive just use the primitive.
- if to.subschemas.is_none() && to.object.is_none() && to.reference.is_none() {
- return Ok(t.clone());
- }
-
- // Otherwise append the metadata to our reference.
- if let Some(metadata) = obj.metadata.as_mut() {
- if metadata.description.is_none() {
- metadata.description = to.metadata.as_ref().and_then(|m| m.description.clone());
- }
- } else {
- obj.metadata = to.metadata.clone();
- }
-
- let obj = cleanup_type_description(&obj)
- .map_err(|e| anyhow::anyhow!("Failed to cleanup type description for type `{}`: {}", name, e))?;
- return Ok(schemars::schema::Schema::Object(obj));
- }
-
- let mut obj = o.clone();
-
- // If we have an object iterate over the properties and recursively create references.
- if let Some(object) = &mut obj.object {
- for (_, value) in object.properties.iter_mut() {
- let new_value = recurse_and_create_references(name, value, types)?;
- *value = new_value;
- }
- }
-
- // If we have an array iterate over the items and recursively create references.
- if let Some(array) = &mut obj.array {
- if let Some(items) = &mut array.items {
- match items {
- schemars::schema::SingleOrVec::Single(item) => {
- let new_item = recurse_and_create_references(name, item, types)?;
- *item = Box::new(new_item);
- }
- schemars::schema::SingleOrVec::Vec(items) => {
- for item in items {
- let new_item = recurse_and_create_references(name, item, types)?;
- *item = new_item;
- }
- }
- }
- }
- }
-
- // If we have subschemas iterate over them and recursively create references.
- if let Some(subschema) = &mut obj.subschemas {
- // Do anyOf.
- if let Some(any_of) = &mut subschema.any_of {
- // If we only have one item in anyOf we can just return that item.
- if any_of.len() == 1 {
- let mut new_item = recurse_and_create_references(name, &any_of[0], types)?;
- if let schemars::schema::Schema::Object(new_obj) = &mut new_item {
- if let Some(metadata) = new_obj.metadata.as_mut() {
- metadata.description = obj.metadata.as_ref().and_then(|m| m.description.clone());
- } else {
- new_obj.metadata = obj.metadata.clone();
- }
- }
- return Ok(new_item);
- }
- for item in any_of {
- let new_item = recurse_and_create_references(name, item, types)?;
- *item = new_item;
- }
- }
-
- // Do allOf.
- if let Some(all_of) = &mut subschema.all_of {
- // If we only have one item in allOf we can just return that item.
- if all_of.len() == 1 {
- let mut new_item = recurse_and_create_references(name, &all_of[0], types)?;
- if let schemars::schema::Schema::Object(new_obj) = &mut new_item {
- if let Some(metadata) = new_obj.metadata.as_mut() {
- metadata.description = obj.metadata.as_ref().and_then(|m| m.description.clone());
- } else {
- new_obj.metadata = obj.metadata.clone();
- }
- }
- return Ok(new_item);
- }
- for item in all_of {
- let new_item = recurse_and_create_references(name, item, types)?;
- *item = new_item;
- }
- }
-
- // Do oneOf.
- if let Some(one_of) = &mut subschema.one_of {
- // If we only have one item in oneOf we can just return that item.
- if one_of.len() == 1 {
- let mut new_item = recurse_and_create_references(name, &one_of[0], types)?;
- if let schemars::schema::Schema::Object(new_obj) = &mut new_item {
- if let Some(metadata) = new_obj.metadata.as_mut() {
- metadata.description = obj.metadata.as_ref().and_then(|m| m.description.clone());
- } else {
- new_obj.metadata = obj.metadata.clone();
- }
- }
- return Ok(new_item);
- }
- for item in one_of {
- let new_item = recurse_and_create_references(name, item, types)?;
- *item = new_item;
- }
- }
-
- if subschema.one_of.is_none() && subschema.all_of.is_none() && subschema.any_of.is_none() && obj.array.is_none()
- {
- if let Some(SingleOrVec::Single(_)) = &o.instance_type {
- return Ok(schema.clone());
- }
- }
- }
-
- let obj = cleanup_type_description(&obj)
- .map_err(|e| anyhow::anyhow!("Failed to cleanup type description for type `{}`: {}", name, e))?;
-
- Ok(schemars::schema::Schema::Object(obj.clone()))
-}
-
#[test]
fn test_generate_stdlib_markdown_docs() {
let stdlib = StdLib::new();
@@ -1137,25 +624,24 @@ fn test_generate_stdlib_markdown_docs() {
// Generate the index which is the table of contents.
generate_index(&combined, &kcl_std).unwrap();
- let mut types = BTreeMap::new();
for key in combined.keys().sorted() {
let internal_fn = combined.get(key).unwrap();
- let fn_types = generate_function(internal_fn.clone()).unwrap();
- types.extend(fn_types);
- }
-
- // Generate the type markdown files.
- for (name, schema) in &types {
- generate_type(name, schema, &types).unwrap();
+ generate_function(internal_fn.clone()).unwrap();
}
for d in &kcl_std {
match d {
- DocData::Fn(f) => generate_function_from_kcl(f, d.file_name()).unwrap(),
+ DocData::Fn(f) => generate_function_from_kcl(f, d.file_name(), d.example_name()).unwrap(),
DocData::Const(c) => generate_const_from_kcl(c, d.file_name(), d.example_name()).unwrap(),
DocData::Ty(t) => generate_type_from_kcl(t, d.file_name(), d.example_name()).unwrap(),
}
}
+
+ // Copy manually written docs to the output directory.
+ for entry in fs::read_dir("../../docs/kcl-src").unwrap() {
+ let path = entry.unwrap().path();
+ fs::copy(&path, Path::new("../../docs/kcl").join(path.file_name().unwrap())).unwrap();
+ }
}
#[test]
@@ -1185,8 +671,7 @@ fn test_generate_stdlib_json_schema() {
async fn test_code_in_topics() {
let mut join_set = JoinSet::new();
for name in LANG_TOPICS {
- let filename =
- format!("../../docs/kcl/{}.md", name.to_lowercase().replace(' ', "-")).replace("constants", "consts");
+ let filename = format!("../../docs/kcl/{}.md", name.to_lowercase().replace(' ', "-"));
let mut file = File::open(&filename).unwrap();
let mut text = String::new();
file.read_to_string(&mut text).unwrap();
diff --git a/rust/kcl-lib/src/docs/kcl_doc.rs b/rust/kcl-lib/src/docs/kcl_doc.rs
index a36ecde75..e01e8b72b 100644
--- a/rust/kcl-lib/src/docs/kcl_doc.rs
+++ b/rust/kcl-lib/src/docs/kcl_doc.rs
@@ -1,8 +1,4 @@
-use std::{
- collections::{HashMap, HashSet},
- fmt,
- str::FromStr,
-};
+use std::{collections::HashMap, fmt, str::FromStr};
use regex::Regex;
use tower_lsp::lsp_types::{
@@ -13,7 +9,7 @@ use tower_lsp::lsp_types::{
use crate::{
execution::annotations,
parsing::{
- ast::types::{Annotation, ImportSelector, ItemVisibility, Node, PrimitiveType, Type, VariableKind},
+ ast::types::{Annotation, ImportSelector, ItemVisibility, Node, VariableKind},
token::NumericSuffix,
},
ModuleId,
@@ -159,6 +155,15 @@ impl DocData {
}
}
+ #[allow(dead_code)]
+ pub fn preferred_name(&self) -> &str {
+ match self {
+ DocData::Fn(f) => &f.preferred_name,
+ DocData::Const(c) => &c.preferred_name,
+ DocData::Ty(t) => &t.preferred_name,
+ }
+ }
+
pub fn qual_name(&self) -> &str {
match self {
DocData::Fn(f) => &f.qual_name,
@@ -180,18 +185,18 @@ impl DocData {
#[allow(dead_code)]
pub fn file_name(&self) -> String {
match self {
- DocData::Fn(f) => f.qual_name.replace("::", "-"),
+ DocData::Fn(f) => format!("functions/{}", f.qual_name.replace("::", "-")),
DocData::Const(c) => format!("consts/{}", c.qual_name.replace("::", "-")),
- DocData::Ty(t) => format!("types/{}", t.name.clone()),
+ DocData::Ty(t) => format!("types/{}", t.qual_name.replace("::", "-")),
}
}
#[allow(dead_code)]
pub fn example_name(&self) -> String {
match self {
- DocData::Fn(f) => f.qual_name.replace("::", "-"),
+ DocData::Fn(f) => format!("fn_{}", f.qual_name.replace("::", "-")),
DocData::Const(c) => format!("const_{}", c.qual_name.replace("::", "-")),
- DocData::Ty(t) => t.name.clone(),
+ DocData::Ty(t) => format!("ty_{}", t.qual_name.replace("::", "-")),
}
}
@@ -400,8 +405,6 @@ pub struct FnData {
/// Code examples.
/// These are tested and we know they compile and execute.
pub examples: Vec<(String, ExampleProperties)>,
- #[allow(dead_code)]
- pub referenced_types: Vec,
pub module_name: String,
}
@@ -420,16 +423,6 @@ impl FnData {
let name = var.declaration.id.name.clone();
qual_name.push_str(&name);
- let mut referenced_types = HashSet::new();
- if let Some(t) = &expr.return_type {
- collect_type_names(&mut referenced_types, t);
- }
- for p in &expr.params {
- if let Some(t) = &p.type_ {
- collect_type_names(&mut referenced_types, t);
- }
- }
-
FnData {
preferred_name: format!("{preferred_prefix}{name}"),
name,
@@ -445,7 +438,6 @@ impl FnData {
summary: None,
description: None,
examples: Vec::new(),
- referenced_types: referenced_types.into_iter().collect(),
module_name: module_name.to_owned(),
}
}
@@ -726,8 +718,6 @@ pub struct TyData {
/// Code examples.
/// These are tested and we know they compile and execute.
pub examples: Vec<(String, ExampleProperties)>,
- #[allow(dead_code)]
- pub referenced_types: Vec,
pub module_name: String,
}
@@ -741,10 +731,6 @@ impl TyData {
) -> Self {
let name = ty.name.name.clone();
qual_name.push_str(&name);
- let mut referenced_types = HashSet::new();
- if let Some(t) = &ty.alias {
- collect_type_names(&mut referenced_types, t);
- }
TyData {
preferred_name: format!("{preferred_prefix}{name}"),
@@ -760,7 +746,6 @@ impl TyData {
summary: None,
description: None,
examples: Vec::new(),
- referenced_types: referenced_types.into_iter().collect(),
module_name: module_name.to_owned(),
}
}
@@ -1056,35 +1041,6 @@ impl ApplyMeta for ArgData {
}
}
-fn collect_type_names(acc: &mut HashSet, ty: &Type) {
- match ty {
- Type::Primitive(primitive_type) => {
- acc.insert(collect_type_names_from_primitive(primitive_type));
- }
- Type::Array { ty, .. } => {
- collect_type_names(acc, ty);
- }
- Type::Union { tys } => tys.iter().for_each(|t| {
- acc.insert(collect_type_names_from_primitive(t));
- }),
- Type::Object { properties } => properties.iter().for_each(|p| {
- if let Some(t) = &p.type_ {
- collect_type_names(acc, t)
- }
- }),
- }
-}
-
-fn collect_type_names_from_primitive(ty: &PrimitiveType) -> String {
- match ty {
- PrimitiveType::String => "string".to_owned(),
- PrimitiveType::Number(_) => "number".to_owned(),
- PrimitiveType::Boolean => "bool".to_owned(),
- PrimitiveType::Tag => "tag".to_owned(),
- PrimitiveType::Named(id) => id.name.clone(),
- }
-}
-
#[cfg(test)]
mod test {
use kcl_derive_docs::for_each_std_mod;
diff --git a/rust/kcl-lib/src/docs/templates/array.hbs b/rust/kcl-lib/src/docs/templates/array.hbs
deleted file mode 100644
index 3a1fcc1d5..000000000
--- a/rust/kcl-lib/src/docs/templates/array.hbs
+++ /dev/null
@@ -1 +0,0 @@
-{{~ #if maxItems ~}}{{~ #if (lte maxItems 3) ~}}`[{{#times maxItems ~}}{{~ #if @first ~}}{{else ~}}, {{/if ~}}{{> propertyType ../items}}{{/times}}]`{{else ~}}`[` {{ > propertyType items }} `]`{{~ /if ~}}{{else ~}}`[` {{ > propertyType items }} `]`{{~ /if ~}}
diff --git a/rust/kcl-lib/src/docs/templates/consts-index.hbs b/rust/kcl-lib/src/docs/templates/consts-index.hbs
deleted file mode 100644
index b489921d5..000000000
--- a/rust/kcl-lib/src/docs/templates/consts-index.hbs
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "KCL Constants"
-excerpt: "Documentation for the KCL constants."
-layout: manual
----
-
-## Table of Contents
-
-{{#each consts}}
-
-### `{{name}}`
-
-{{#each consts}}
-- [`{{name}}`](/docs/kcl/{{file_name}})
-{{/each}}
-{{/each}}
-
diff --git a/rust/kcl-lib/src/docs/templates/index.hbs b/rust/kcl-lib/src/docs/templates/index.hbs
index 40cfc6e09..f03800824 100644
--- a/rust/kcl-lib/src/docs/templates/index.hbs
+++ b/rust/kcl-lib/src/docs/templates/index.hbs
@@ -12,11 +12,31 @@ layout: manual
* [`{{name}}`](kcl/{{file_name}})
{{/each}}
-### Standard library
+### Functions
-{{#each modules}}
-* **{{name}}**
{{#each functions}}
+* **{{name}}**
+{{#each items}}
* [`{{name}}`](kcl/{{file_name}})
{{/each}}
{{/each}}
+
+### Constants
+
+{{#each consts}}
+* **{{name}}**
+{{#each items}}
+ * [`{{name}}`](kcl/{{file_name}})
+{{/each}}
+{{/each}}
+
+### Types
+
+See also the [types overview](types)
+
+{{#each types}}
+* **{{name}}**
+{{#each items}}
+ * [`{{name}}`](kcl/{{file_name}})
+{{/each}}
+{{/each}}
\ No newline at end of file
diff --git a/rust/kcl-lib/src/docs/templates/properties.hbs b/rust/kcl-lib/src/docs/templates/properties.hbs
deleted file mode 100644
index 283f68456..000000000
--- a/rust/kcl-lib/src/docs/templates/properties.hbs
+++ /dev/null
@@ -1,13 +0,0 @@
-{{#if properties}}
-{{#if @root.inDefinition}}
-#### Properties
-{{else}}
-## Properties
-{{/if}}
-
-| Property | Type | Description | Required |
-|----------|------|-------------|----------|
-{{#each properties}}
-| `{{@key}}` | {{~ > propertyType this ~}} | {{{firstLine this.description}}} | {{#if (lookup ../required @key)}}Yes{{else}}No{{/if}} |
-{{/each}}
-{{/if}}
diff --git a/rust/kcl-lib/src/docs/templates/propertyType.hbs b/rust/kcl-lib/src/docs/templates/propertyType.hbs
deleted file mode 100644
index 1c7064831..000000000
--- a/rust/kcl-lib/src/docs/templates/propertyType.hbs
+++ /dev/null
@@ -1,11 +0,0 @@
-{{~ #if $ref ~}}
-{{pretty_ref $ref}}{{else if anyOf ~}}
-**anyOf:** {{#each anyOf}}{{> propertyType this}}{{#unless @last}} **OR** {{/unless}}{{/each}}{{else if oneOf ~}}
-**oneOf:** {{#each oneOf}}{{> propertyType this}}{{#unless @last}} **OR** {{/unless}}{{/each}}{{else if allOf ~}}
-**allOf:** {{#each allOf}}{{> propertyType this}}{{#unless @last}} **OR** {{/unless}}{{/each}}{{else if enum ~}}
-enum: {{pretty_enum enum}}{{else if items ~}}
-{{~ >array ~}}{{else ~}}
-`{{type}}{{~ #if format }}{{#if neq format "double" }} ({{format}}){{~/if ~}}
-{{~ /if ~}}`
-{{~ #if maximum }} (**maximum:** {{maximum}}){{~/if~}}{{~ #if minimum }} (**minimum:** {{minimum}}){{~/if~}}
-{{~ /if ~}}
diff --git a/rust/kcl-lib/src/docs/templates/schema.hbs b/rust/kcl-lib/src/docs/templates/schema.hbs
deleted file mode 100644
index 6dca717f5..000000000
--- a/rust/kcl-lib/src/docs/templates/schema.hbs
+++ /dev/null
@@ -1,70 +0,0 @@
-{{#if description}}
-{{{description}}}
-{{/if}}
-
-{{#if $ref}}
-{{pretty_ref $ref}}
-{{else if enum}}
-**enum:** {{pretty_enum enum}}
-{{else if type}}
-**Type:** `{{type}}`{{~ #if format }} (`{{format}}`){{~/if ~}}{{~ #if maximum }} (**maximum:** {{maximum}}){{~/if~}}{{~ #if minimum }} (**minimum:** {{minimum}}){{~/if~}}
-{{else}}
-{{/if}}
-
-{{#if $schema}}
-**Schema:** `{{$schema}}`
-{{/if}}
-
-{{#if items}}
-{{>array}}
-{{/if}}
-
-{{#if anyOf}}
-**This schema accepts any of the following:**
-
-{{#each anyOf}}
-{{> schema this}}
-----
-{{/each}}
-{{/if}}
-
-{{#if oneOf}}
-**This schema accepts exactly one of the following:**
-
-{{#each oneOf}}
-{{> schema this}}
-----
-{{/each}}
-{{/if}}
-
-{{#if allOf}}
-**This schema requires all of the following:**
-
-{{#each allOf}}
-{{> schema this}}
-----
-{{/each}}
-{{/if}}
-
-{{> properties}}
-
-{{#if definitions}}
-## Definitions
-
-{{#each definitions}}
-### {{@key}}
-
-{{> schemaType this}}
-
-{{/each}}
-{{/if}}
-
-{{#if examples}}
-## Examples
-
-{{#each examples}}
-```json
-{{{json this}}}
-```
-{{/each}}
-{{/if}}
diff --git a/rust/kcl-lib/src/docs/templates/schemaType.hbs b/rust/kcl-lib/src/docs/templates/schemaType.hbs
deleted file mode 100644
index b28637518..000000000
--- a/rust/kcl-lib/src/docs/templates/schemaType.hbs
+++ /dev/null
@@ -1,19 +0,0 @@
-{{#if $ref}}
-{{pretty_ref $ref}}
-{{else if anyOf}}
-**anyOf**
-{{else if oneOf}}
-**oneOf**
-{{else if allOf}}
-**allOf**
-{{else if enum}}
-**enum:** {{pretty_enum enum}}
-{{else}}
-`{{type}}`{{
-#if
- format}} (`{{format}}`){{
-/if
-}}
-{{
-/if
-}}
diff --git a/rust/kcl-lib/src/docs/templates/type.hbs b/rust/kcl-lib/src/docs/templates/type.hbs
deleted file mode 100644
index 0a1050857..000000000
--- a/rust/kcl-lib/src/docs/templates/type.hbs
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: "{{title}}"
-excerpt: "{{safe_yaml description}}"
-layout: manual
----
-
-{{> schema this}}
diff --git a/rust/kcl-lib/src/execution/artifact.rs b/rust/kcl-lib/src/execution/artifact.rs
index 1bfa8f2d6..07e26df39 100644
--- a/rust/kcl-lib/src/execution/artifact.rs
+++ b/rust/kcl-lib/src/execution/artifact.rs
@@ -15,7 +15,7 @@ use uuid::Uuid;
use crate::{
errors::KclErrorDetails,
parsing::ast::types::{Node, Program},
- KclError, SourceRange,
+ KclError, NodePath, SourceRange,
};
#[cfg(test)]
@@ -120,6 +120,7 @@ where
#[serde(rename_all = "camelCase")]
pub struct CodeRef {
pub range: SourceRange,
+ pub node_path: NodePath,
// TODO: We should implement this in Rust.
#[serde(default, serialize_with = "serialize_dummy_path_to_node")]
#[ts(type = "Array<[string | number, string]>")]
@@ -130,6 +131,7 @@ impl CodeRef {
pub fn placeholder(range: SourceRange) -> Self {
Self {
range,
+ node_path: Default::default(),
path_to_node: Vec::new(),
}
}
@@ -780,6 +782,7 @@ fn flatten_modeling_command_responses(
| OkWebSocketResponseData::Export { .. }
| OkWebSocketResponseData::MetricsRequest { .. }
| OkWebSocketResponseData::ModelingSessionData { .. }
+ | OkWebSocketResponseData::Debug { .. }
| OkWebSocketResponseData::Pong { .. } => {}
}
}
@@ -824,15 +827,21 @@ fn artifacts_to_update(
artifact_command: &ArtifactCommand,
responses: &FnvHashMap,
path_to_plane_id_map: &FnvHashMap,
- _ast: &Node,
+ ast: &Node,
exec_artifacts: &IndexMap,
) -> Result, KclError> {
// TODO: Build path-to-node from artifact_command source range. Right now,
// we're serializing an empty array, and the TS wrapper fills it in with the
- // correct value.
+ // correct value based on NodePath.
let path_to_node = Vec::new();
-
let range = artifact_command.range;
+ let node_path = NodePath::from_range(ast, range).unwrap_or_default();
+ let code_ref = CodeRef {
+ range,
+ node_path,
+ path_to_node,
+ };
+
let uuid = artifact_command.cmd_id;
let id = ArtifactId::new(uuid);
@@ -854,7 +863,7 @@ fn artifacts_to_update(
return Ok(vec![Artifact::Plane(Plane {
id,
path_ids: Vec::new(),
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
})]);
}
ModelingCmd::EnableSketchMode(EnableSketchMode { entity_id, .. }) => {
@@ -890,7 +899,7 @@ fn artifacts_to_update(
return Ok(vec![Artifact::Plane(Plane {
id: entity_id.into(),
path_ids,
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
})]);
}
}
@@ -911,15 +920,15 @@ fn artifacts_to_update(
seg_ids: Vec::new(),
sweep_id: None,
solid2d_id: None,
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
}));
let plane = artifacts.get(&ArtifactId::new(*current_plane_id));
if let Some(Artifact::Plane(plane)) = plane {
- let code_ref = plane.code_ref.clone();
+ let plane_code_ref = plane.code_ref.clone();
return_arr.push(Artifact::Plane(Plane {
id: (*current_plane_id).into(),
path_ids: vec![id],
- code_ref,
+ code_ref: plane_code_ref,
}));
}
if let Some(Artifact::Wall(wall)) = plane {
@@ -959,7 +968,7 @@ fn artifacts_to_update(
surface_id: None,
edge_ids: Vec::new(),
edge_cut_id: None,
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
common_surface_ids: Vec::new(),
}));
let path = artifacts.get(&path_id);
@@ -1000,7 +1009,7 @@ fn artifacts_to_update(
path_id: target,
surface_ids: Vec::new(),
edge_ids: Vec::new(),
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
}));
let path = artifacts.get(&target);
if let Some(Artifact::Path(path)) = path {
@@ -1028,7 +1037,7 @@ fn artifacts_to_update(
})?),
surface_ids: Vec::new(),
edge_ids: Vec::new(),
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
}));
for section_id in &loft_cmd.section_ids {
let path = artifacts.get(&ArtifactId::new(*section_id));
@@ -1094,6 +1103,7 @@ fn artifacts_to_update(
path_ids: Vec::new(),
face_code_ref: CodeRef {
range: sketch_on_face_source_range,
+ node_path: NodePath::from_range(ast, sketch_on_face_source_range).unwrap_or_default(),
path_to_node: Vec::new(),
},
cmd_id: artifact_command.cmd_id,
@@ -1146,6 +1156,7 @@ fn artifacts_to_update(
path_ids: Vec::new(),
face_code_ref: CodeRef {
range: sketch_on_face_source_range,
+ node_path: NodePath::from_range(ast, sketch_on_face_source_range).unwrap_or_default(),
path_to_node: Vec::new(),
},
cmd_id: artifact_command.cmd_id,
@@ -1254,7 +1265,7 @@ fn artifacts_to_update(
consumed_edge_id: cmd.edge_id.into(),
edge_ids: Vec::new(),
surface_id: None,
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
}));
let consumed_edge = artifacts.get(&ArtifactId::new(cmd.edge_id));
if let Some(Artifact::Segment(consumed_edge)) = consumed_edge {
@@ -1270,7 +1281,7 @@ fn artifacts_to_update(
let return_arr = vec![Artifact::Helix(Helix {
id,
axis_id: None,
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
})];
return Ok(return_arr);
}
@@ -1279,7 +1290,7 @@ fn artifacts_to_update(
let return_arr = vec![Artifact::Helix(Helix {
id,
axis_id: Some(edge_id),
- code_ref: CodeRef { range, path_to_node },
+ code_ref,
})];
// We could add the reverse graph edge connecting from the edge to
// the helix here, but it's not useful right now.
@@ -1356,10 +1367,7 @@ fn artifacts_to_update(
sub_type,
solid_ids: solid_ids.clone(),
tool_ids: tool_ids.clone(),
- code_ref: CodeRef {
- range,
- path_to_node: path_to_node.clone(),
- },
+ code_ref: code_ref.clone(),
})
})
.collect::>();
diff --git a/rust/kcl-lib/src/execution/exec_ast.rs b/rust/kcl-lib/src/execution/exec_ast.rs
index e703bedb3..b6533fd11 100644
--- a/rust/kcl-lib/src/execution/exec_ast.rs
+++ b/rust/kcl-lib/src/execution/exec_ast.rs
@@ -2187,7 +2187,15 @@ fn assign_args_to_params_kw(
.mut_stack()
.add(param.identifier.name.clone(), arg_val, (¶m.identifier).into())?;
} else {
- let Some(unlabeled) = args.unlabeled.take() else {
+ // TODO: Get the actual source range.
+ // Part of https://github.com/KittyCAD/modeling-app/issues/6613
+ let pipe_value_source_range = Default::default();
+ let default_unlabeled = exec_state
+ .mod_local
+ .pipe_value
+ .clone()
+ .map(|val| Arg::new(val, pipe_value_source_range));
+ let Some(unlabeled) = args.unlabeled.take().or(default_unlabeled) else {
let param_name = ¶m.identifier.name;
return Err(if args.labeled.contains_key(param_name) {
KclError::Semantic(KclErrorDetails {
diff --git a/rust/kcl-lib/src/execution/geometry.rs b/rust/kcl-lib/src/execution/geometry.rs
index 6aeaed19c..5385addac 100644
--- a/rust/kcl-lib/src/execution/geometry.rs
+++ b/rust/kcl-lib/src/execution/geometry.rs
@@ -8,12 +8,11 @@ use parse_display::{Display, FromStr};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
-use crate::engine::{PlaneName, DEFAULT_PLANE_INFO};
-use crate::errors::KclErrorDetails;
#[cfg(feature = "artifact-graph")]
use crate::execution::ArtifactId;
use crate::{
- errors::KclError,
+ engine::{PlaneName, DEFAULT_PLANE_INFO},
+ errors::{KclError, KclErrorDetails},
execution::{types::NumericType, ExecState, ExecutorContext, Metadata, TagEngineInfo, TagIdentifier, UnitLen},
parsing::ast::types::{Node, NodeRef, TagDeclarator, TagNode},
std::{args::TyF64, sketch::PlaneData},
diff --git a/rust/kcl-lib/src/execution/mod.rs b/rust/kcl-lib/src/execution/mod.rs
index 5bd51ef47..d9686ec1c 100644
--- a/rust/kcl-lib/src/execution/mod.rs
+++ b/rust/kcl-lib/src/execution/mod.rs
@@ -1298,16 +1298,16 @@ mod tests {
#[tokio::test(flavor = "multi_thread")]
async fn test_execute_fn_definitions() {
- let ast = r#"fn def(x) {
+ let ast = r#"fn def(@x) {
return x
}
-fn ghi(x) {
+fn ghi(@x) {
return x
}
-fn jkl(x) {
+fn jkl(@x) {
return x
}
-fn hmm(x) {
+fn hmm(@x) {
return x
}
@@ -1408,7 +1408,7 @@ firstExtrude = startSketchOn(XY)
l = 8
h = 10
-fn thing(x) {
+fn thing(@x) {
return -x
}
@@ -1429,7 +1429,7 @@ firstExtrude = startSketchOn(XY)
l = 8
h = 10
-fn thing(x) {
+fn thing(@x) {
return [0, -x]
}
@@ -1450,11 +1450,11 @@ firstExtrude = startSketchOn(XY)
l = 8
h = 10
-fn other_thing(y) {
+fn other_thing(@y) {
return -y
}
-fn thing(x) {
+fn thing(@x) {
return other_thing(x)
}
@@ -1483,14 +1483,14 @@ firstExtrude = startSketchOn(XY)
return myBox
}
-fnBox = box(3, 6, 10)"#;
+fnBox = box(h = 3, l = 6, w = 10)"#;
parse_execute(ast).await.unwrap();
}
#[tokio::test(flavor = "multi_thread")]
async fn test_get_member_of_object_with_function_period() {
- let ast = r#"fn box(obj) {
+ let ast = r#"fn box(@obj) {
myBox = startSketchOn(XY)
|> startProfile(at = obj.start)
|> line(end = [0, obj.l])
@@ -1577,7 +1577,7 @@ for var in [[3, 6, 10, [0,0]], [1.5, 3, 5, [-10,-10]]] {
#[tokio::test(flavor = "multi_thread")]
async fn test_get_member_of_array_with_function() {
- let ast = r#"fn box(arr) {
+ let ast = r#"fn box(@arr) {
myBox =startSketchOn(XY)
|> startProfile(at = arr[0])
|> line(end = [0, arr[1]])
@@ -1623,7 +1623,7 @@ answer = returnX()"#;
#[tokio::test(flavor = "multi_thread")]
async fn type_aliases() {
let text = r#"type MyTy = [number; 2]
-fn foo(x: MyTy) {
+fn foo(@x: MyTy) {
return x[0]
}
@@ -1783,7 +1783,7 @@ fn check(x) {
assertIs(!x, error = "expected argument to be false")
return true
}
-check(false)
+check(x = false)
"#;
let result = parse_execute(ast).await.unwrap();
assert_eq!(
@@ -1961,7 +1961,7 @@ bracket = startSketchOn(XY)
#[tokio::test(flavor = "multi_thread")]
async fn test_execute_function_no_return() {
- let ast = r#"fn test(origin) {
+ let ast = r#"fn test(@origin) {
origin
}
@@ -2154,7 +2154,7 @@ w = f() + f()
#[tokio::test(flavor = "multi_thread")]
async fn read_tag_version() {
- let ast = r#"fn bar(t) {
+ let ast = r#"fn bar(@t) {
return startSketchOn(XY)
|> startProfile(at = [0,0])
|> angledLine(
diff --git a/rust/kcl-lib/src/lib.rs b/rust/kcl-lib/src/lib.rs
index b801ff322..9c6302e67 100644
--- a/rust/kcl-lib/src/lib.rs
+++ b/rust/kcl-lib/src/lib.rs
@@ -95,7 +95,7 @@ pub use lsp::{
kcl::{Backend as KclLspBackend, Server as KclLspServerSubCommand},
};
pub use modules::ModuleId;
-pub use parsing::ast::types::FormatOptions;
+pub use parsing::ast::types::{FormatOptions, NodePath};
pub use settings::types::{project::ProjectConfiguration, Configuration, UnitLength};
pub use source_range::SourceRange;
#[cfg(not(target_arch = "wasm32"))]
@@ -236,6 +236,10 @@ impl Program {
self.ast.lint(rule)
}
+ pub fn node_path_from_range(&self, range: SourceRange) -> Option {
+ NodePath::from_range(&self.ast, range)
+ }
+
pub fn recast(&self) -> String {
// Use the default options until we integrate into the UI the ability to change them.
self.ast.recast(&Default::default(), 0)
diff --git a/rust/kcl-lib/src/lint/checks/default_plane.rs b/rust/kcl-lib/src/lint/checks/default_plane.rs
index 90b18f6d4..267cb971e 100644
--- a/rust/kcl-lib/src/lint/checks/default_plane.rs
+++ b/rust/kcl-lib/src/lint/checks/default_plane.rs
@@ -2,13 +2,14 @@ use anyhow::Result;
use crate::{
errors::Suggestion,
- lint::rule::{def_finding, Discovered, Finding},
+ lint::{
+ checks::offset_plane::start_sketch_on_check_specific_plane,
+ rule::{def_finding, Discovered, Finding},
+ },
parsing::ast::types::{Node as AstNode, Program},
walk::Node,
};
-use super::offset_plane::start_sketch_on_check_specific_plane;
-
def_finding!(
Z0002,
"default plane should be called versus explicitly defined",
diff --git a/rust/kcl-lib/src/lint/checks/offset_plane.rs b/rust/kcl-lib/src/lint/checks/offset_plane.rs
index fa5d670bd..67f7d49d1 100644
--- a/rust/kcl-lib/src/lint/checks/offset_plane.rs
+++ b/rust/kcl-lib/src/lint/checks/offset_plane.rs
@@ -5,7 +5,10 @@ use crate::{
errors::Suggestion,
execution::{types::UnitLen, PlaneInfo, Point3d},
lint::rule::{def_finding, Discovered, Finding},
- parsing::ast::types::{BinaryPart, Expr, LiteralValue, Node as AstNode, ObjectExpression, Program, UnaryOperator},
+ parsing::ast::types::{
+ BinaryPart, CallExpression, CallExpressionKw, Expr, LiteralValue, Node as AstNode, ObjectExpression, Program,
+ UnaryOperator,
+ },
walk::Node,
SourceRange,
};
@@ -124,10 +127,16 @@ fn get_offset(info: &PlaneInfo) -> Option {
}
pub fn start_sketch_on_check_specific_plane(node: Node) -> Result> {
- let Node::CallExpression(call) = node else {
- return Ok(None);
- };
+ match node {
+ Node::CallExpression(node) => start_sketch_on_check_specific_plane_pos(node),
+ Node::CallExpressionKw(node) => start_sketch_on_check_specific_plane_kw(node),
+ _ => Ok(None),
+ }
+}
+pub fn start_sketch_on_check_specific_plane_pos(
+ call: &AstNode,
+) -> Result> {
if call.inner.callee.inner.name.name != "startSketchOn" {
return Ok(None);
}
@@ -147,7 +156,34 @@ pub fn start_sketch_on_check_specific_plane(node: Node) -> Result ,
+) -> Result > {
+ if call.inner.callee.inner.name.name != "startSketchOn" {
+ return Ok(None);
+ }
+
+ let Some(ref unlabeled) = call.inner.unlabeled else {
+ // we only look for single-argument object patterns, if there's more
+ // than that we don't have a plane decl
+ return Ok(None);
+ };
+
+ let call_source_range = SourceRange::new(unlabeled.start(), unlabeled.end(), unlabeled.module_id());
+
+ let Expr::ObjectExpression(arg) = &unlabeled else {
+ return Ok(None);
+ };
+ common(arg, call_source_range)
+}
+
+pub fn common(
+ arg: &AstNode,
+ call_source_range: SourceRange,
+) -> Result> {
let mut origin: Option = None;
let mut x_vec: Option = None;
let mut y_vec: Option = None;
diff --git a/rust/kcl-lib/src/lsp/kcl/mod.rs b/rust/kcl-lib/src/lsp/kcl/mod.rs
index 9f46643b4..90b09e802 100644
--- a/rust/kcl-lib/src/lsp/kcl/mod.rs
+++ b/rust/kcl-lib/src/lsp/kcl/mod.rs
@@ -18,23 +18,24 @@ use tower_lsp::{
jsonrpc::Result as RpcResult,
lsp_types::{
CodeAction, CodeActionKind, CodeActionOptions, CodeActionOrCommand, CodeActionParams,
- CodeActionProviderCapability, CodeActionResponse, CompletionItem, CompletionItemKind, CompletionOptions,
- CompletionParams, CompletionResponse, CreateFilesParams, DeleteFilesParams, Diagnostic, DiagnosticOptions,
+ CodeActionProviderCapability, CodeActionResponse, ColorInformation, ColorPresentation, ColorPresentationParams,
+ ColorProviderCapability, CompletionItem, CompletionItemKind, CompletionOptions, CompletionParams,
+ CompletionResponse, CreateFilesParams, DeleteFilesParams, Diagnostic, DiagnosticOptions,
DiagnosticServerCapabilities, DiagnosticSeverity, DidChangeConfigurationParams, DidChangeTextDocumentParams,
DidChangeWatchedFilesParams, DidChangeWorkspaceFoldersParams, DidCloseTextDocumentParams,
- DidOpenTextDocumentParams, DidSaveTextDocumentParams, DocumentDiagnosticParams, DocumentDiagnosticReport,
- DocumentDiagnosticReportResult, DocumentFilter, DocumentFormattingParams, DocumentSymbol, DocumentSymbolParams,
- DocumentSymbolResponse, Documentation, FoldingRange, FoldingRangeParams, FoldingRangeProviderCapability,
- FullDocumentDiagnosticReport, Hover as LspHover, HoverContents, HoverParams, HoverProviderCapability,
- InitializeParams, InitializeResult, InitializedParams, InlayHint, InlayHintParams, InsertTextFormat,
- MarkupContent, MarkupKind, MessageType, OneOf, Position, RelatedFullDocumentDiagnosticReport,
- RenameFilesParams, RenameParams, SemanticToken, SemanticTokenModifier, SemanticTokenType, SemanticTokens,
- SemanticTokensFullOptions, SemanticTokensLegend, SemanticTokensOptions, SemanticTokensParams,
- SemanticTokensRegistrationOptions, SemanticTokensResult, SemanticTokensServerCapabilities, ServerCapabilities,
- SignatureHelp, SignatureHelpOptions, SignatureHelpParams, StaticRegistrationOptions, TextDocumentItem,
- TextDocumentRegistrationOptions, TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions,
- TextEdit, WorkDoneProgressOptions, WorkspaceEdit, WorkspaceFolder, WorkspaceFoldersServerCapabilities,
- WorkspaceServerCapabilities,
+ DidOpenTextDocumentParams, DidSaveTextDocumentParams, DocumentColorParams, DocumentDiagnosticParams,
+ DocumentDiagnosticReport, DocumentDiagnosticReportResult, DocumentFilter, DocumentFormattingParams,
+ DocumentSymbol, DocumentSymbolParams, DocumentSymbolResponse, Documentation, FoldingRange, FoldingRangeParams,
+ FoldingRangeProviderCapability, FullDocumentDiagnosticReport, Hover as LspHover, HoverContents, HoverParams,
+ HoverProviderCapability, InitializeParams, InitializeResult, InitializedParams, InlayHint, InlayHintParams,
+ InsertTextFormat, MarkupContent, MarkupKind, MessageType, OneOf, Position, PrepareRenameResponse,
+ RelatedFullDocumentDiagnosticReport, RenameFilesParams, RenameParams, SemanticToken, SemanticTokenModifier,
+ SemanticTokenType, SemanticTokens, SemanticTokensFullOptions, SemanticTokensLegend, SemanticTokensOptions,
+ SemanticTokensParams, SemanticTokensRegistrationOptions, SemanticTokensResult,
+ SemanticTokensServerCapabilities, ServerCapabilities, SignatureHelp, SignatureHelpOptions, SignatureHelpParams,
+ StaticRegistrationOptions, TextDocumentItem, TextDocumentPositionParams, TextDocumentRegistrationOptions,
+ TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions, TextEdit, WorkDoneProgressOptions,
+ WorkspaceEdit, WorkspaceFolder, WorkspaceFoldersServerCapabilities, WorkspaceServerCapabilities,
},
Client, LanguageServer,
};
@@ -532,6 +533,23 @@ impl Backend {
return Ok(false);
}
}
+ crate::walk::Node::CallExpressionKw(call_expr) => {
+ let sr: SourceRange = (&call_expr.callee).into();
+ if sr.contains(source_range.start()) {
+ let mut ti = token_index.lock().map_err(|_| anyhow::anyhow!("mutex"))?;
+ *ti = match self.get_semantic_token_type_index(&SemanticTokenType::FUNCTION) {
+ Some(index) => index,
+ None => token_type_index,
+ };
+
+ if self.stdlib_completions.contains_key(&call_expr.callee.name.name) {
+ // This is a stdlib function.
+ return get_modifier(vec![SemanticTokenModifier::DEFAULT_LIBRARY]);
+ }
+
+ return Ok(false);
+ }
+ }
_ => {}
}
Ok(true)
@@ -827,6 +845,39 @@ impl Backend {
Ok(custom_notifications::UpdateCanExecuteResponse {})
}
+
+ /// Returns the new string for the code after rename.
+ pub fn inner_prepare_rename(
+ &self,
+ params: &TextDocumentPositionParams,
+ new_name: &str,
+ ) -> RpcResult> {
+ let filename = params.text_document.uri.to_string();
+
+ let Some(current_code) = self.code_map.get(&filename) else {
+ return Ok(None);
+ };
+ let Ok(current_code) = std::str::from_utf8(¤t_code) else {
+ return Ok(None);
+ };
+
+ // Parse the ast.
+ // I don't know if we need to do this again since it should be updated in the context.
+ // But I figure better safe than sorry since this will write back out to the file.
+ let module_id = ModuleId::default();
+ let Ok(mut ast) = crate::parsing::parse_str(current_code, module_id).parse_errs_as_err() else {
+ return Ok(None);
+ };
+
+ // Let's convert the position to a character index.
+ let pos = position_to_char_index(params.position, current_code);
+ // Now let's perform the rename on the ast.
+ ast.rename_symbol(new_name, pos);
+ // Now recast it.
+ let recast = ast.recast(&Default::default(), 0);
+
+ Ok(Some((current_code.to_string(), recast)))
+ }
}
#[tower_lsp::async_trait]
@@ -838,6 +889,7 @@ impl LanguageServer for Backend {
Ok(InitializeResult {
capabilities: ServerCapabilities {
+ color_provider: Some(ColorProviderCapability::Simple(true)),
code_action_provider: Some(CodeActionProviderCapability::Options(CodeActionOptions {
code_action_kinds: Some(vec![CodeActionKind::QUICKFIX]),
resolve_provider: Some(false),
@@ -1459,36 +1511,19 @@ impl LanguageServer for Backend {
}
async fn rename(&self, params: RenameParams) -> RpcResult > {
- let filename = params.text_document_position.text_document.uri.to_string();
-
- let Some(current_code) = self.code_map.get(&filename) else {
- return Ok(None);
- };
- let Ok(current_code) = std::str::from_utf8(¤t_code) else {
+ let Some((current_code, new_code)) =
+ self.inner_prepare_rename(¶ms.text_document_position, ¶ms.new_name)?
+ else {
return Ok(None);
};
- // Parse the ast.
- // I don't know if we need to do this again since it should be updated in the context.
- // But I figure better safe than sorry since this will write back out to the file.
- let module_id = ModuleId::default();
- let Ok(mut ast) = crate::parsing::parse_str(current_code, module_id).parse_errs_as_err() else {
- return Ok(None);
- };
-
- // Let's convert the position to a character index.
- let pos = position_to_char_index(params.text_document_position.position, current_code);
- // Now let's perform the rename on the ast.
- ast.rename_symbol(¶ms.new_name, pos);
- // Now recast it.
- let recast = ast.recast(&Default::default(), 0);
- let source_range = SourceRange::new(0, current_code.len(), module_id);
- let range = source_range.to_lsp_range(current_code);
+ let source_range = SourceRange::new(0, current_code.len(), ModuleId::default());
+ let range = source_range.to_lsp_range(¤t_code);
Ok(Some(WorkspaceEdit {
changes: Some(HashMap::from([(
params.text_document_position.text_document.uri,
vec![TextEdit {
- new_text: recast,
+ new_text: new_code,
range,
}],
)])),
@@ -1497,6 +1532,18 @@ impl LanguageServer for Backend {
}))
}
+ async fn prepare_rename(&self, params: TextDocumentPositionParams) -> RpcResult > {
+ if self
+ .inner_prepare_rename(¶ms, "someNameNoOneInTheirRightMindWouldEverUseForTesting")?
+ .is_none()
+ {
+ return Ok(None);
+ }
+
+ // Return back to the client, that it is safe to use the rename behavior.
+ Ok(Some(PrepareRenameResponse::DefaultBehavior { default_behavior: true }))
+ }
+
async fn folding_range(&self, params: FoldingRangeParams) -> RpcResult >> {
let filename = params.text_document.uri.to_string();
@@ -1552,6 +1599,55 @@ impl LanguageServer for Backend {
Ok(Some(actions))
}
+
+ async fn document_color(&self, params: DocumentColorParams) -> RpcResult> {
+ let filename = params.text_document.uri.to_string();
+
+ let Some(current_code) = self.code_map.get(&filename) else {
+ return Ok(vec![]);
+ };
+ let Ok(current_code) = std::str::from_utf8(¤t_code) else {
+ return Ok(vec![]);
+ };
+
+ // Get the ast from our map.
+ let Some(ast) = self.ast_map.get(&filename) else {
+ return Ok(vec![]);
+ };
+
+ // Get the colors from the ast.
+ let Ok(colors) = ast.ast.document_color(current_code) else {
+ return Ok(vec![]);
+ };
+
+ Ok(colors)
+ }
+
+ async fn color_presentation(&self, params: ColorPresentationParams) -> RpcResult> {
+ let filename = params.text_document.uri.to_string();
+
+ let Some(current_code) = self.code_map.get(&filename) else {
+ return Ok(vec![]);
+ };
+ let Ok(current_code) = std::str::from_utf8(¤t_code) else {
+ return Ok(vec![]);
+ };
+
+ // Get the ast from our map.
+ let Some(ast) = self.ast_map.get(&filename) else {
+ return Ok(vec![]);
+ };
+
+ let pos_start = position_to_char_index(params.range.start, current_code);
+ let pos_end = position_to_char_index(params.range.end, current_code);
+
+ // Get the colors from the ast.
+ let Ok(Some(presentation)) = ast.ast.color_presentation(¶ms.color, pos_start, pos_end) else {
+ return Ok(vec![]);
+ };
+
+ Ok(vec![presentation])
+ }
}
/// Get completions from our stdlib.
@@ -1662,3 +1758,48 @@ async fn with_cached_var(name: &str, f: impl Fn(&KclValue) -> T) -> Option
Some(f(value))
}
+
+#[cfg(test)]
+mod tests {
+ use pretty_assertions::assert_eq;
+
+ use super::*;
+
+ #[test]
+ fn test_position_to_char_index_first_line() {
+ let code = r#"def foo():
+return 42"#;
+ let position = Position::new(0, 3);
+ let index = position_to_char_index(position, code);
+ assert_eq!(index, 3);
+ }
+
+ #[test]
+ fn test_position_to_char_index() {
+ let code = r#"def foo():
+return 42"#;
+ let position = Position::new(1, 4);
+ let index = position_to_char_index(position, code);
+ assert_eq!(index, 15);
+ }
+
+ #[test]
+ fn test_position_to_char_index_with_newline() {
+ let code = r#"def foo():
+
+return 42"#;
+ let position = Position::new(2, 0);
+ let index = position_to_char_index(position, code);
+ assert_eq!(index, 12);
+ }
+
+ #[test]
+ fn test_position_to_char_at_end() {
+ let code = r#"def foo():
+return 42"#;
+
+ let position = Position::new(1, 8);
+ let index = position_to_char_index(position, code);
+ assert_eq!(index, 19);
+ }
+}
diff --git a/rust/kcl-lib/src/lsp/tests.rs b/rust/kcl-lib/src/lsp/tests.rs
index 0883fa059..3c659a7c8 100644
--- a/rust/kcl-lib/src/lsp/tests.rs
+++ b/rust/kcl-lib/src/lsp/tests.rs
@@ -3,8 +3,8 @@ use std::collections::{BTreeMap, HashMap};
use pretty_assertions::assert_eq;
use tower_lsp::{
lsp_types::{
- CodeActionKind, CodeActionOrCommand, Diagnostic, SemanticTokenModifier, SemanticTokenType, TextEdit,
- WorkspaceEdit,
+ CodeActionKind, CodeActionOrCommand, Diagnostic, PrepareRenameResponse, SemanticTokenModifier,
+ SemanticTokenType, TextEdit, WorkspaceEdit,
},
LanguageServer,
};
@@ -895,7 +895,7 @@ async fn test_kcl_lsp_on_hover() {
foo = 42
foo
-fn bar(x: string): string {
+fn bar(@x: string): string {
return x
}
@@ -971,7 +971,7 @@ startSketchOn(XY)
match hover.unwrap().contents {
tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => {
- assert!(value.contains("bar(x: string): string"));
+ assert!(value.contains("bar(@x: string): string"));
}
_ => unreachable!(),
}
@@ -1016,7 +1016,7 @@ startSketchOn(XY)
match hover.unwrap().contents {
tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => {
- assert!(value.contains("end?: [number]"));
+ assert!(value.contains("end?: Point2d"));
assert!(value.contains("How far away (along the X and Y axes) should this line go?"));
}
_ => unreachable!(),
@@ -2027,7 +2027,7 @@ insideRevolve = startSketchOn(XZ)
|> line(end = [0, -thickness])
|> line(end = [-overHangLength, 0])
|> close()
- |> revolve({ axis = Y }, %)
+ |> revolve(axis = Y)
// Sketch and revolve one of the balls and duplicate it using a circular pattern. (This is currently a workaround, we have a bug with rotating on a sketch that touches the rotation axis)
sphere = startSketchOn(XZ)
@@ -2035,7 +2035,7 @@ sphere = startSketchOn(XZ)
|> line(end = [sphereDia - 0.1, 0])
|> arc(angle_start = 0, angle_end = -180, radius = sphereDia / 2 - 0.05)
|> close()
- |> revolve({ axis = X }, %)
+ |> revolve(axis = X)
|> patternCircular3d(
axis = [0, 0, 1],
center = [0, 0, 0],
@@ -2056,7 +2056,7 @@ outsideRevolve = startSketchOn(XZ)
|> line(end = [0, thickness])
|> line(end = [overHangLength - thickness, 0])
|> close()
- |> revolve({ axis = Y }, %)"#
+ |> revolve(axis = Y)"#
.to_string(),
},
})
@@ -2090,7 +2090,7 @@ outsideRevolve = startSketchOn(XZ)
start: tower_lsp::lsp_types::Position { line: 0, character: 0 },
end: tower_lsp::lsp_types::Position {
line: 50,
- character: 29
+ character: 22
}
}
);
@@ -2117,7 +2117,7 @@ insideRevolve = startSketchOn(XZ)
|> line(end = [0, -thickness])
|> line(end = [-overHangLength, 0])
|> close()
- |> revolve({ axis = Y }, %)
+ |> revolve(axis = Y)
// Sketch and revolve one of the balls and duplicate it using a circular pattern. (This is currently a workaround, we have a bug with rotating on a sketch that touches the rotation axis)
sphere = startSketchOn(XZ)
@@ -2128,7 +2128,7 @@ sphere = startSketchOn(XZ)
|> line(end = [sphereDia - 0.1, 0])
|> arc(angle_start = 0, angle_end = -180, radius = sphereDia / 2 - 0.05)
|> close()
- |> revolve({ axis = X }, %)
+ |> revolve(axis = X)
|> patternCircular3d(
axis = [0, 0, 1],
center = [0, 0, 0],
@@ -2152,7 +2152,7 @@ outsideRevolve = startSketchOn(XZ)
|> line(end = [0, thickness])
|> line(end = [overHangLength - thickness, 0])
|> close()
- |> revolve({ axis = Y }, %)"#
+ |> revolve(axis = Y)"#
);
}
@@ -3891,7 +3891,7 @@ async fn test_kcl_lsp_on_hover_untitled_file_scheme() {
foo = 42
foo
-fn bar(x: string): string {
+fn bar(@x: string): string {
return x
}
@@ -3967,7 +3967,7 @@ startSketchOn(XY)
match hover.unwrap().contents {
tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => {
- assert!(value.contains("bar(x: string): string"));
+ assert!(value.contains("bar(@x: string): string"));
}
_ => unreachable!(),
}
@@ -4012,7 +4012,7 @@ startSketchOn(XY)
match hover.unwrap().contents {
tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => {
- assert!(value.contains("end?: [number]"));
+ assert!(value.contains("end?: Point2d"));
assert!(value.contains("How far away (along the X and Y axes) should this line go?"));
}
_ => unreachable!(),
@@ -4146,3 +4146,173 @@ async fn kcl_test_kcl_lsp_code_actions_lint_offset_planes() {
})
);
}
+
+#[tokio::test(flavor = "multi_thread")]
+async fn test_kcl_lsp_prepare_rename() {
+ let server = kcl_lsp_server(false).await.unwrap();
+
+ // Send open file.
+ server
+ .did_open(tower_lsp::lsp_types::DidOpenTextDocumentParams {
+ text_document: tower_lsp::lsp_types::TextDocumentItem {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ language_id: "kcl".to_string(),
+ version: 1,
+ text: r#"thing= 1"#.to_string(),
+ },
+ })
+ .await;
+
+ // Send rename request.
+ let result = server
+ .prepare_rename(tower_lsp::lsp_types::TextDocumentPositionParams {
+ text_document: tower_lsp::lsp_types::TextDocumentIdentifier {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ },
+ position: tower_lsp::lsp_types::Position { line: 0, character: 2 },
+ })
+ .await
+ .unwrap()
+ .unwrap();
+
+ // Check the result.
+ assert_eq!(
+ result,
+ PrepareRenameResponse::DefaultBehavior { default_behavior: true }
+ );
+}
+
+#[tokio::test(flavor = "multi_thread")]
+async fn test_kcl_lsp_document_color() {
+ let server = kcl_lsp_server(false).await.unwrap();
+
+ // Send open file.
+ server
+ .did_open(tower_lsp::lsp_types::DidOpenTextDocumentParams {
+ text_document: tower_lsp::lsp_types::TextDocumentItem {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ language_id: "kcl".to_string(),
+ version: 1,
+ text: r#"// Add color to a revolved solid.
+sketch001 = startSketchOn(XY)
+ |> circle(center = [15, 0], radius = 5)
+ |> revolve(angle = 360, axis = Y)
+ |> appearance(color = '#ff0000', metalness = 90, roughness = 90)"#
+ .to_string(),
+ },
+ })
+ .await;
+
+ // Send document color request.
+ let result = server
+ .document_color(tower_lsp::lsp_types::DocumentColorParams {
+ text_document: tower_lsp::lsp_types::TextDocumentIdentifier {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ },
+ work_done_progress_params: Default::default(),
+ partial_result_params: Default::default(),
+ })
+ .await
+ .unwrap();
+
+ // Check the result.
+ assert_eq!(
+ result,
+ vec![tower_lsp::lsp_types::ColorInformation {
+ range: tower_lsp::lsp_types::Range {
+ start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
+ end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
+ },
+ color: tower_lsp::lsp_types::Color {
+ red: 1.0,
+ green: 0.0,
+ blue: 0.0,
+ alpha: 1.0,
+ },
+ }]
+ );
+}
+
+#[tokio::test(flavor = "multi_thread")]
+async fn test_kcl_lsp_color_presentation() {
+ let server = kcl_lsp_server(false).await.unwrap();
+
+ let text = r#"// Add color to a revolved solid.
+sketch001 = startSketchOn(XY)
+ |> circle(center = [15, 0], radius = 5)
+ |> revolve(angle = 360, axis = Y)
+ |> appearance(color = '#ff0000', metalness = 90, roughness = 90)"#;
+
+ // Send open file.
+ server
+ .did_open(tower_lsp::lsp_types::DidOpenTextDocumentParams {
+ text_document: tower_lsp::lsp_types::TextDocumentItem {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ language_id: "kcl".to_string(),
+ version: 1,
+ text: text.to_string(),
+ },
+ })
+ .await;
+
+ // Send document color request.
+ let result = server
+ .document_color(tower_lsp::lsp_types::DocumentColorParams {
+ text_document: tower_lsp::lsp_types::TextDocumentIdentifier {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ },
+ work_done_progress_params: Default::default(),
+ partial_result_params: Default::default(),
+ })
+ .await
+ .unwrap();
+
+ // Check the result.
+ assert_eq!(
+ result,
+ vec![tower_lsp::lsp_types::ColorInformation {
+ range: tower_lsp::lsp_types::Range {
+ start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
+ end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
+ },
+ color: tower_lsp::lsp_types::Color {
+ red: 1.0,
+ green: 0.0,
+ blue: 0.0,
+ alpha: 1.0,
+ },
+ }]
+ );
+
+ // Send color presentation request.
+ let result = server
+ .color_presentation(tower_lsp::lsp_types::ColorPresentationParams {
+ text_document: tower_lsp::lsp_types::TextDocumentIdentifier {
+ uri: "file:///test.kcl".try_into().unwrap(),
+ },
+ range: tower_lsp::lsp_types::Range {
+ start: tower_lsp::lsp_types::Position { line: 4, character: 24 },
+ end: tower_lsp::lsp_types::Position { line: 4, character: 33 },
+ },
+ color: tower_lsp::lsp_types::Color {
+ red: 1.0,
+ green: 0.0,
+ blue: 1.0,
+ alpha: 1.0,
+ },
+ work_done_progress_params: Default::default(),
+ partial_result_params: Default::default(),
+ })
+ .await
+ .unwrap();
+
+ // Check the result.
+ assert_eq!(
+ result,
+ vec![tower_lsp::lsp_types::ColorPresentation {
+ label: "#ff00ff".to_string(),
+ text_edit: None,
+ additional_text_edits: None,
+ }]
+ );
+}
diff --git a/rust/kcl-lib/src/parsing/ast/digest.rs b/rust/kcl-lib/src/parsing/ast/digest.rs
index f2d27661e..96bceee1e 100644
--- a/rust/kcl-lib/src/parsing/ast/digest.rs
+++ b/rust/kcl-lib/src/parsing/ast/digest.rs
@@ -529,13 +529,13 @@ mod test {
async fn test_parse_digest() {
let prog1_string = r#"startSketchOn(XY)
|> startProfile(at = [0, 0])
- |> line([5, 5], %)
+ |> line([5, 5])
"#;
let prog1_digest = crate::parsing::top_level_parse(prog1_string).unwrap().compute_digest();
let prog2_string = r#"startSketchOn(XY)
|> startProfile(at = [0, 2])
- |> line([5, 5], %)
+ |> line([5, 5])
"#;
let prog2_digest = crate::parsing::top_level_parse(prog2_string).unwrap().compute_digest();
@@ -543,7 +543,7 @@ mod test {
let prog3_string = r#"startSketchOn(XY)
|> startProfile(at = [0, 0])
- |> line([5, 5], %)
+ |> line([5, 5])
"#;
let prog3_digest = crate::parsing::top_level_parse(prog3_string).unwrap().compute_digest();
diff --git a/rust/kcl-lib/src/parsing/ast/types/literal_value.rs b/rust/kcl-lib/src/parsing/ast/types/literal_value.rs
index 4b0304603..acd753a79 100644
--- a/rust/kcl-lib/src/parsing/ast/types/literal_value.rs
+++ b/rust/kcl-lib/src/parsing/ast/types/literal_value.rs
@@ -1,4 +1,4 @@
-use std::fmt;
+use std::{fmt, str::FromStr};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
@@ -32,6 +32,21 @@ impl LiteralValue {
_ => None,
}
}
+
+ pub fn is_color(&self) -> Option {
+ if let Self::String(s) = self {
+ // Check if the string is a color.
+ if s.starts_with('#') && s.len() == 7 {
+ let Ok(c) = csscolorparser::Color::from_str(s) else {
+ return None;
+ };
+
+ return Some(c);
+ }
+ }
+
+ None
+ }
}
impl fmt::Display for LiteralValue {
diff --git a/rust/kcl-lib/src/parsing/ast/types/mod.rs b/rust/kcl-lib/src/parsing/ast/types/mod.rs
index 73b3bca13..7da4e0631 100644
--- a/rust/kcl-lib/src/parsing/ast/types/mod.rs
+++ b/rust/kcl-lib/src/parsing/ast/types/mod.rs
@@ -11,10 +11,12 @@ use std::{
use anyhow::Result;
use parse_display::{Display, FromStr};
+pub use path::NodePath;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use tower_lsp::lsp_types::{
- CompletionItem, CompletionItemKind, DocumentSymbol, FoldingRange, FoldingRangeKind, SymbolKind,
+ Color, ColorInformation, ColorPresentation, CompletionItem, CompletionItemKind, DocumentSymbol, FoldingRange,
+ FoldingRangeKind, SymbolKind,
};
pub use crate::parsing::ast::types::{
@@ -34,6 +36,7 @@ use crate::{
mod condition;
mod literal_value;
mod none;
+mod path;
#[derive(Debug)]
pub enum Definition<'a> {
@@ -158,6 +161,10 @@ impl Node {
self.start <= pos && pos <= self.end
}
+ pub(crate) fn contains_range(&self, range: &SourceRange) -> bool {
+ self.as_source_range().contains_range(range)
+ }
+
pub fn map(self, f: impl Fn(T) -> U) -> Node {
Node {
inner: f(self.inner),
@@ -389,6 +396,99 @@ impl Node {
true
}
+
+ /// Find all the color strings in the program.
+ /// For example `appearance(color = "#ff0000")`
+ /// This is to fulfill the `documentColor` request in LSP.
+ pub fn document_color<'a>(&'a self, code: &str) -> Result> {
+ let colors = Rc::new(RefCell::new(vec![]));
+
+ let add_color = |literal: &Node| {
+ // Check if the string is a color.
+ if let Some(c) = literal.value.is_color() {
+ let color = ColorInformation {
+ range: literal.as_source_range().to_lsp_range(code),
+ color: tower_lsp::lsp_types::Color {
+ red: c.r,
+ green: c.g,
+ blue: c.b,
+ alpha: c.a,
+ },
+ };
+ if colors.borrow().iter().any(|c| *c == color) {
+ return;
+ }
+ colors.borrow_mut().push(color);
+ }
+ };
+
+ // The position must be within the variable declaration.
+ crate::walk::walk(self, |node: crate::walk::Node<'a>| {
+ match node {
+ crate::walk::Node::CallExpressionKw(call) => {
+ if call.inner.callee.inner.name.inner.name == "appearance" {
+ for arg in &call.arguments {
+ if arg.label.inner.name == "color" {
+ // Get the value of the argument.
+ if let Expr::Literal(literal) = &arg.arg {
+ add_color(literal);
+ }
+ }
+ }
+ }
+ }
+ crate::walk::Node::Literal(literal) => {
+ // Check if the literal is a color.
+ add_color(literal);
+ }
+ _ => {
+ // Do nothing.
+ }
+ }
+ Ok::(true)
+ })?;
+
+ let colors = colors.take();
+ Ok(colors)
+ }
+
+ /// This is to fulfill the `colorPresentation` request in LSP.
+ pub fn color_presentation<'a>(
+ &'a self,
+ color: &Color,
+ pos_start: usize,
+ pos_end: usize,
+ ) -> Result> {
+ let found = Rc::new(RefCell::new(false));
+ // Find the literal with the same start and end.
+ crate::walk::walk(self, |node: crate::walk::Node<'a>| {
+ match node {
+ crate::walk::Node::Literal(literal) => {
+ if literal.start == pos_start && literal.end == pos_end && literal.value.is_color().is_some() {
+ found.replace(true);
+ return Ok(true);
+ }
+ }
+ _ => {
+ // Do nothing.
+ }
+ }
+ Ok::(true)
+ })?;
+
+ let found = found.take();
+ if !found {
+ return Ok(None);
+ }
+
+ let new_color = csscolorparser::Color::new(color.red, color.green, color.blue, color.alpha);
+ Ok(Some(ColorPresentation {
+ // The label will be what they replace the color with.
+ label: new_color.to_hex_string(),
+ text_edit: None,
+ additional_text_edits: None,
+ }))
+ }
}
impl Program {
@@ -724,6 +824,11 @@ impl BodyItem {
}
}
+ pub(crate) fn contains_range(&self, range: &SourceRange) -> bool {
+ let item_range = SourceRange::from(self);
+ item_range.contains_range(range)
+ }
+
pub(crate) fn set_attrs(&mut self, attr: NodeList) {
match self {
BodyItem::ImportStatement(node) => node.outer_attrs = attr,
@@ -951,6 +1056,11 @@ impl Expr {
}
}
+ fn contains_range(&self, range: &SourceRange) -> bool {
+ let expr_range = SourceRange::from(self);
+ expr_range.contains_range(range)
+ }
+
/// Rename all identifiers that have the old name to the new given name.
fn rename_identifiers(&mut self, old_name: &str, new_name: &str) {
match self {
@@ -1068,6 +1178,21 @@ impl From<&Expr> for SourceRange {
}
}
+impl From<&BinaryPart> for Expr {
+ fn from(value: &BinaryPart) -> Self {
+ match value {
+ BinaryPart::Literal(literal) => Expr::Literal(literal.clone()),
+ BinaryPart::Name(name) => Expr::Name(name.clone()),
+ BinaryPart::BinaryExpression(binary_expression) => Expr::BinaryExpression(binary_expression.clone()),
+ BinaryPart::CallExpression(call_expression) => Expr::CallExpression(call_expression.clone()),
+ BinaryPart::CallExpressionKw(call_expression) => Expr::CallExpressionKw(call_expression.clone()),
+ BinaryPart::UnaryExpression(unary_expression) => Expr::UnaryExpression(unary_expression.clone()),
+ BinaryPart::MemberExpression(member_expression) => Expr::MemberExpression(member_expression.clone()),
+ BinaryPart::IfExpression(e) => Expr::IfExpression(e.clone()),
+ }
+ }
+}
+
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
#[ts(export)]
#[serde(tag = "type")]
@@ -2701,6 +2826,11 @@ impl MemberObject {
MemberObject::Identifier(identifier) => identifier.end,
}
}
+
+ pub(crate) fn contains_range(&self, range: &SourceRange) -> bool {
+ let sr = SourceRange::from(self);
+ sr.contains_range(range)
+ }
}
impl From for SourceRange {
@@ -2737,6 +2867,11 @@ impl LiteralIdentifier {
LiteralIdentifier::Literal(literal) => literal.end,
}
}
+
+ pub(crate) fn contains_range(&self, range: &SourceRange) -> bool {
+ let sr = SourceRange::from(self);
+ sr.contains_range(range)
+ }
}
impl From for SourceRange {
@@ -3255,6 +3390,11 @@ impl Parameter {
pub fn optional(&self) -> bool {
self.default_value.is_some()
}
+
+ pub(crate) fn contains_range(&self, range: &SourceRange) -> bool {
+ let sr = SourceRange::from(self);
+ sr.contains_range(range)
+ }
}
impl From<&Parameter> for SourceRange {
@@ -3645,11 +3785,11 @@ mod tests {
fn test_get_lsp_folding_ranges() {
let code = r#"part001 = startSketchOn(XY)
|> startProfile(at = [0.0000000000, 5.0000000000])
- |> line([0.4900857016, -0.0240763666], %)
+ |> line([0.4900857016, -0.0240763666])
startSketchOn(XY)
|> startProfile(at = [0.0000000000, 5.0000000000])
- |> line([0.4900857016, -0.0240763666], %)
+ |> line([0.4900857016, -0.0240763666])
part002 = "part002"
things = [part001, 0.0]
@@ -3657,7 +3797,7 @@ blah = 1
foo = false
baz = {a = 1, b = "thing"}
-fn ghi(x) {
+fn ghi(@x) {
return x
}
@@ -3667,24 +3807,24 @@ ghi("things")
let folding_ranges = program.get_lsp_folding_ranges();
assert_eq!(folding_ranges.len(), 3);
assert_eq!(folding_ranges[0].start_line, 27);
- assert_eq!(folding_ranges[0].end_line, 126);
+ assert_eq!(folding_ranges[0].end_line, 123);
assert_eq!(
folding_ranges[0].collapsed_text,
Some("part001 = startSketchOn(XY)".to_string())
);
- assert_eq!(folding_ranges[1].start_line, 145);
- assert_eq!(folding_ranges[1].end_line, 244);
+ assert_eq!(folding_ranges[1].start_line, 142);
+ assert_eq!(folding_ranges[1].end_line, 238);
assert_eq!(folding_ranges[1].collapsed_text, Some("startSketchOn(XY)".to_string()));
- assert_eq!(folding_ranges[2].start_line, 350);
- assert_eq!(folding_ranges[2].end_line, 363);
- assert_eq!(folding_ranges[2].collapsed_text, Some("fn ghi(x) {".to_string()));
+ assert_eq!(folding_ranges[2].start_line, 345);
+ assert_eq!(folding_ranges[2].end_line, 358);
+ assert_eq!(folding_ranges[2].collapsed_text, Some("fn ghi(@x) {".to_string()));
}
#[test]
fn test_get_lsp_symbols() {
let code = r#"part001 = startSketchOn(XY)
|> startProfile(at = [0.0000000000, 5.0000000000])
- |> line([0.4900857016, -0.0240763666], %)
+ |> line([0.4900857016, -0.0240763666])
part002 = "part002"
things = [part001, 0.0]
@@ -3710,12 +3850,12 @@ h = 30
cylinder = startSketchOn(-XZ)
|> startProfile(at = [50, 0])
- |> arc({
+ |> arc(
angle_end = 360,
angle_start = 0,
radius = r
- }, %)
- |> extrude(h, %)
+ )
+ |> extrude(h)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -3731,12 +3871,12 @@ h = 30
cylinder = startSketchOn(-XZ)
|> startProfile(at = [50, 0])
// comment
- |> arc({
+ |> arc(
angle_end= 360,
angle_start= 0,
radius= r
- }, %)
- |> extrude(h, %)
+ )
+ |> extrude(h)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -4011,7 +4151,7 @@ cylinder = startSketchOn(-XZ)
#[tokio::test(flavor = "multi_thread")]
async fn test_parse_object_bool() {
- let some_program_string = r#"some_func({thing: true, other_thing: false})"#;
+ let some_program_string = r#"some_func({thing = true, other_thing = false})"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
// We want to get the bool and verify it is a bool.
@@ -4029,14 +4169,22 @@ cylinder = startSketchOn(-XZ)
panic!("expected a function!");
};
- let Expr::CallExpression(ce) = expression else {
- panic!("expected a function!");
- };
+ let oe = match expression {
+ Expr::CallExpressionKw(ce) => {
+ assert!(ce.unlabeled.is_some());
- assert!(!ce.arguments.is_empty());
-
- let Expr::ObjectExpression(oe) = ce.arguments.first().unwrap() else {
- panic!("expected a object!");
+ let Expr::ObjectExpression(oe) = ce.unlabeled.as_ref().unwrap() else {
+ panic!("expected a object!");
+ };
+ oe
+ }
+ Expr::CallExpression(ce) => {
+ let Expr::ObjectExpression(ref oe) = (ce.arguments).first().unwrap() else {
+ panic!("expected an object!");
+ };
+ oe
+ }
+ other => panic!("expected a Call or CallKw, found {other:?}"),
};
assert_eq!(oe.properties.len(), 2);
diff --git a/rust/kcl-lib/src/parsing/ast/types/path.rs b/rust/kcl-lib/src/parsing/ast/types/path.rs
new file mode 100644
index 000000000..931c05a60
--- /dev/null
+++ b/rust/kcl-lib/src/parsing/ast/types/path.rs
@@ -0,0 +1,406 @@
+use serde::Serialize;
+
+use super::{BodyItem, Expr, MemberObject, Node, Program};
+use crate::SourceRange;
+
+/// A traversal path through the AST to a node.
+///
+/// Similar to the idea of a `NodeId`, a `NodePath` uniquely identifies a node,
+/// assuming you know the root node.
+///
+/// The implementation doesn't cover all parts of the tree. It currently only
+/// works on parts of the tree that the frontend uses.
+#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq, Hash, ts_rs::TS)]
+#[ts(export_to = "NodePath.ts")]
+pub struct NodePath {
+ pub steps: Vec,
+}
+
+#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash, ts_rs::TS)]
+#[ts(export_to = "NodePath.ts")]
+#[serde(tag = "type")]
+pub enum Step {
+ ProgramBodyItem { index: usize },
+ CallCallee,
+ CallArg { index: usize },
+ CallKwCallee,
+ CallKwUnlabeledArg,
+ CallKwArg { index: usize },
+ BinaryLeft,
+ BinaryRight,
+ UnaryArg,
+ PipeBodyItem { index: usize },
+ ArrayElement { index: usize },
+ ArrayRangeStart,
+ ArrayRangeEnd,
+ ObjectProperty { index: usize },
+ ObjectPropertyKey,
+ ObjectPropertyValue,
+ ExpressionStatementExpr,
+ VariableDeclarationDeclaration,
+ VariableDeclarationInit,
+ FunctionExpressionParam { index: usize },
+ FunctionExpressionBody,
+ FunctionExpressionBodyItem { index: usize },
+ ReturnStatementArg,
+ MemberExpressionObject,
+ MemberExpressionProperty,
+ IfExpressionCondition,
+ IfExpressionThen,
+ IfExpressionElseIf { index: usize },
+ IfExpressionElseIfCond,
+ IfExpressionElseIfBody,
+ IfExpressionElse,
+ ImportStatementItem { index: usize },
+ ImportStatementItemName,
+ ImportStatementItemAlias,
+ LabeledExpressionExpr,
+ LabeledExpressionLabel,
+ AscribedExpressionExpr,
+}
+
+impl NodePath {
+ /// Given a program and a [`SourceRange`], return the path to the node that
+ /// contains the range.
+ pub(crate) fn from_range(program: &Node, range: SourceRange) -> Option {
+ Self::from_body(&program.body, range, NodePath::default())
+ }
+
+ fn from_body(body: &[BodyItem], range: SourceRange, mut path: NodePath) -> Option {
+ for (i, item) in body.iter().enumerate() {
+ if item.contains_range(&range) {
+ path.push(Step::ProgramBodyItem { index: i });
+ return Self::from_body_item(item, range, path);
+ }
+ }
+
+ None
+ }
+
+ fn from_body_item(body_item: &BodyItem, range: SourceRange, mut path: NodePath) -> Option {
+ match body_item {
+ BodyItem::ImportStatement(node) => match &node.selector {
+ super::ImportSelector::List { items } => {
+ for (i, item) in items.iter().enumerate() {
+ if item.contains_range(&range) {
+ path.push(Step::ImportStatementItem { index: i });
+ if item.name.contains_range(&range) {
+ path.push(Step::ImportStatementItemName);
+ return Some(path);
+ }
+ if let Some(alias) = &item.alias {
+ if alias.contains_range(&range) {
+ path.push(Step::ImportStatementItemAlias);
+ return Some(path);
+ }
+ }
+ return Some(path);
+ }
+ }
+ }
+ super::ImportSelector::Glob(_) => {
+ // TODO: Handle glob imports.
+ }
+ super::ImportSelector::None { .. } => {
+ // TODO: Handle whole-module imports.
+ }
+ },
+ BodyItem::ExpressionStatement(node) => {
+ path.push(Step::ExpressionStatementExpr);
+ return Self::from_expr(&node.expression, range, path);
+ }
+ BodyItem::VariableDeclaration(node) => {
+ if node.declaration.contains_range(&range) {
+ path.push(Step::VariableDeclarationDeclaration);
+ if node.declaration.init.contains_range(&range) {
+ path.push(Step::VariableDeclarationInit);
+ return Self::from_expr(&node.declaration.init, range, path);
+ }
+ }
+ }
+ BodyItem::TypeDeclaration(_) => {}
+ BodyItem::ReturnStatement(node) => {
+ if node.argument.contains_range(&range) {
+ path.push(Step::ReturnStatementArg);
+ return Self::from_expr(&node.argument, range, path);
+ }
+ }
+ }
+
+ Some(path)
+ }
+
+ fn from_expr(expr: &Expr, range: SourceRange, mut path: NodePath) -> Option {
+ match expr {
+ Expr::Literal(node) => {
+ if node.contains_range(&range) {
+ return Some(path);
+ }
+ }
+ Expr::Name(node) => {
+ if node.contains_range(&range) {
+ return Some(path);
+ }
+ }
+ Expr::TagDeclarator(node) => {
+ if node.contains_range(&range) {
+ return Some(path);
+ }
+ }
+ Expr::BinaryExpression(node) => {
+ let left = Expr::from(&node.left);
+ if left.contains_range(&range) {
+ path.push(Step::BinaryLeft);
+ return Self::from_expr(&left, range, path);
+ }
+ let right = Expr::from(&node.right);
+ if right.contains_range(&range) {
+ path.push(Step::BinaryRight);
+ return Self::from_expr(&right, range, path);
+ }
+ }
+ Expr::FunctionExpression(node) => {
+ for (i, param) in node.params.iter().enumerate() {
+ // TODO: Check the type annotation and default value.
+ if param.contains_range(&range) {
+ path.push(Step::FunctionExpressionParam { index: i });
+ return Some(path);
+ }
+ }
+ if node.body.contains_range(&range) {
+ path.push(Step::FunctionExpressionBody);
+ for (i, item) in node.body.body.iter().enumerate() {
+ if item.contains_range(&range) {
+ path.push(Step::FunctionExpressionBodyItem { index: i });
+ return Self::from_body_item(item, range, path);
+ }
+ }
+ }
+ }
+ Expr::CallExpression(node) => {
+ if node.callee.contains_range(&range) {
+ path.push(Step::CallCallee);
+ return Some(path);
+ }
+ for (i, arg) in node.arguments.iter().enumerate() {
+ if arg.contains_range(&range) {
+ path.push(Step::CallArg { index: i });
+ return Self::from_expr(arg, range, path);
+ }
+ }
+ }
+ Expr::CallExpressionKw(node) => {
+ if node.callee.contains_range(&range) {
+ path.push(Step::CallKwCallee);
+ return Some(path);
+ }
+ if let Some(unlabeled) = &node.unlabeled {
+ if unlabeled.contains_range(&range) {
+ path.push(Step::CallKwUnlabeledArg);
+ return Self::from_expr(unlabeled, range, path);
+ }
+ }
+ for (i, arg) in node.arguments.iter().enumerate() {
+ if arg.arg.contains_range(&range) {
+ path.push(Step::CallKwArg { index: i });
+ return Self::from_expr(&arg.arg, range, path);
+ }
+ }
+ }
+ Expr::PipeExpression(node) => {
+ for (i, expr) in node.body.iter().enumerate() {
+ if expr.contains_range(&range) {
+ path.push(Step::PipeBodyItem { index: i });
+ return Self::from_expr(expr, range, path);
+ }
+ }
+ }
+ Expr::PipeSubstitution(_) => {}
+ Expr::ArrayExpression(node) => {
+ for (i, element) in node.elements.iter().enumerate() {
+ if element.contains_range(&range) {
+ path.push(Step::ArrayElement { index: i });
+ return Self::from_expr(element, range, path);
+ }
+ }
+ }
+ Expr::ArrayRangeExpression(node) => {
+ if node.start_element.contains_range(&range) {
+ path.push(Step::ArrayRangeStart);
+ return Self::from_expr(&node.start_element, range, path);
+ }
+ if node.end_element.contains_range(&range) {
+ path.push(Step::ArrayRangeEnd);
+ return Self::from_expr(&node.end_element, range, path);
+ }
+ }
+ Expr::ObjectExpression(node) => {
+ for (i, property) in node.properties.iter().enumerate() {
+ if property.contains_range(&range) {
+ path.push(Step::ObjectProperty { index: i });
+ if property.key.contains_range(&range) {
+ path.push(Step::ObjectPropertyKey);
+ return Some(path);
+ }
+ if property.value.contains_range(&range) {
+ path.push(Step::ObjectPropertyValue);
+ return Self::from_expr(&property.value, range, path);
+ }
+ return Some(path);
+ }
+ }
+ }
+ Expr::MemberExpression(node) => {
+ if node.object.contains_range(&range) {
+ path.push(Step::MemberExpressionObject);
+ return Self::from_member_expr_object(&node.object, range, path);
+ }
+ if node.property.contains_range(&range) {
+ path.push(Step::MemberExpressionProperty);
+ return Some(path);
+ }
+ }
+ Expr::UnaryExpression(node) => {
+ let arg = Expr::from(&node.argument);
+ if arg.contains_range(&range) {
+ path.push(Step::UnaryArg);
+ return Self::from_expr(&arg, range, path);
+ }
+ }
+ Expr::IfExpression(node) => {
+ if node.cond.contains_range(&range) {
+ path.push(Step::IfExpressionCondition);
+ return Self::from_expr(&node.cond, range, path);
+ }
+ if node.then_val.contains_range(&range) {
+ path.push(Step::IfExpressionThen);
+ return Self::from_body(&node.then_val.body, range, path);
+ }
+ for else_if in &node.else_ifs {
+ if else_if.contains_range(&range) {
+ path.push(Step::IfExpressionElseIf { index: 0 });
+ if else_if.cond.contains_range(&range) {
+ path.push(Step::IfExpressionElseIfCond);
+ return Self::from_expr(&else_if.cond, range, path);
+ }
+ if else_if.then_val.contains_range(&range) {
+ path.push(Step::IfExpressionElseIfBody);
+ return Self::from_body(&else_if.then_val.body, range, path);
+ }
+ return Some(path);
+ }
+ }
+ if node.final_else.contains_range(&range) {
+ path.push(Step::IfExpressionElse);
+ return Self::from_body(&node.final_else.body, range, path);
+ }
+ }
+ Expr::LabelledExpression(node) => {
+ if node.expr.contains_range(&range) {
+ path.push(Step::LabeledExpressionExpr);
+ return Self::from_expr(&node.expr, range, path);
+ }
+ if node.label.contains_range(&range) {
+ path.push(Step::LabeledExpressionLabel);
+ return Some(path);
+ }
+ }
+ Expr::AscribedExpression(node) => {
+ if node.expr.contains_range(&range) {
+ path.push(Step::AscribedExpressionExpr);
+ return Self::from_expr(&node.expr, range, path);
+ }
+ // TODO: Check the type annotation.
+ }
+ Expr::None(_) => {}
+ }
+
+ Some(path)
+ }
+
+ fn from_member_expr_object(mut expr: &MemberObject, range: SourceRange, mut path: NodePath) -> Option {
+ while let MemberObject::MemberExpression(node) = expr {
+ if !node.object.contains_range(&range) {
+ break;
+ }
+ path.push(Step::MemberExpressionObject);
+ expr = &node.object;
+ }
+
+ Some(path)
+ }
+
+ fn push(&mut self, step: Step) {
+ self.steps.push(step);
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use crate::ModuleId;
+
+ fn range(start: usize, end: usize) -> SourceRange {
+ SourceRange::new(start, end, ModuleId::default())
+ }
+
+ #[test]
+ fn test_node_path_from_range() {
+ // Read the contents of the file.
+ let contents = std::fs::read_to_string("tests/misc/cube.kcl").unwrap();
+ let program = crate::Program::parse_no_errs(&contents).unwrap();
+
+ // fn cube(sideLength, center) {
+ // ^^^^
+ assert_eq!(
+ NodePath::from_range(&program.ast, range(38, 42)).unwrap(),
+ NodePath {
+ steps: vec![Step::ProgramBodyItem { index: 0 }, Step::VariableDeclarationDeclaration],
+ }
+ );
+ // fn cube(sideLength, center) {
+ // ^^^^^^
+ assert_eq!(
+ NodePath::from_range(&program.ast, range(55, 61)).unwrap(),
+ NodePath {
+ steps: vec![
+ Step::ProgramBodyItem { index: 0 },
+ Step::VariableDeclarationDeclaration,
+ Step::VariableDeclarationInit,
+ Step::FunctionExpressionParam { index: 1 }
+ ],
+ }
+ );
+ // |> line(endAbsolute = p1)
+ // ^^
+ assert_eq!(
+ NodePath::from_range(&program.ast, range(293, 295)).unwrap(),
+ NodePath {
+ steps: vec![
+ Step::ProgramBodyItem { index: 0 },
+ Step::VariableDeclarationDeclaration,
+ Step::VariableDeclarationInit,
+ Step::FunctionExpressionBody,
+ Step::FunctionExpressionBodyItem { index: 7 },
+ Step::ReturnStatementArg,
+ Step::PipeBodyItem { index: 2 },
+ Step::CallKwArg { index: 0 },
+ ],
+ }
+ );
+ // myCube = cube(sideLength = 40, center = [0, 0])
+ // ^
+ assert_eq!(
+ NodePath::from_range(&program.ast, range(485, 486)).unwrap(),
+ NodePath {
+ steps: vec![
+ Step::ProgramBodyItem { index: 1 },
+ Step::VariableDeclarationDeclaration,
+ Step::VariableDeclarationInit,
+ Step::CallKwArg { index: 1 },
+ Step::ArrayElement { index: 1 }
+ ],
+ }
+ );
+ }
+}
diff --git a/rust/kcl-lib/src/parsing/parser.rs b/rust/kcl-lib/src/parsing/parser.rs
index 5b1291975..edd47d47e 100644
--- a/rust/kcl-lib/src/parsing/parser.rs
+++ b/rust/kcl-lib/src/parsing/parser.rs
@@ -14,7 +14,7 @@ use winnow::{
};
use super::{
- ast::types::{AscribedExpression, ImportPath, LabelledExpression},
+ ast::types::{AscribedExpression, CallExpression, ImportPath, LabelledExpression},
token::{NumericSuffix, RESERVED_WORDS},
DeprecationKind,
};
@@ -24,13 +24,12 @@ use crate::{
parsing::{
ast::types::{
Annotation, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem,
- BoxNode, CallExpression, CallExpressionKw, CommentStyle, DefaultParamVal, ElseIf, Expr,
- ExpressionStatement, FunctionExpression, Identifier, IfExpression, ImportItem, ImportSelector,
- ImportStatement, ItemVisibility, LabeledArg, Literal, LiteralIdentifier, LiteralValue, MemberExpression,
- MemberObject, Name, Node, NodeList, NonCodeMeta, NonCodeNode, NonCodeValue, ObjectExpression,
- ObjectProperty, Parameter, PipeExpression, PipeSubstitution, PrimitiveType, Program, ReturnStatement,
- Shebang, TagDeclarator, Type, TypeDeclaration, UnaryExpression, UnaryOperator, VariableDeclaration,
- VariableDeclarator, VariableKind,
+ BoxNode, CallExpressionKw, CommentStyle, DefaultParamVal, ElseIf, Expr, ExpressionStatement,
+ FunctionExpression, Identifier, IfExpression, ImportItem, ImportSelector, ImportStatement, ItemVisibility,
+ LabeledArg, Literal, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, Name, Node, NodeList,
+ NonCodeMeta, NonCodeNode, NonCodeValue, ObjectExpression, ObjectProperty, Parameter, PipeExpression,
+ PipeSubstitution, PrimitiveType, Program, ReturnStatement, Shebang, TagDeclarator, Type, TypeDeclaration,
+ UnaryExpression, UnaryOperator, VariableDeclaration, VariableDeclarator, VariableKind,
},
math::BinaryExpressionToken,
token::{Token, TokenSlice, TokenType},
@@ -3047,6 +3046,46 @@ fn fn_call_kw(i: &mut TokenSlice) -> PResult> {
let _ = open_paren.parse_next(i)?;
ignore_whitespace(i);
+ // Special case: no args
+ let early_close = peek(close_paren).parse_next(i);
+ if early_close.is_ok() {
+ let cl = close_paren.parse_next(i)?;
+ let result = Node::new_node(
+ fn_name.start,
+ cl.end,
+ fn_name.module_id,
+ CallExpressionKw {
+ callee: fn_name,
+ unlabeled: Default::default(),
+ arguments: Default::default(),
+ digest: None,
+ non_code_meta: Default::default(),
+ },
+ );
+ return Ok(result);
+ }
+
+ // Special case: one arg (unlabeled)
+ let early_close = peek((expression, opt(whitespace), close_paren)).parse_next(i);
+ if early_close.is_ok() {
+ let first_expression = expression.parse_next(i)?;
+ ignore_whitespace(i);
+ let end = close_paren.parse_next(i)?.end;
+ let result = Node::new_node(
+ fn_name.start,
+ end,
+ fn_name.module_id,
+ CallExpressionKw {
+ callee: fn_name,
+ unlabeled: Some(first_expression),
+ arguments: Default::default(),
+ digest: None,
+ non_code_meta: Default::default(),
+ },
+ );
+ return Ok(result);
+ }
+
#[allow(clippy::large_enum_variant)]
enum ArgPlace {
NonCode(Node),
@@ -3834,7 +3873,7 @@ mySk1 = startSketchOn(XY)
#[test]
fn pipes_on_pipes_minimal() {
let test_program = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(endAbsolute = [0, -0]) // MoveRelative
"#;
@@ -4105,7 +4144,7 @@ mySk1 = startSketchOn(XY)
fn test_parse_half_pipe_small() {
assert_err_contains(
"secondExtrude = startSketchOn(XY)
- |> startProfileAt([0,0], %)
+ |> startProfile(at = [0,0])
|",
"Unexpected token: |",
);
@@ -4169,7 +4208,7 @@ height = [obj["a"] -1, 0]"#;
#[test]
fn test_anon_fn() {
- crate::parsing::top_level_parse("foo(42, fn(x) { return x + 1 })").unwrap();
+ crate::parsing::top_level_parse("foo(num=42, closure=fn(x) { return x + 1 })").unwrap();
}
#[test]
@@ -4198,15 +4237,15 @@ height = [obj["a"] -1, 0]"#;
let code = "height = 10
firstExtrude = startSketchOn(XY)
- |> startProfileAt([0,0], %)
- |> line([0, 8], %)
- |> line([20, 0], %)
- |> line([0, -8], %)
+ |> startProfile(at = [0,0])
+ |> line(at = [0, 8])
+ |> line(at = [20, 0])
+ |> line(at = [0, -8])
|> close()
|> extrude(length=2)
secondExtrude = startSketchOn(XY)
- |> startProfileAt([0,0], %)
+ |> startProfile(at = [0,0])
|";
assert_err_contains(code, "Unexpected token: |");
}
@@ -4477,7 +4516,7 @@ e
///
/// ```
/// exampleSketch = startSketchOn(XZ)
-/// |> startProfileAt([0, 0], %)
+/// |> startProfile(at = [0, 0])
/// |> angledLine(
/// angle = 30,
/// length = 3 / cos(toRadians(30)),
@@ -4517,7 +4556,7 @@ export fn cos(num: number(rad)): number(_) {}"#;
#[test]
fn error_underscore() {
- let (_, errs) = assert_no_fatal("_foo(_blah, _)");
+ let (_, errs) = assert_no_fatal("_foo(a=_blah, b=_)");
assert_eq!(errs.len(), 3, "found: {errs:#?}");
}
@@ -4629,11 +4668,11 @@ thing(false)
#[test]
fn random_words_fail() {
let test_program = r#"part001 = startSketchOn(-XZ)
- |> startProfileAt([8.53, 11.8], %)
+ |> startProfile(at = [8.53, 11.8])
asdasd asdasd
- |> line([11.12, -14.82], %)
- |> line([-13.27, -6.98], %)
- |> line([-5.09, 12.33], %)
+ |> line(at = [11.12, -14.82])
+ |> line(at = [-13.27, -6.98])
+ |> line(at = [-5.09, 12.33])
asdasd
"#;
let _ = crate::parsing::top_level_parse(test_program).unwrap_errs();
@@ -4643,16 +4682,16 @@ thing(false)
fn test_member_expression_sketch() {
let some_program_string = r#"fn cube(pos, scale) {
sg = startSketchOn(XY)
- |> startProfileAt(pos, %)
- |> line([0, scale], %)
- |> line([scale, 0], %)
- |> line([0, -scale], %)
+ |> startProfile(pos)
+ |> line(at = [0, scale])
+ |> line(at = [scale, 0])
+ |> line(at = [0, -scale])
return sg
}
-b1 = cube([0,0], 10)
-b2 = cube([3,3], 4)
+b1 = cube(pos=[0,0], scale=10)
+b2 = cube(pos=[3,3], scale=4)
pt1 = b1[0]
pt2 = b2[0]
@@ -4671,16 +4710,16 @@ let other_thing = 2 * cos(3)"#;
fn test_negative_arguments() {
let some_program_string = r#"fn box(p, h, l, w) {
myBox = startSketchOn(XY)
- |> startProfileAt(p, %)
- |> line([0, l], %)
- |> line([w, 0], %)
- |> line([0, -l], %)
+ |> startProfile(p)
+ |> line(at = [0, l])
+ |> line(at = [w, 0])
+ |> line(at = [0, -l])
|> close()
|> extrude(length=h)
return myBox
}
-let myBox = box([0,0], -3, -16, -10)
+let myBox = box(p=[0,0], h=-3, l=-16, w=-10)
"#;
crate::parsing::top_level_parse(some_program_string).unwrap();
}
@@ -4697,20 +4736,20 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_tag_named_std_lib() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([5, 5], %, $xLine)
+ |> startProfile(at = [0, 0])
+ |> line(%, end = [5, 5], tag = $xLine)
"#;
assert_err(
some_program_string,
"Cannot assign a tag to a reserved keyword: xLine",
- [74, 80],
+ [86, 92],
);
}
#[test]
fn test_parse_empty_tag_brace() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $)
"#;
assert_err(some_program_string, "Tag names must not be empty", [67, 68]);
@@ -4718,7 +4757,7 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_empty_tag_whitespace() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $ ,01)
"#;
assert_err(some_program_string, "Tag names must not be empty", [67, 68]);
@@ -4727,7 +4766,7 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_empty_tag_comma() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $,)
"#;
assert_err(some_program_string, "Tag names must not be empty", [67, 68]);
@@ -4736,7 +4775,7 @@ let myBox = box([0,0], -3, -16, -10)
fn test_parse_tag_starting_with_digit() {
let some_program_string = r#"
startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $01)"#;
assert_err(
some_program_string,
@@ -4748,14 +4787,14 @@ let myBox = box([0,0], -3, -16, -10)
fn test_parse_tag_including_digit() {
let some_program_string = r#"
startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line(%, $var01)"#;
+ |> startProfile(at = [0, 0])
+ |> line(%, tag = $var01)"#;
assert_no_err(some_program_string);
}
#[test]
fn test_parse_tag_starting_with_bang() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $!var,01)
"#;
assert_err(some_program_string, "Tag names must not start with a bang", [67, 68]);
@@ -4763,7 +4802,7 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_tag_starting_with_dollar() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $$,01)
"#;
assert_err(some_program_string, "Tag names must not start with a dollar", [67, 68]);
@@ -4771,7 +4810,7 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_tag_starting_with_fn() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $fn,01)
"#;
assert_err(some_program_string, "Tag names must not start with a keyword", [67, 69]);
@@ -4779,7 +4818,7 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_tag_starting_with_a_comment() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(%, $//
,01)
"#;
@@ -4794,8 +4833,8 @@ let myBox = box([0,0], -3, -16, -10)
fn test_parse_tag_with_reserved_in_middle_works() {
let some_program_string = r#"
startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([5, 5], %, $sketching)
+ |> startProfile(at = [0, 0])
+ |> line(end = [5, 5], tag = $sketching)
"#;
assert_no_err(some_program_string);
}
@@ -4803,21 +4842,21 @@ let myBox = box([0,0], -3, -16, -10)
#[test]
fn test_parse_array_missing_closing_bracket() {
let some_program_string = r#"
-sketch001 = startSketchOn(XZ) |> startProfileAt([90.45, 119.09, %)"#;
+sketch001 = startSketchOn(XZ) |> startProfile(at = [90.45, 119.09)"#;
assert_err(
some_program_string,
"Encountered an unexpected character(s) before finding a closing bracket(`]`) for the array",
- [49, 65],
+ [52, 60],
);
}
#[test]
fn test_parse_array_missing_comma() {
let some_program_string = r#"
-sketch001 = startSketchOn(XZ) |> startProfileAt([90.45 119.09], %)"#;
+sketch001 = startSketchOn(XZ) |> startProfile(at = [90.45 119.09])"#;
assert_err(
some_program_string,
"Unexpected character encountered. You might be missing a comma in between elements.",
- [50, 63],
+ [53, 66],
);
}
#[test]
@@ -4825,21 +4864,21 @@ sketch001 = startSketchOn(XZ) |> startProfileAt([90.45 119.09], %)"#;
// since there is an early exit if encountering a reserved word, the error should be about
// that and not the missing comma
let some_program_string = r#"
-sketch001 = startSketchOn(XZ) |> startProfileAt([90.45 $struct], %)"#;
+sketch001 = startSketchOn(XZ) |> startProfile(at = [90.45 $struct])"#;
assert_err(
some_program_string,
"Encountered an unexpected character(s) before finding a closing bracket(`]`) for the array",
- [49, 50],
+ [52, 53],
);
}
#[test]
fn test_parse_array_random_brace() {
let some_program_string = r#"
-sketch001 = startSketchOn(XZ) |> startProfileAt([}], %)"#;
+sketch001 = startSketchOn(XZ) |> startProfile(at = [}])"#;
assert_err(
some_program_string,
"Encountered an unexpected character(s) before finding a closing bracket(`]`) for the array",
- [49, 50],
+ [52, 53],
);
}
@@ -5075,17 +5114,17 @@ mod snapshot_tests {
snapshot_test!(
a,
r#"boxSketch = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([0, 10], %)
- |> tangentialArc([-5, 5], %)
- |> line([5, -15], %)
+ |> startProfileAt(at = [0, 0])
+ |> line(at = [0, 10])
+ |> tangentialArc(end = [-5, 5])
+ |> line(at = [5, -15])
|> extrude(length=10)
"#
);
- snapshot_test!(b, "myVar = min(5 , -legLen(5, 4))"); // Space before comma
+ snapshot_test!(b, "myVar = min(x=5 , y=-legLen(5, z=4))"); // Space before comma
- snapshot_test!(c, "myVar = min(-legLen(5, 4), 5)");
- snapshot_test!(d, "myVar = 5 + 6 |> myFunc(45, %)");
+ snapshot_test!(c, "myVar = min(x=-legLen(a=5, b=4), y=5)");
+ snapshot_test!(d, "myVar = 5 + 6 |> myFunc(45)");
snapshot_test!(e, "x = 1 * (3 - 4)");
snapshot_test!(f, r#"x = 1 // this is an inline comment"#);
snapshot_test!(
@@ -5141,11 +5180,11 @@ mod snapshot_tests {
snapshot_test!(v, r#"pt1 = b1[0]"#);
snapshot_test!(w, r#"pt1 = b1['zero']"#);
snapshot_test!(x, r#"pt1 = b1.zero"#);
- snapshot_test!(y, r#"sg = startSketchOn(XY) |> startProfileAt(pos, %)"#);
+ snapshot_test!(y, r#"sg = startSketchOn(XY) |> startProfile(pos)"#);
snapshot_test!(
z,
"sg = startSketchOn(XY)
- |> startProfileAt(pos) |> line([0, -scale], %)"
+ |> startProfile(pos) |> line([0, -scale])"
);
snapshot_test!(aa, r#"sg = -scale"#);
snapshot_test!(ab, "line(endAbsolute = [0, -1])");
@@ -5168,7 +5207,7 @@ mod snapshot_tests {
snapshot_test!(
af,
r#"mySketch = startSketchOn(XY)
- |> startProfileAt([0,0], %)
+ |> startProfile(at = [0,0])
|> line(endAbsolute = [0, 1], tag = $myPath)
|> line(endAbsolute = [1, 1])
|> line(endAbsolute = [1, 0], tag = $rightPath)
@@ -5176,21 +5215,21 @@ mod snapshot_tests {
);
snapshot_test!(
ag,
- "mySketch = startSketchOn(XY) |> startProfileAt([0,0], %) |> line(endAbsolute = [1, 1]) |> close()"
+ "mySketch = startSketchOn(XY) |> startProfile(at = [0,0]) |> line(endAbsolute = [1, 1]) |> close()"
);
- snapshot_test!(ah, "myBox = startSketchOn(XY) |> startProfileAt(p, %)");
- snapshot_test!(ai, r#"myBox = f(1) |> g(2, %)"#);
+ snapshot_test!(ah, "myBox = startSketchOn(XY) |> startProfile(at = p)");
+ snapshot_test!(ai, r#"myBox = f(1) |> g(2)"#);
snapshot_test!(
aj,
- r#"myBox = startSketchOn(XY) |> startProfileAt(p, %) |> line(end = [0, l])"#
+ r#"myBox = startSketchOn(XY) |> startProfile(at = p) |> line(end = [0, l])"#
);
snapshot_test!(ak, "line(endAbsolute = [0, 1])");
- snapshot_test!(ap, "mySketch = startSketchOn(XY) |> startProfileAt([0,0], %)");
- snapshot_test!(aq, "log(5, \"hello\", aIdentifier)");
+ snapshot_test!(ap, "mySketch = startSketchOn(XY) |> startProfile(at = [0,0])");
+ snapshot_test!(aq, "log(number = 5, msg = \"hello\", id=aIdentifier)");
snapshot_test!(ar, r#"5 + "a""#);
- snapshot_test!(at, "line([0, l], %)");
+ snapshot_test!(at, "line([0, l])");
snapshot_test!(au, include_str!("../../e2e/executor/inputs/cylinder.kcl"));
- snapshot_test!(av, "fn f(angle?) { return default(angle, 360) }");
+ snapshot_test!(av, "fn f(angle?) { return default(maybe=angle, otherwise=360) }");
snapshot_test!(
aw,
"numbers = [
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap
index d79784b2a..f95faad91 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 170,
+ "end": 179,
"id": {
"commentStart": 0,
"end": 9,
@@ -61,44 +61,47 @@ expression: actual
{
"arguments": [
{
- "commentStart": 52,
- "elements": [
- {
- "commentStart": 53,
- "end": 54,
- "raw": "0",
- "start": 53,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 52,
+ "end": 54,
+ "name": "at",
+ "start": 52,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 57,
+ "elements": [
+ {
+ "commentStart": 58,
+ "end": 59,
+ "raw": "0",
+ "start": 58,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 61,
+ "end": 62,
+ "raw": "0",
+ "start": 61,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 56,
- "end": 57,
- "raw": "0",
- "start": 56,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 58,
- "start": 52,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 60,
- "end": 61,
- "start": 60,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 63,
+ "start": 57,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
@@ -117,86 +120,175 @@ expression: actual
"type": "Name"
},
"commentStart": 37,
- "end": 62,
+ "end": 64,
"start": 37,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
{
- "commentStart": 75,
- "elements": [
- {
- "commentStart": 76,
- "end": 77,
- "raw": "0",
- "start": 76,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 77,
+ "end": 79,
+ "name": "at",
+ "start": 77,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 82,
+ "elements": [
+ {
+ "commentStart": 83,
+ "end": 84,
+ "raw": "0",
+ "start": 83,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 86,
+ "end": 88,
+ "raw": "10",
+ "start": 86,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 79,
- "end": 81,
- "raw": "10",
- "start": 79,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
- }
- }
- ],
- "end": 82,
- "start": 75,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 84,
- "end": 85,
- "start": 84,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 89,
+ "start": 82,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
"abs_path": false,
- "commentStart": 70,
- "end": 74,
+ "commentStart": 72,
+ "end": 76,
"name": {
- "commentStart": 70,
- "end": 74,
+ "commentStart": 72,
+ "end": 76,
"name": "line",
- "start": 70,
+ "start": 72,
"type": "Identifier"
},
"path": [],
- "start": 70,
+ "start": 72,
"type": "Name"
},
- "commentStart": 70,
- "end": 86,
- "start": 70,
- "type": "CallExpression",
- "type": "CallExpression"
+ "commentStart": 72,
+ "end": 90,
+ "start": 72,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
{
- "commentStart": 108,
- "elements": [
- {
- "argument": {
- "commentStart": 110,
- "end": 111,
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 112,
+ "end": 115,
+ "name": "end",
+ "start": 112,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 118,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 120,
+ "end": 121,
+ "raw": "5",
+ "start": 120,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 119,
+ "end": 121,
+ "operator": "-",
+ "start": 119,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "commentStart": 123,
+ "end": 124,
"raw": "5",
- "start": 110,
+ "start": 123,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 125,
+ "start": 118,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 98,
+ "end": 111,
+ "name": {
+ "commentStart": 98,
+ "end": 111,
+ "name": "tangentialArc",
+ "start": 98,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 98,
+ "type": "Name"
+ },
+ "commentStart": 98,
+ "end": 126,
+ "start": 98,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 139,
+ "end": 141,
+ "name": "at",
+ "start": 139,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 144,
+ "elements": [
+ {
+ "commentStart": 145,
+ "end": 146,
+ "raw": "5",
+ "start": 145,
"type": "Literal",
"type": "Literal",
"value": {
@@ -204,148 +296,72 @@ expression: actual
"suffix": "None"
}
},
- "commentStart": 109,
- "end": 111,
- "operator": "-",
- "start": 109,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "commentStart": 113,
- "end": 114,
- "raw": "5",
- "start": 113,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ {
+ "argument": {
+ "commentStart": 149,
+ "end": 151,
+ "raw": "15",
+ "start": 149,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 15.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 148,
+ "end": 151,
+ "operator": "-",
+ "start": 148,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
}
- }
- ],
- "end": 115,
- "start": 108,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 117,
- "end": 118,
- "start": 117,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 152,
+ "start": 144,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
"abs_path": false,
- "commentStart": 94,
- "end": 107,
+ "commentStart": 134,
+ "end": 138,
"name": {
- "commentStart": 94,
- "end": 107,
- "name": "tangentialArc",
- "start": 94,
- "type": "Identifier"
- },
- "path": [],
- "start": 94,
- "type": "Name"
- },
- "commentStart": 94,
- "end": 119,
- "start": 94,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- {
- "arguments": [
- {
- "commentStart": 132,
- "elements": [
- {
- "commentStart": 133,
- "end": 134,
- "raw": "5",
- "start": 133,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
- }
- },
- {
- "argument": {
- "commentStart": 137,
- "end": 139,
- "raw": "15",
- "start": 137,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 15.0,
- "suffix": "None"
- }
- },
- "commentStart": 136,
- "end": 139,
- "operator": "-",
- "start": 136,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- }
- ],
- "end": 140,
- "start": 132,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 142,
- "end": 143,
- "start": 142,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 127,
- "end": 131,
- "name": {
- "commentStart": 127,
- "end": 131,
+ "commentStart": 134,
+ "end": 138,
"name": "line",
- "start": 127,
+ "start": 134,
"type": "Identifier"
},
"path": [],
- "start": 127,
+ "start": 134,
"type": "Name"
},
- "commentStart": 127,
- "end": 144,
- "start": 127,
- "type": "CallExpression",
- "type": "CallExpression"
+ "commentStart": 134,
+ "end": 153,
+ "start": 134,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
{
"type": "LabeledArg",
"label": {
- "commentStart": 160,
- "end": 166,
+ "commentStart": 169,
+ "end": 175,
"name": "length",
- "start": 160,
+ "start": 169,
"type": "Identifier"
},
"arg": {
- "commentStart": 167,
- "end": 169,
+ "commentStart": 176,
+ "end": 178,
"raw": "10",
- "start": 167,
+ "start": 176,
"type": "Literal",
"type": "Literal",
"value": {
@@ -357,29 +373,29 @@ expression: actual
],
"callee": {
"abs_path": false,
- "commentStart": 152,
- "end": 159,
+ "commentStart": 161,
+ "end": 168,
"name": {
- "commentStart": 152,
- "end": 159,
+ "commentStart": 161,
+ "end": 168,
"name": "extrude",
- "start": 152,
+ "start": 161,
"type": "Identifier"
},
"path": [],
- "start": 152,
+ "start": 161,
"type": "Name"
},
- "commentStart": 152,
- "end": 170,
- "start": 152,
+ "commentStart": 161,
+ "end": 179,
+ "start": 161,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": null
}
],
"commentStart": 12,
- "end": 170,
+ "end": 179,
"start": 12,
"type": "PipeExpression",
"type": "PipeExpression"
@@ -387,7 +403,7 @@ expression: actual
"start": 0,
"type": "VariableDeclarator"
},
- "end": 170,
+ "end": 179,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -395,6 +411,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 171,
+ "end": 180,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap
index 51382f2a7..8b47a911b 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap
@@ -61,54 +61,57 @@ expression: actual
{
"arguments": [
{
- "commentStart": 55,
- "elements": [
- {
- "commentStart": 56,
- "end": 57,
- "raw": "0",
- "start": 56,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 53,
+ "end": 55,
+ "name": "at",
+ "start": 53,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 58,
+ "elements": [
+ {
+ "commentStart": 59,
+ "end": 60,
+ "raw": "0",
+ "start": 59,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 61,
+ "end": 62,
+ "raw": "0",
+ "start": 61,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 58,
- "end": 59,
- "raw": "0",
- "start": 58,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 60,
- "start": 55,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 62,
- "end": 63,
- "start": 62,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 63,
+ "start": 58,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
"abs_path": false,
"commentStart": 40,
- "end": 54,
+ "end": 52,
"name": {
"commentStart": 40,
- "end": 54,
- "name": "startProfileAt",
+ "end": 52,
+ "name": "startProfile",
"start": 40,
"type": "Identifier"
},
@@ -119,8 +122,9 @@ expression: actual
"commentStart": 40,
"end": 64,
"start": 40,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap
index 23bcb687d..bc65025da 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap
@@ -61,54 +61,57 @@ expression: actual
{
"arguments": [
{
- "commentStart": 47,
- "elements": [
- {
- "commentStart": 48,
- "end": 49,
- "raw": "0",
- "start": 48,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 45,
+ "end": 47,
+ "name": "at",
+ "start": 45,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 50,
+ "elements": [
+ {
+ "commentStart": 51,
+ "end": 52,
+ "raw": "0",
+ "start": 51,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 53,
+ "end": 54,
+ "raw": "0",
+ "start": 53,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 50,
- "end": 51,
- "raw": "0",
- "start": 50,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 52,
- "start": 47,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 54,
- "end": 55,
- "start": 54,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 55,
+ "start": 50,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
"abs_path": false,
"commentStart": 32,
- "end": 46,
+ "end": 44,
"name": {
"commentStart": 32,
- "end": 46,
- "name": "startProfileAt",
+ "end": 44,
+ "name": "startProfile",
"start": 32,
"type": "Identifier"
},
@@ -119,8 +122,9 @@ expression: actual
"commentStart": 32,
"end": 56,
"start": 32,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap
index c1a92e028..5f0163dc0 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap
@@ -61,37 +61,40 @@ expression: actual
{
"arguments": [
{
- "abs_path": false,
- "commentStart": 44,
- "end": 45,
- "name": {
- "commentStart": 44,
- "end": 45,
- "name": "p",
- "start": 44,
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 42,
+ "end": 44,
+ "name": "at",
+ "start": 42,
"type": "Identifier"
},
- "path": [],
- "start": 44,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 47,
- "end": 48,
- "start": 47,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 47,
+ "end": 48,
+ "name": {
+ "commentStart": 47,
+ "end": 48,
+ "name": "p",
+ "start": 47,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 47,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
"abs_path": false,
"commentStart": 29,
- "end": 43,
+ "end": 41,
"name": {
"commentStart": 29,
- "end": 43,
- "name": "startProfileAt",
+ "end": 41,
+ "name": "startProfile",
"start": 29,
"type": "Identifier"
},
@@ -102,8 +105,9 @@ expression: actual
"commentStart": 29,
"end": 49,
"start": 29,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
}
],
"commentStart": 8,
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap
index a0898409f..e1c34d5a5 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 23,
+ "end": 20,
"id": {
"commentStart": 0,
"end": 5,
@@ -67,13 +67,6 @@ expression: actual
"value": 2.0,
"suffix": "None"
}
- },
- {
- "commentStart": 21,
- "end": 22,
- "start": 21,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
}
],
"callee": {
@@ -92,14 +85,14 @@ expression: actual
"type": "Name"
},
"commentStart": 16,
- "end": 23,
+ "end": 20,
"start": 16,
"type": "CallExpression",
"type": "CallExpression"
}
],
"commentStart": 8,
- "end": 23,
+ "end": 20,
"start": 8,
"type": "PipeExpression",
"type": "PipeExpression"
@@ -107,7 +100,7 @@ expression: actual
"start": 0,
"type": "VariableDeclarator"
},
- "end": 23,
+ "end": 20,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -115,6 +108,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 23,
+ "end": 20,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap
index 91ca51649..fd35296e0 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap
@@ -61,37 +61,40 @@ expression: actual
{
"arguments": [
{
- "abs_path": false,
- "commentStart": 44,
- "end": 45,
- "name": {
- "commentStart": 44,
- "end": 45,
- "name": "p",
- "start": 44,
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 42,
+ "end": 44,
+ "name": "at",
+ "start": 42,
"type": "Identifier"
},
- "path": [],
- "start": 44,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 47,
- "end": 48,
- "start": 47,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 47,
+ "end": 48,
+ "name": {
+ "commentStart": 47,
+ "end": 48,
+ "name": "p",
+ "start": 47,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 47,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
"abs_path": false,
"commentStart": 29,
- "end": 43,
+ "end": 41,
"name": {
"commentStart": 29,
- "end": 43,
- "name": "startProfileAt",
+ "end": 41,
+ "name": "startProfile",
"start": 29,
"type": "Identifier"
},
@@ -102,8 +105,9 @@ expression: actual
"commentStart": 29,
"end": 49,
"start": 29,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap
index cd59ac65a..54f7e9385 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap
@@ -61,54 +61,57 @@ expression: actual
{
"arguments": [
{
- "commentStart": 47,
- "elements": [
- {
- "commentStart": 48,
- "end": 49,
- "raw": "0",
- "start": 48,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 45,
+ "end": 47,
+ "name": "at",
+ "start": 45,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 50,
+ "elements": [
+ {
+ "commentStart": 51,
+ "end": 52,
+ "raw": "0",
+ "start": 51,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 53,
+ "end": 54,
+ "raw": "0",
+ "start": 53,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 50,
- "end": 51,
- "raw": "0",
- "start": 50,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 52,
- "start": 47,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 54,
- "end": 55,
- "start": 54,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
+ ],
+ "end": 55,
+ "start": 50,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
"abs_path": false,
"commentStart": 32,
- "end": 46,
+ "end": 44,
"name": {
"commentStart": 32,
- "end": 46,
- "name": "startProfileAt",
+ "end": 44,
+ "name": "startProfile",
"start": 32,
"type": "Identifier"
},
@@ -119,8 +122,9 @@ expression: actual
"commentStart": 32,
"end": 56,
"start": 32,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
}
],
"commentStart": 11,
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap
index 2f2aa09a5..e6c992d7a 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap
@@ -6,45 +6,75 @@ expression: actual
"body": [
{
"commentStart": 0,
- "end": 28,
+ "end": 46,
"expression": {
"arguments": [
{
- "commentStart": 4,
- "end": 5,
- "raw": "5",
- "start": 4,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 4,
+ "end": 10,
+ "name": "number",
+ "start": 4,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 13,
+ "end": 14,
+ "raw": "5",
+ "start": 13,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 7,
- "end": 14,
- "raw": "\"hello\"",
- "start": 7,
- "type": "Literal",
- "type": "Literal",
- "value": "hello"
- },
- {
- "abs_path": false,
- "commentStart": 16,
- "end": 27,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 16,
- "end": 27,
- "name": "aIdentifier",
+ "end": 19,
+ "name": "msg",
"start": 16,
"type": "Identifier"
},
- "path": [],
- "start": 16,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 22,
+ "end": 29,
+ "raw": "\"hello\"",
+ "start": 22,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "hello"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 31,
+ "end": 33,
+ "name": "id",
+ "start": 31,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 34,
+ "end": 45,
+ "name": {
+ "commentStart": 34,
+ "end": 45,
+ "name": "aIdentifier",
+ "start": 34,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 34,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -63,10 +93,11 @@ expression: actual
"type": "Name"
},
"commentStart": 0,
- "end": 28,
+ "end": 46,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -74,6 +105,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 28,
+ "end": 46,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap
index 5a61f2013..c306ce489 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap
@@ -6,7 +6,7 @@ expression: actual
"body": [
{
"commentStart": 0,
- "end": 15,
+ "end": 12,
"expression": {
"arguments": [
{
@@ -45,13 +45,6 @@ expression: actual
"start": 5,
"type": "ArrayExpression",
"type": "ArrayExpression"
- },
- {
- "commentStart": 13,
- "end": 14,
- "start": 13,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
}
],
"callee": {
@@ -70,7 +63,7 @@ expression: actual
"type": "Name"
},
"commentStart": 0,
- "end": 15,
+ "end": 12,
"start": 0,
"type": "CallExpression",
"type": "CallExpression"
@@ -81,6 +74,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 15,
+ "end": 12,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap
index 7999d6c3a..36f5156e3 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 3,
- "end": 43,
+ "end": 59,
"id": {
"commentStart": 3,
"end": 4,
@@ -23,31 +23,51 @@ expression: actual
"argument": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 30,
- "end": 35,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 30,
"end": 35,
- "name": "angle",
+ "name": "maybe",
"start": 30,
"type": "Identifier"
},
- "path": [],
- "start": 30,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 36,
+ "end": 41,
+ "name": {
+ "commentStart": 36,
+ "end": 41,
+ "name": "angle",
+ "start": 36,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 36,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 37,
- "end": 40,
- "raw": "360",
- "start": 37,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 360.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 43,
+ "end": 52,
+ "name": "otherwise",
+ "start": 43,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 53,
+ "end": 56,
+ "raw": "360",
+ "start": 53,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 360.0,
+ "suffix": "None"
+ }
}
}
],
@@ -67,24 +87,25 @@ expression: actual
"type": "Name"
},
"commentStart": 22,
- "end": 41,
+ "end": 57,
"start": 22,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"commentStart": 15,
- "end": 41,
+ "end": 57,
"start": 15,
"type": "ReturnStatement",
"type": "ReturnStatement"
}
],
"commentStart": 13,
- "end": 43,
+ "end": 59,
"start": 13
},
"commentStart": 4,
- "end": 43,
+ "end": 59,
"params": [
{
"type": "Parameter",
@@ -109,7 +130,7 @@ expression: actual
"start": 3,
"type": "VariableDeclarator"
},
- "end": 43,
+ "end": 59,
"kind": "fn",
"start": 0,
"type": "VariableDeclaration",
@@ -117,6 +138,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 43,
+ "end": 59,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap
index 95c1d7b7f..9a99bf254 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 30,
+ "end": 36,
"id": {
"commentStart": 0,
"end": 5,
@@ -19,72 +19,102 @@ expression: actual
"init": {
"arguments": [
{
- "commentStart": 12,
- "end": 13,
- "raw": "5",
- "start": 12,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 12,
+ "end": 13,
+ "name": "x",
+ "start": 12,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 14,
+ "end": 15,
+ "raw": "5",
+ "start": 14,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "argument": {
- "arguments": [
- {
- "commentStart": 24,
- "end": 25,
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 18,
+ "end": 19,
+ "name": "y",
+ "start": 18,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 31,
+ "end": 32,
+ "name": "z",
+ "start": 31,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 33,
+ "end": 34,
+ "raw": "4",
+ "start": 33,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 21,
+ "end": 27,
+ "name": {
+ "commentStart": 21,
+ "end": 27,
+ "name": "legLen",
+ "start": 21,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 21,
+ "type": "Name"
+ },
+ "commentStart": 21,
+ "end": 35,
+ "start": 21,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "commentStart": 28,
+ "end": 29,
"raw": "5",
- "start": 24,
+ "start": 28,
"type": "Literal",
"type": "Literal",
"value": {
"value": 5.0,
"suffix": "None"
}
- },
- {
- "commentStart": 27,
- "end": 28,
- "raw": "4",
- "start": 27,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
}
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 17,
- "end": 23,
- "name": {
- "commentStart": 17,
- "end": 23,
- "name": "legLen",
- "start": 17,
- "type": "Identifier"
- },
- "path": [],
- "start": 17,
- "type": "Name"
},
- "commentStart": 17,
- "end": 29,
- "start": 17,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "commentStart": 16,
- "end": 29,
- "operator": "-",
- "start": 16,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "commentStart": 20,
+ "end": 35,
+ "operator": "-",
+ "start": 20,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -103,15 +133,16 @@ expression: actual
"type": "Name"
},
"commentStart": 8,
- "end": 30,
+ "end": 36,
"start": 8,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
},
- "end": 30,
+ "end": 36,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -119,6 +150,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 30,
+ "end": 36,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap
index cab23fa89..da9677ce2 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 29,
+ "end": 37,
"id": {
"commentStart": 0,
"end": 5,
@@ -19,71 +19,112 @@ expression: actual
"init": {
"arguments": [
{
- "argument": {
- "arguments": [
- {
- "commentStart": 20,
- "end": 21,
- "raw": "5",
- "start": 20,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 23,
- "end": 24,
- "raw": "4",
- "start": 23,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 13,
- "end": 19,
- "name": {
- "commentStart": 13,
- "end": 19,
- "name": "legLen",
- "start": 13,
- "type": "Identifier"
- },
- "path": [],
- "start": 13,
- "type": "Name"
- },
- "commentStart": 13,
- "end": 25,
- "start": 13,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 12,
+ "end": 13,
+ "name": "x",
+ "start": 12,
+ "type": "Identifier"
},
- "commentStart": 12,
- "end": 25,
- "operator": "-",
- "start": 12,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "argument": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 22,
+ "end": 23,
+ "name": "a",
+ "start": 22,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 24,
+ "end": 25,
+ "raw": "5",
+ "start": 24,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 27,
+ "end": 28,
+ "name": "b",
+ "start": 27,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 29,
+ "end": 30,
+ "raw": "4",
+ "start": 29,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 15,
+ "end": 21,
+ "name": {
+ "commentStart": 15,
+ "end": 21,
+ "name": "legLen",
+ "start": 15,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 15,
+ "type": "Name"
+ },
+ "commentStart": 15,
+ "end": 31,
+ "start": 15,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "commentStart": 14,
+ "end": 31,
+ "operator": "-",
+ "start": 14,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
},
{
- "commentStart": 27,
- "end": 28,
- "raw": "5",
- "start": 27,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 33,
+ "end": 34,
+ "name": "y",
+ "start": 33,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 35,
+ "end": 36,
+ "raw": "5",
+ "start": 35,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -103,15 +144,16 @@ expression: actual
"type": "Name"
},
"commentStart": 8,
- "end": 29,
+ "end": 37,
"start": 8,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
},
- "end": 29,
+ "end": 37,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -119,6 +161,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 29,
+ "end": 37,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap
index ce5ecb940..ed8ee2e44 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 30,
+ "end": 27,
"id": {
"commentStart": 0,
"end": 5,
@@ -63,13 +63,6 @@ expression: actual
"value": 45.0,
"suffix": "None"
}
- },
- {
- "commentStart": 28,
- "end": 29,
- "start": 28,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
}
],
"callee": {
@@ -88,14 +81,14 @@ expression: actual
"type": "Name"
},
"commentStart": 17,
- "end": 30,
+ "end": 27,
"start": 17,
"type": "CallExpression",
"type": "CallExpression"
}
],
"commentStart": 8,
- "end": 30,
+ "end": 27,
"start": 8,
"type": "PipeExpression",
"type": "PipeExpression"
@@ -103,7 +96,7 @@ expression: actual
"start": 0,
"type": "VariableDeclarator"
},
- "end": 30,
+ "end": 27,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -111,6 +104,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 30,
+ "end": 27,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap
index b803ffe2c..21fc852c7 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 48,
+ "end": 43,
"id": {
"commentStart": 0,
"end": 2,
@@ -62,36 +62,29 @@ expression: actual
"arguments": [
{
"abs_path": false,
- "commentStart": 41,
- "end": 44,
+ "commentStart": 39,
+ "end": 42,
"name": {
- "commentStart": 41,
- "end": 44,
+ "commentStart": 39,
+ "end": 42,
"name": "pos",
- "start": 41,
+ "start": 39,
"type": "Identifier"
},
"path": [],
- "start": 41,
+ "start": 39,
"type": "Name",
"type": "Name"
- },
- {
- "commentStart": 46,
- "end": 47,
- "start": 46,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
}
],
"callee": {
"abs_path": false,
"commentStart": 26,
- "end": 40,
+ "end": 38,
"name": {
"commentStart": 26,
- "end": 40,
- "name": "startProfileAt",
+ "end": 38,
+ "name": "startProfile",
"start": 26,
"type": "Identifier"
},
@@ -100,14 +93,14 @@ expression: actual
"type": "Name"
},
"commentStart": 26,
- "end": 48,
+ "end": 43,
"start": 26,
"type": "CallExpression",
"type": "CallExpression"
}
],
"commentStart": 5,
- "end": 48,
+ "end": 43,
"start": 5,
"type": "PipeExpression",
"type": "PipeExpression"
@@ -115,7 +108,7 @@ expression: actual
"start": 0,
"type": "VariableDeclarator"
},
- "end": 48,
+ "end": 43,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -123,6 +116,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 48,
+ "end": 43,
"start": 0
}
diff --git a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap
index 0693edc13..7ba69bb3a 100644
--- a/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap
+++ b/rust/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap
@@ -8,7 +8,7 @@ expression: actual
"commentStart": 0,
"declaration": {
"commentStart": 0,
- "end": 73,
+ "end": 68,
"id": {
"commentStart": 0,
"end": 2,
@@ -62,17 +62,17 @@ expression: actual
"arguments": [
{
"abs_path": false,
- "commentStart": 45,
- "end": 48,
+ "commentStart": 43,
+ "end": 46,
"name": {
- "commentStart": 45,
- "end": 48,
+ "commentStart": 43,
+ "end": 46,
"name": "pos",
- "start": 45,
+ "start": 43,
"type": "Identifier"
},
"path": [],
- "start": 45,
+ "start": 43,
"type": "Name",
"type": "Name"
}
@@ -80,11 +80,11 @@ expression: actual
"callee": {
"abs_path": false,
"commentStart": 30,
- "end": 44,
+ "end": 42,
"name": {
"commentStart": 30,
- "end": 44,
- "name": "startProfileAt",
+ "end": 42,
+ "name": "startProfile",
"start": 30,
"type": "Identifier"
},
@@ -93,7 +93,7 @@ expression: actual
"type": "Name"
},
"commentStart": 30,
- "end": 49,
+ "end": 47,
"start": 30,
"type": "CallExpression",
"type": "CallExpression"
@@ -101,13 +101,13 @@ expression: actual
{
"arguments": [
{
- "commentStart": 58,
+ "commentStart": 56,
"elements": [
{
- "commentStart": 59,
- "end": 60,
+ "commentStart": 57,
+ "end": 58,
"raw": "0",
- "start": 59,
+ "start": 57,
"type": "Literal",
"type": "Literal",
"value": {
@@ -118,65 +118,58 @@ expression: actual
{
"argument": {
"abs_path": false,
- "commentStart": 63,
- "end": 68,
+ "commentStart": 61,
+ "end": 66,
"name": {
- "commentStart": 63,
- "end": 68,
+ "commentStart": 61,
+ "end": 66,
"name": "scale",
- "start": 63,
+ "start": 61,
"type": "Identifier"
},
"path": [],
- "start": 63,
+ "start": 61,
"type": "Name",
"type": "Name"
},
- "commentStart": 62,
- "end": 68,
+ "commentStart": 60,
+ "end": 66,
"operator": "-",
- "start": 62,
+ "start": 60,
"type": "UnaryExpression",
"type": "UnaryExpression"
}
],
- "end": 69,
- "start": 58,
+ "end": 67,
+ "start": 56,
"type": "ArrayExpression",
"type": "ArrayExpression"
- },
- {
- "commentStart": 71,
- "end": 72,
- "start": 71,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
}
],
"callee": {
"abs_path": false,
- "commentStart": 53,
- "end": 57,
+ "commentStart": 51,
+ "end": 55,
"name": {
- "commentStart": 53,
- "end": 57,
+ "commentStart": 51,
+ "end": 55,
"name": "line",
- "start": 53,
+ "start": 51,
"type": "Identifier"
},
"path": [],
- "start": 53,
+ "start": 51,
"type": "Name"
},
- "commentStart": 53,
- "end": 73,
- "start": 53,
+ "commentStart": 51,
+ "end": 68,
+ "start": 51,
"type": "CallExpression",
"type": "CallExpression"
}
],
"commentStart": 5,
- "end": 73,
+ "end": 68,
"start": 5,
"type": "PipeExpression",
"type": "PipeExpression"
@@ -184,7 +177,7 @@ expression: actual
"start": 0,
"type": "VariableDeclarator"
},
- "end": 73,
+ "end": 68,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
@@ -192,6 +185,6 @@ expression: actual
}
],
"commentStart": 0,
- "end": 73,
+ "end": 68,
"start": 0
}
diff --git a/rust/kcl-lib/src/settings/generate_settings_docs.rs b/rust/kcl-lib/src/settings/generate_settings_docs.rs
index 3e484349e..20695567e 100644
--- a/rust/kcl-lib/src/settings/generate_settings_docs.rs
+++ b/rust/kcl-lib/src/settings/generate_settings_docs.rs
@@ -39,8 +39,8 @@ base_unit = "mm"
text_wrapping = false
"#;
-const PROJECT_SETTINGS_DOC_PATH: &str = "../../docs/kcl/settings/project.md";
-const USER_SETTINGS_DOC_PATH: &str = "../../docs/kcl/settings/user.md";
+const PROJECT_SETTINGS_DOC_PATH: &str = "../../docs/kcl/settings-project.md";
+const USER_SETTINGS_DOC_PATH: &str = "../../docs/kcl/settings-user.md";
fn init_handlebars() -> handlebars::Handlebars<'static> {
let mut hbs = handlebars::Handlebars::new();
diff --git a/rust/kcl-lib/src/settings/types/mod.rs b/rust/kcl-lib/src/settings/types/mod.rs
index babf53996..0437d4b02 100644
--- a/rust/kcl-lib/src/settings/types/mod.rs
+++ b/rust/kcl-lib/src/settings/types/mod.rs
@@ -527,6 +527,9 @@ pub enum OnboardingStatus {
#[serde(rename = "/export")]
#[display("/export")]
Export,
+ #[serde(rename = "/move")]
+ #[display("/move")]
+ Move,
#[serde(rename = "/sketching")]
#[display("/sketching")]
Sketching,
diff --git a/rust/kcl-lib/src/simulation_tests.rs b/rust/kcl-lib/src/simulation_tests.rs
index c286bfb9f..39ff5c393 100644
--- a/rust/kcl-lib/src/simulation_tests.rs
+++ b/rust/kcl-lib/src/simulation_tests.rs
@@ -282,6 +282,7 @@ fn assert_common_snapshots(
insta::assert_json_snapshot!("ops", operations, {
"[].unlabeledArg.*.value.**[].from[]" => rounded_redaction(4),
"[].unlabeledArg.*.value.**[].to[]" => rounded_redaction(4),
+ "[].*.unlabeledArg.value.value" => rounded_redaction(4),
"[].labeledArgs.*.value.**[].from[]" => rounded_redaction(4),
"[].labeledArgs.*.value.**[].to[]" => rounded_redaction(4),
".**.sourceRange" => Vec::new(),
diff --git a/rust/kcl-lib/src/simulation_tests/kcl_samples.rs b/rust/kcl-lib/src/simulation_tests/kcl_samples.rs
index 2f3b590ca..67e1438eb 100644
--- a/rust/kcl-lib/src/simulation_tests/kcl_samples.rs
+++ b/rust/kcl-lib/src/simulation_tests/kcl_samples.rs
@@ -51,6 +51,7 @@ async fn unparse_test(test: &Test) {
.map(|file| {
tokio::spawn(async move {
let contents = tokio::fs::read_to_string(&file).await.unwrap();
+ eprintln!("{}", file.display());
let program = crate::Program::parse_no_errs(&contents).unwrap();
let recast = program.recast_with_options(&Default::default());
diff --git a/rust/kcl-lib/src/source_range.rs b/rust/kcl-lib/src/source_range.rs
index f554655c0..96d893247 100644
--- a/rust/kcl-lib/src/source_range.rs
+++ b/rust/kcl-lib/src/source_range.rs
@@ -99,6 +99,11 @@ impl SourceRange {
pos >= self.start() && pos <= self.end()
}
+ /// Check if the range contains another range. Modules must match.
+ pub(crate) fn contains_range(&self, other: &Self) -> bool {
+ self.module_id() == other.module_id() && self.start() <= other.start() && self.end() >= other.end()
+ }
+
pub fn start_to_lsp_position(&self, code: &str) -> LspPosition {
// Calculate the line and column of the error from the source range.
// Lines are zero indexed in vscode so we need to subtract 1.
diff --git a/rust/kcl-lib/src/std/appearance.rs b/rust/kcl-lib/src/std/appearance.rs
index 57c552766..d0cecaa5f 100644
--- a/rust/kcl-lib/src/std/appearance.rs
+++ b/rust/kcl-lib/src/std/appearance.rs
@@ -91,9 +91,9 @@ pub async fn appearance(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// example0 = cube([0, 0])
-/// example1 = cube([20, 0])
-/// example2 = cube([40, 0])
+/// example0 = cube(center = [0, 0])
+/// example1 = cube(center = [20, 0])
+/// example2 = cube(center = [40, 0])
///
/// appearance([example0, example1], color='#ff0000', metalness=50, roughness=50)
/// appearance(example2, color='#00ff00', metalness=50, roughness=50)
diff --git a/rust/kcl-lib/src/std/array.rs b/rust/kcl-lib/src/std/array.rs
index efa0195e2..43ff7839f 100644
--- a/rust/kcl-lib/src/std/array.rs
+++ b/rust/kcl-lib/src/std/array.rs
@@ -26,7 +26,7 @@ pub async fn map(exec_state: &mut ExecState, args: Args) -> Result circle( center= [id * 2 * r, 0], radius= r)
/// }
@@ -110,7 +110,7 @@ pub async fn reduce(exec_state: &mut ExecState, args: Args) -> Result Result Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// unionedPart = union([part001, part002])
@@ -71,8 +71,8 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// // This is the equivalent of: union([part001, part002])
@@ -94,8 +94,8 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// // This is the equivalent of: union([part001, part002])
@@ -199,8 +199,8 @@ pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// intersectedPart = intersect([part001, part002])
@@ -221,8 +221,8 @@ pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// // This is the equivalent of: intersect([part001, part002])
@@ -332,8 +332,8 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// subtractedPart = subtract([part001], tools=[part002])
@@ -354,8 +354,8 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result extrude(length = 10)
/// }
///
-/// part001 = cube([0, 0], 10)
-/// part002 = cube([7, 3], 5)
+/// part001 = cube(center = [0, 0], size = 10)
+/// part002 = cube(center = [7, 3], size = 5)
/// |> translate(z = 1)
///
/// // This is the equivalent of: subtract([part001], tools=[part002])
diff --git a/rust/kcl-lib/src/std/patterns.rs b/rust/kcl-lib/src/std/patterns.rs
index b64033d40..ca94e2e55 100644
--- a/rust/kcl-lib/src/std/patterns.rs
+++ b/rust/kcl-lib/src/std/patterns.rs
@@ -96,7 +96,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
///
/// ```no_run
/// // Each instance will be shifted along the X axis.
-/// fn transform(id) {
+/// fn transform(@id) {
/// return { translate = [4 * id, 0, 0] }
/// }
///
@@ -110,7 +110,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// // Each instance will be shifted along the X axis,
/// // with a gap between the original (at x = 0) and the first replica
/// // (at x = 8). This is because `id` starts at 1.
-/// fn transform(id) {
+/// fn transform(@id) {
/// return { translate = [4 * (1+id), 0, 0] }
/// }
///
@@ -140,7 +140,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// }
///
/// width = 20
-/// fn transform(i) {
+/// fn transform(@i) {
/// return {
/// // Move down each time.
/// translate = [0, 0, -i * width],
@@ -155,7 +155,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// }
///
/// myCubes =
-/// cube(width, [100,0])
+/// cube(length = width, center = [100,0])
/// |> patternTransform(instances = 25, transform = transform)
/// ```
///
@@ -180,7 +180,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// }
///
/// width = 20
-/// fn transform(i) {
+/// fn transform(@i) {
/// return {
/// translate = [0, 0, -i * width],
/// rotation = {
@@ -191,7 +191,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// }
/// }
/// myCubes =
-/// cube(width, [100,100])
+/// cube(length = width, center = [100,100])
/// |> patternTransform(instances = 4, transform = transform)
/// ```
/// ```no_run
@@ -201,7 +201,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// t = 0.005 // taper factor [0-1)
/// // Defines how to modify each layer of the vase.
/// // Each replica is shifted up the Z axis, and has a smoothly-varying radius
-/// fn transform(replicaId) {
+/// fn transform(@replicaId) {
/// scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))
/// return {
/// translate = [0, 0, replicaId * 10],
@@ -219,7 +219,7 @@ pub async fn pattern_transform_2d(exec_state: &mut ExecState, args: Args) -> Res
/// vase = layer() |> patternTransform(instances = 100, transform = transform)
/// ```
/// ```
-/// fn transform(i) {
+/// fn transform(@i) {
/// // Transform functions can return multiple transforms. They'll be applied in order.
/// return [
/// { translate = [30 * i, 0, 0] },
@@ -282,7 +282,7 @@ async fn inner_pattern_transform<'a>(
/// Just like patternTransform, but works on 2D sketches not 3D solids.
/// ```no_run
/// // Each instance will be shifted along the X axis.
-/// fn transform(id) {
+/// fn transform(@id) {
/// return { translate = [4 * id, 0] }
/// }
///
diff --git a/rust/kcl-lib/src/std/segment.rs b/rust/kcl-lib/src/std/segment.rs
index 8a97e02e0..eb4acf9e8 100644
--- a/rust/kcl-lib/src/std/segment.rs
+++ b/rust/kcl-lib/src/std/segment.rs
@@ -42,10 +42,10 @@ pub async fn segment_end(exec_state: &mut ExecState, args: Args) -> Result extrude(length = radius)
/// }
///
-/// cylinder(1, line1)
-/// cylinder(2, line2)
-/// cylinder(3, line3)
-/// cylinder(4, line4)
+/// cylinder(radius = 1, tag = line1)
+/// cylinder(radius = 2, tag = line2)
+/// cylinder(radius = 3, tag = line3)
+/// cylinder(radius = 4, tag = line4)
/// ```
#[stdlib {
name = "segEnd",
@@ -178,10 +178,10 @@ pub async fn segment_start(exec_state: &mut ExecState, args: Args) -> Result extrude(length = radius)
/// }
///
-/// cylinder(1, line1)
-/// cylinder(2, line2)
-/// cylinder(3, line3)
-/// cylinder(4, line4)
+/// cylinder(radius = 1, tag = line1)
+/// cylinder(radius = 2, tag = line2)
+/// cylinder(radius = 3, tag = line3)
+/// cylinder(radius = 4, tag = line4)
/// ```
#[stdlib {
name = "segStart",
diff --git a/rust/kcl-lib/src/std/transform.rs b/rust/kcl-lib/src/std/transform.rs
index b7d4bcdfa..b364e9270 100644
--- a/rust/kcl-lib/src/std/transform.rs
+++ b/rust/kcl-lib/src/std/transform.rs
@@ -326,7 +326,7 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([x, y], %)
+ |> startProfile(at = [x, y])
|> xLine(length = w)
|> yLine(length = h)
|> xLine(length = -w)
|> close()
- |> extrude(d, %)
+ |> extrude(d)
}
fn quad(x1, y1, x2, y2, x3, y3, x4, y4) {
startSketchOn(XY)
- |> startProfileAt([x1, y1], %)
+ |> startProfile(at = [x1, y1])
|> line(endAbsolute = [x2, y2])
|> line(endAbsolute = [x3, y3])
|> line(endAbsolute = [x4, y4])
|> close()
- |> extrude(d, %)
+ |> extrude(d)
}
fn crosshair(x, y) {
startSketchOn(XY)
- |> startProfileAt([x, y], %)
+ |> startProfile(at = [x, y])
|> yLine(length = 1)
|> yLine(length = -2)
|> yLine(length = 1)
@@ -1159,11 +1159,30 @@ fn z(z_x, z_y) {
z_corner = s * 2
z_w = z_end_w + 2 * z_corner
z_h = z_w * 1.08130081300813
- rect(z_x, z_y, z_end_w, -z_end_h)
- rect(z_x + z_w, z_y, -z_corner, -z_corner)
- rect(z_x + z_w, z_y - z_h, -z_end_w, z_end_h)
- rect(z_x, z_y - z_h, z_corner, z_corner)
- quad(z_x, z_y - z_h + z_corner, z_x + z_w - z_corner, z_y, z_x + z_w, z_y - z_corner, z_x + z_corner, z_y - z_h)
+ rect(
+ z_x,
+ a = z_y,
+ b = z_end_w,
+ c = -z_end_h,
+ )
+ rect(
+ z_x + z_w,
+ a = z_y,
+ b = -z_corner,
+ c = -z_corner,
+ )
+ rect(
+ z_x + z_w,
+ a = z_y - z_h,
+ b = -z_end_w,
+ c = z_end_h,
+ )
+ rect(
+ z_x,
+ a = z_y - z_h,
+ b = z_corner,
+ c = z_corner,
+ )
}
fn o(c_x, c_y) {
@@ -1175,61 +1194,45 @@ fn o(c_x, c_y) {
a = 7
// Start point for the top sketch
- o_x1 = c_x + o_r * cos((45 + a) / 360 * tau())
- o_y1 = c_y + o_r * sin((45 + a) / 360 * tau())
+ o_x1 = c_x + o_r * cos((45 + a) / 360 * TAU)
+ o_y1 = c_y + o_r * sin((45 + a) / 360 * TAU)
// Start point for the bottom sketch
- o_x2 = c_x + o_r * cos((225 + a) / 360 * tau())
- o_y2 = c_y + o_r * sin((225 + a) / 360 * tau())
+ o_x2 = c_x + o_r * cos((225 + a) / 360 * TAU)
+ o_y2 = c_y + o_r * sin((225 + a) / 360 * TAU)
// End point for the bottom startSketch
- o_x3 = c_x + o_r * cos((45 - a) / 360 * tau())
- o_y3 = c_y + o_r * sin((45 - a) / 360 * tau())
+ o_x3 = c_x + o_r * cos((45 - a) / 360 * TAU)
+ o_y3 = c_y + o_r * sin((45 - a) / 360 * TAU)
// Where is the center?
// crosshair(c_x, c_y)
startSketchOn(XY)
- |> startProfileAt([o_x1, o_y1], %)
- |> arc({
- radius = o_r,
- angle_start = 45 + a,
- angle_end = 225 - a
- }, %)
+ |> startProfile(at = [o_x1, o_y1])
+ |> arc(radius = o_r, angle_start = 45 + a, angle_end = 225 - a)
|> angledLine(angle = 45, length = o_r - i_r)
- |> arc({
- radius = i_r,
- angle_start = 225 - a,
- angle_end = 45 + a
- }, %)
+ |> arc(radius = i_r, angle_start = 225 - a, angle_end = 45 + a)
|> close()
- |> extrude(d, %)
+ |> extrude(d)
startSketchOn(XY)
- |> startProfileAt([o_x2, o_y2], %)
- |> arc({
- radius = o_r,
- angle_start = 225 + a,
- angle_end = 360 + 45 - a
- }, %)
+ |> startProfile(at = [o_x2, o_y2])
+ |> arc(radius = o_r, angle_start = 225 + a, angle_end = 360 + 45 - a)
|> angledLine(angle = 225, length = o_r - i_r)
- |> arc({
- radius = i_r,
- angle_start = 45 - a,
- angle_end = 225 + a - 360
- }, %)
+ |> arc(radius = i_r, angle_start = 45 - a, angle_end = 225 + a - 360)
|> close()
- |> extrude(d, %)
+ |> extrude(d)
}
fn zoo(x0, y0) {
- z(x0, y0)
- o(x0 + s * 20, y0 - (s * 6.7))
- o(x0 + s * 35, y0 - (s * 6.7))
+ z(x = x0, y = y0)
+ o(x = x0 + s * 20, y = y0 - (s * 6.7))
+ o(x = x0 + s * 35, y = y0 - (s * 6.7))
}
-zoo(zoo_x, zoo_y)
+zoo(x = zoo_x, y = zoo_y)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -1250,32 +1253,32 @@ overHangLength = .4
// Sketch and revolve the inside bearing piece
insideRevolve = startSketchOn(XZ)
- |> startProfileAt([insideDia / 2, 0], %)
- |> line([0, thickness + sphereDia / 2], %)
- |> line([overHangLength, 0], %)
- |> line([0, -thickness], %)
- |> line([-overHangLength + thickness, 0], %)
- |> line([0, -sphereDia], %)
- |> line([overHangLength - thickness, 0], %)
- |> line([0, -thickness], %)
- |> line([-overHangLength, 0], %)
+ |> startProfile(at = [insideDia / 2, 0])
+ |> line(end = [0, thickness + sphereDia / 2])
+ |> line(end = [overHangLength, 0])
+ |> line(end = [0, -thickness])
+ |> line(end = [-overHangLength + thickness, 0])
+ |> line(end = [0, -sphereDia])
+ |> line(end = [overHangLength - thickness, 0])
+ |> line(end = [0, -thickness])
+ |> line(end = [-overHangLength, 0])
|> close()
- |> revolve({ axis = Y }, %)
+ |> revolve(axis = Y)
// Sketch and revolve one of the balls and duplicate it using a circular pattern. (This is currently a workaround, we have a bug with rotating on a sketch that touches the rotation axis)
sphere = startSketchOn(XZ)
- |> startProfileAt([
+ |> startProfile(at = [
0.05 + insideDia / 2 + thickness,
0 - 0.05
- ], %)
- |> line([sphereDia - 0.1, 0], %)
- |> arc({
+ ])
+ |> line(end = [sphereDia - 0.1, 0])
+ |> arc(
angle_start = 0,
angle_end = -180,
radius = sphereDia / 2 - 0.05
- }, %)
+ )
|> close()
- |> revolve({ axis = X }, %)
+ |> revolve(axis = X)
|> patternCircular3d(
axis = [0, 0, 1],
center = [0, 0, 0],
@@ -1286,20 +1289,21 @@ sphere = startSketchOn(XZ)
// Sketch and revolve the outside bearing
outsideRevolve = startSketchOn(XZ)
- |> startProfileAt([
+ |> startProfile(at = [
insideDia / 2 + thickness + sphereDia,
0
- ], %)
- |> line([0, sphereDia / 2], %)
- |> line([-overHangLength + thickness, 0], %)
- |> line([0, thickness], %)
- |> line([overHangLength, 0], %)
- |> line([0, -2 * thickness - sphereDia], %)
- |> line([-overHangLength, 0], %)
- |> line([0, thickness], %)
- |> line([overHangLength - thickness, 0], %)
+ ]
+ )
+ |> line(end = [0, sphereDia / 2])
+ |> line(end = [-overHangLength + thickness, 0])
+ |> line(end = [0, thickness])
+ |> line(end = [overHangLength, 0])
+ |> line(end = [0, -2 * thickness - sphereDia])
+ |> line(end = [-overHangLength, 0])
+ |> line(end = [0, thickness])
+ |> line(end = [overHangLength - thickness, 0])
|> close()
- |> revolve({ axis = Y }, %)"#;
+ |> revolve(axis = Y)"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
@@ -1316,32 +1320,28 @@ overHangLength = .4
// Sketch and revolve the inside bearing piece
insideRevolve = startSketchOn(XZ)
- |> startProfileAt([insideDia / 2, 0], %)
- |> line([0, thickness + sphereDia / 2], %)
- |> line([overHangLength, 0], %)
- |> line([0, -thickness], %)
- |> line([-overHangLength + thickness, 0], %)
- |> line([0, -sphereDia], %)
- |> line([overHangLength - thickness, 0], %)
- |> line([0, -thickness], %)
- |> line([-overHangLength, 0], %)
+ |> startProfile(at = [insideDia / 2, 0])
+ |> line(end = [0, thickness + sphereDia / 2])
+ |> line(end = [overHangLength, 0])
+ |> line(end = [0, -thickness])
+ |> line(end = [-overHangLength + thickness, 0])
+ |> line(end = [0, -sphereDia])
+ |> line(end = [overHangLength - thickness, 0])
+ |> line(end = [0, -thickness])
+ |> line(end = [-overHangLength, 0])
|> close()
- |> revolve({ axis = Y }, %)
+ |> revolve(axis = Y)
// Sketch and revolve one of the balls and duplicate it using a circular pattern. (This is currently a workaround, we have a bug with rotating on a sketch that touches the rotation axis)
sphere = startSketchOn(XZ)
- |> startProfileAt([
+ |> startProfile(at = [
0.05 + insideDia / 2 + thickness,
0 - 0.05
- ], %)
- |> line([sphereDia - 0.1, 0], %)
- |> arc({
- angle_start = 0,
- angle_end = -180,
- radius = sphereDia / 2 - 0.05
- }, %)
+ ])
+ |> line(end = [sphereDia - 0.1, 0])
+ |> arc(angle_start = 0, angle_end = -180, radius = sphereDia / 2 - 0.05)
|> close()
- |> revolve({ axis = X }, %)
+ |> revolve(axis = X)
|> patternCircular3d(
axis = [0, 0, 1],
center = [0, 0, 0],
@@ -1352,20 +1352,20 @@ sphere = startSketchOn(XZ)
// Sketch and revolve the outside bearing
outsideRevolve = startSketchOn(XZ)
- |> startProfileAt([
+ |> startProfile(at = [
insideDia / 2 + thickness + sphereDia,
0
- ], %)
- |> line([0, sphereDia / 2], %)
- |> line([-overHangLength + thickness, 0], %)
- |> line([0, thickness], %)
- |> line([overHangLength, 0], %)
- |> line([0, -2 * thickness - sphereDia], %)
- |> line([-overHangLength, 0], %)
- |> line([0, thickness], %)
- |> line([overHangLength - thickness, 0], %)
+ ])
+ |> line(end = [0, sphereDia / 2])
+ |> line(end = [-overHangLength + thickness, 0])
+ |> line(end = [0, thickness])
+ |> line(end = [overHangLength, 0])
+ |> line(end = [0, -2 * thickness - sphereDia])
+ |> line(end = [-overHangLength, 0])
+ |> line(end = [0, thickness])
+ |> line(end = [overHangLength - thickness, 0])
|> close()
- |> revolve({ axis = Y }, %)
+ |> revolve(axis = Y)
"#
);
}
@@ -1458,7 +1458,7 @@ f = [1, 2, 3]: [number; 1+]
let some_program_string = r#"bing = { yo = 55 }
myNestedVar = [
{
- prop: line([bing.yo, 21], sketch001)
+ prop: line(a = [bing.yo, 21], b = sketch001)
}
]
"#;
@@ -1470,7 +1470,7 @@ myNestedVar = [
r#"bing = { yo = 55 }
myNestedVar = [
{
- prop = line([bing.yo, 21], sketch001)
+ prop = line(a = [bing.yo, 21], b = sketch001)
}
]
"#
@@ -1502,10 +1502,10 @@ myNestedVar = [
fn test_recast_shebang() {
let some_program_string = r#"#!/usr/local/env zoo kcl
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#;
@@ -1517,10 +1517,10 @@ part001 = startSketchOn(XY)
r#"#!/usr/local/env zoo kcl
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#
);
@@ -1533,10 +1533,10 @@ part001 = startSketchOn(XY)
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#;
@@ -1548,10 +1548,10 @@ part001 = startSketchOn(XY)
r#"#!/usr/local/env zoo kcl
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#
);
@@ -1563,10 +1563,10 @@ part001 = startSketchOn(XY)
// Yo yo my comments.
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#;
@@ -1579,10 +1579,10 @@ part001 = startSketchOn(XY)
// Yo yo my comments.
part001 = startSketchOn(XY)
- |> startProfileAt([-10, -10], %)
- |> line([20, 0], %)
- |> line([0, 20], %)
- |> line([-20, 0], %)
+ |> startProfile(at = [-10, -10])
+ |> line(end = [20, 0])
+ |> line(end = [0, 20])
+ |> line(end = [-20, 0])
|> close()
"#
);
@@ -1613,7 +1613,7 @@ hole_diam = 5
// define a rectangular shape func
fn rectShape(pos, w, l) {
rr = startSketchOn(XY)
- |> startProfileAt([pos[0] - (w / 2), pos[1] - (l / 2)], %)
+ |> startProfile(at = [pos[0] - (w / 2), pos[1] - (l / 2)])
|> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge1)
|> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge2)
|> line(endAbsolute = [pos[0] - (w / 2), pos[1] + l / 2], tag = $edge3)
@@ -1622,8 +1622,8 @@ fn rectShape(pos, w, l) {
}
// build the body of the focusrite scarlett solo gen 4
// only used for visualization
-scarlett_body = rectShape([0, 0], width, length)
- |> extrude(depth, %)
+scarlett_body = rectShape(pos = [0, 0], w = width, l = length)
+ |> extrude(depth)
|> fillet(
radius = radius,
tags = [
@@ -1636,14 +1636,14 @@ scarlett_body = rectShape([0, 0], width, length)
// build the bracket sketch around the body
fn bracketSketch(w, d, t) {
s = startSketchOn({
- plane: {
+ plane = {
origin = { x = 0, y = length / 2 + thk, z = 0 },
x_axis = { x = 1, y = 0, z = 0 },
y_axis = { x = 0, y = 0, z = 1 },
z_axis = { x = 0, y = 1, z = 0 }
}
})
- |> startProfileAt([-w / 2 - t, d + t], %)
+ |> startProfile(at = [-w / 2 - t, d + t])
|> line(endAbsolute = [-w / 2 - t, -t], tag = $edge1)
|> line(endAbsolute = [w / 2 + t, -t], tag = $edge2)
|> line(endAbsolute = [w / 2 + t, d + t], tag = $edge3)
@@ -1655,8 +1655,8 @@ fn bracketSketch(w, d, t) {
return s
}
// build the body of the bracket
-bracket_body = bracketSketch(width, depth, thk)
- |> extrude(length + 10, %)
+bracket_body = bracketSketch(w = width, d = depth, t = thk)
+ |> extrude(length + 10)
|> fillet(
radius = radius,
tags = [
@@ -1668,26 +1668,26 @@ bracket_body = bracketSketch(width, depth, thk)
)
// build the tabs of the mounting bracket (right side)
tabs_r = startSketchOn({
- plane: {
+ plane = {
origin = { x = 0, y = 0, z = depth + thk },
x_axis = { x = 1, y = 0, z = 0 },
y_axis = { x = 0, y = 1, z = 0 },
z_axis = { x = 0, y = 0, z = 1 }
}
})
- |> startProfileAt([width / 2 + thk, length / 2 + thk], %)
- |> line([10, -5], %)
- |> line([0, -10], %)
- |> line([-10, -5], %)
+ |> startProfile(at = [width / 2 + thk, length / 2 + thk])
+ |> line(end = [10, -5])
+ |> line(end = [0, -10])
+ |> line(end = [-10, -5])
|> close()
- |> hole(circle(
+ |> subtract2d(tool = circle(
center = [
width / 2 + thk + hole_diam,
length / 2 - hole_diam
],
radius = hole_diam / 2
- ), %)
- |> extrude(-thk, %)
+ ))
+ |> extrude(-thk)
|> patternLinear3d(
axis = [0, -1, 0],
repetitions = 1,
@@ -1695,26 +1695,26 @@ tabs_r = startSketchOn({
)
// build the tabs of the mounting bracket (left side)
tabs_l = startSketchOn({
- plane: {
+ plane = {
origin = { x = 0, y = 0, z = depth + thk },
x_axis = { x = 1, y = 0, z = 0 },
y_axis = { x = 0, y = 1, z = 0 },
z_axis = { x = 0, y = 0, z = 1 }
}
})
- |> startProfileAt([-width / 2 - thk, length / 2 + thk], %)
- |> line([-10, -5], %)
- |> line([0, -10], %)
- |> line([10, -5], %)
+ |> startProfile(at = [-width / 2 - thk, length / 2 + thk])
+ |> line(end = [-10, -5])
+ |> line(end = [0, -10])
+ |> line(end = [10, -5])
|> close()
- |> hole(circle(
+ |> subtract2d(tool = circle(
center = [
-width / 2 - thk - hole_diam,
length / 2 - hole_diam
],
radius = hole_diam / 2
- ), %)
- |> extrude(-thk, %)
+ ))
+ |> extrude(-thk)
|> patternLinear3d(axis = [0, -1, 0], repetitions = 1, distance = length - 10ft)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -1735,7 +1735,7 @@ hole_diam = 5
// define a rectangular shape func
fn rectShape(pos, w, l) {
rr = startSketchOn(XY)
- |> startProfileAt([pos[0] - (w / 2), pos[1] - (l / 2)], %)
+ |> startProfile(at = [pos[0] - (w / 2), pos[1] - (l / 2)])
|> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge1)
|> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge2)
|> line(endAbsolute = [pos[0] - (w / 2), pos[1] + l / 2], tag = $edge3)
@@ -1744,8 +1744,8 @@ fn rectShape(pos, w, l) {
}
// build the body of the focusrite scarlett solo gen 4
// only used for visualization
-scarlett_body = rectShape([0, 0], width, length)
- |> extrude(depth, %)
+scarlett_body = rectShape(pos = [0, 0], w = width, l = length)
+ |> extrude(depth)
|> fillet(
radius = radius,
tags = [
@@ -1765,7 +1765,7 @@ fn bracketSketch(w, d, t) {
z_axis = { x = 0, y = 1, z = 0 }
}
})
- |> startProfileAt([-w / 2 - t, d + t], %)
+ |> startProfile(at = [-w / 2 - t, d + t])
|> line(endAbsolute = [-w / 2 - t, -t], tag = $edge1)
|> line(endAbsolute = [w / 2 + t, -t], tag = $edge2)
|> line(endAbsolute = [w / 2 + t, d + t], tag = $edge3)
@@ -1777,8 +1777,8 @@ fn bracketSketch(w, d, t) {
return s
}
// build the body of the bracket
-bracket_body = bracketSketch(width, depth, thk)
- |> extrude(length + 10, %)
+bracket_body = bracketSketch(w = width, d = depth, t = thk)
+ |> extrude(length + 10)
|> fillet(
radius = radius,
tags = [
@@ -1797,19 +1797,19 @@ tabs_r = startSketchOn({
z_axis = { x = 0, y = 0, z = 1 }
}
})
- |> startProfileAt([width / 2 + thk, length / 2 + thk], %)
- |> line([10, -5], %)
- |> line([0, -10], %)
- |> line([-10, -5], %)
+ |> startProfile(at = [width / 2 + thk, length / 2 + thk])
+ |> line(end = [10, -5])
+ |> line(end = [0, -10])
+ |> line(end = [-10, -5])
|> close()
- |> hole(circle(
+ |> subtract2d(tool = circle(
center = [
width / 2 + thk + hole_diam,
length / 2 - hole_diam
],
radius = hole_diam / 2,
- ), %)
- |> extrude(-thk, %)
+ ))
+ |> extrude(-thk)
|> patternLinear3d(axis = [0, -1, 0], repetitions = 1, distance = length - 10)
// build the tabs of the mounting bracket (left side)
tabs_l = startSketchOn({
@@ -1820,19 +1820,19 @@ tabs_l = startSketchOn({
z_axis = { x = 0, y = 0, z = 1 }
}
})
- |> startProfileAt([-width / 2 - thk, length / 2 + thk], %)
- |> line([-10, -5], %)
- |> line([0, -10], %)
- |> line([10, -5], %)
+ |> startProfile(at = [-width / 2 - thk, length / 2 + thk])
+ |> line(end = [-10, -5])
+ |> line(end = [0, -10])
+ |> line(end = [10, -5])
|> close()
- |> hole(circle(
+ |> subtract2d(tool = circle(
center = [
-width / 2 - thk - hole_diam,
length / 2 - hole_diam
],
radius = hole_diam / 2,
- ), %)
- |> extrude(-thk, %)
+ ))
+ |> extrude(-thk)
|> patternLinear3d(axis = [0, -1, 0], repetitions = 1, distance = length - 10ft)
"#
);
@@ -1842,12 +1842,12 @@ tabs_l = startSketchOn({
fn test_recast_nested_var_declaration_in_fn_body() {
let some_program_string = r#"fn cube(pos, scale) {
sg = startSketchOn(XY)
- |> startProfileAt(pos, %)
- |> line([0, scale], %)
- |> line([scale, 0], %)
- |> line([0, -scale], %)
+ |> startProfile(at = pos)
+ |> line(end = [0, scale])
+ |> line(end = [scale, 0])
+ |> line(end = [0, -scale])
|> close()
- |> extrude(scale, %)
+ |> extrude(scale)
}"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -1856,12 +1856,12 @@ tabs_l = startSketchOn({
recasted,
r#"fn cube(pos, scale) {
sg = startSketchOn(XY)
- |> startProfileAt(pos, %)
- |> line([0, scale], %)
- |> line([scale, 0], %)
- |> line([0, -scale], %)
+ |> startProfile(at = pos)
+ |> line(end = [0, scale])
+ |> line(end = [scale, 0])
+ |> line(end = [0, -scale])
|> close()
- |> extrude(scale, %)
+ |> extrude(scale)
}
"#
);
@@ -1873,15 +1873,15 @@ tabs_l = startSketchOn({
x = dfsfs + dfsfsd as y
sg = startSketchOn(XY)
- |> startProfileAt(pos, %) as foo
- |> line([0, scale], %)
- |> line([scale, 0], %) as bar
- |> line([0 as baz, -scale] as qux, %)
+ |> startProfile(at = pos) as foo
+ |> line([0, scale])
+ |> line([scale, 0]) as bar
+ |> line([0 as baz, -scale] as qux)
|> close()
- |> extrude(scale, %)
+ |> extrude(length = scale)
}
-cube(0, 0) as cub
+cube(pos = 0, scale = 0) as cub
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -1892,18 +1892,18 @@ cube(0, 0) as cub
#[test]
fn test_recast_with_bad_indentation() {
let some_program_string = r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %)
- |> line([0.6804562304, 0.9087880491], %)"#;
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666])
+ |> line(end = [0.6804562304, 0.9087880491])"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
assert_eq!(
recasted,
r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %)
- |> line([0.6804562304, 0.9087880491], %)
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666])
+ |> line(end = [0.6804562304, 0.9087880491])
"#
);
}
@@ -1911,38 +1911,38 @@ cube(0, 0) as cub
#[test]
fn test_recast_with_bad_indentation_and_inline_comment() {
let some_program_string = r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %) // hello world
- |> line([0.6804562304, 0.9087880491], %)"#;
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666]) // hello world
+ |> line(end = [0.6804562304, 0.9087880491])"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
assert_eq!(
recasted,
r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %) // hello world
- |> line([0.6804562304, 0.9087880491], %)
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666]) // hello world
+ |> line(end = [0.6804562304, 0.9087880491])
"#
);
}
#[test]
fn test_recast_with_bad_indentation_and_line_comment() {
let some_program_string = r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %)
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666])
// hello world
- |> line([0.6804562304, 0.9087880491], %)"#;
+ |> line(end = [0.6804562304, 0.9087880491])"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
assert_eq!(
recasted,
r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %)
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666])
// hello world
- |> line([0.6804562304, 0.9087880491], %)
+ |> line(end = [0.6804562304, 0.9087880491])
"#
);
}
@@ -2085,7 +2085,7 @@ thing = 'foo'
/* comment at start */
mySk1 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)"#;
+ |> startProfile(at = [0, 0])"#;
let program = crate::parsing::top_level_parse(test_program).unwrap();
let recasted = program.recast(&Default::default(), 0);
@@ -2094,7 +2094,7 @@ mySk1 = startSketchOn(XY)
r#"/* comment at start */
mySk1 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
"#
);
}
@@ -2103,7 +2103,7 @@ mySk1 = startSketchOn(XY)
fn test_recast_lots_of_comments() {
let some_program_string = r#"// comment at start
mySk1 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(endAbsolute = [1, 1])
// comment here
|> line(endAbsolute = [0, 1], tag = $myTag)
@@ -2112,10 +2112,10 @@ mySk1 = startSketchOn(XY)
here
*/
// a comment between pipe expression statements
- |> rx(90, %)
+ |> rx(90)
// and another with just white space between others below
- |> ry(45, %)
- |> rx(45, %)
+ |> ry(45)
+ |> rx(45)
// one more for good measure"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -2124,7 +2124,7 @@ mySk1 = startSketchOn(XY)
recasted,
r#"// comment at start
mySk1 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> line(endAbsolute = [1, 1])
// comment here
|> line(endAbsolute = [0, 1], tag = $myTag)
@@ -2132,10 +2132,10 @@ mySk1 = startSketchOn(XY)
/* and
here */
// a comment between pipe expression statements
- |> rx(90, %)
+ |> rx(90)
// and another with just white space between others below
- |> ry(45, %)
- |> rx(45, %)
+ |> ry(45)
+ |> rx(45)
// one more for good measure
"#
);
@@ -2223,10 +2223,10 @@ myVar3 = 6
myAng = 40
myAng2 = 134
part001 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([1, 3.82], %, $seg01) // ln-should-get-tag
- |> angledLine(angle = -foo(seg01, myVar, %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper
- |> angledLine(angle = -bar(seg01, myVar, %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper"#;
+ |> startProfile(at = [0, 0])
+ |> line(end = [1, 3.82], tag = $seg01) // ln-should-get-tag
+ |> angledLine(angle = -foo(x = seg01, y = myVar, z = %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper
+ |> angledLine(angle = -bar(x = seg01, y = myVar, z = %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
@@ -2241,10 +2241,10 @@ myVar3 = 6
myAng = 40
myAng2 = 134
part001 = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([1, 3.82], %, $seg01) // ln-should-get-tag
- |> angledLine(angle = -foo(seg01, myVar, %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper
- |> angledLine(angle = -bar(seg01, myVar, %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper
+ |> startProfile(at = [0, 0])
+ |> line(end = [1, 3.82], tag = $seg01) // ln-should-get-tag
+ |> angledLine(angle = -foo(x = seg01, y = myVar, z = %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper
+ |> angledLine(angle = -bar(x = seg01, y = myVar, z = %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -2262,8 +2262,8 @@ part001 = startSketchOn(XY)
#[test]
fn test_recast_after_rename_std() {
let some_program_string = r#"part001 = startSketchOn(XY)
- |> startProfileAt([0.0000000000, 5.0000000000], %)
- |> line([0.4900857016, -0.0240763666], %)
+ |> startProfile(at = [0.0000000000, 5.0000000000])
+ |> line(end = [0.4900857016, -0.0240763666])
part002 = "part002"
things = [part001, 0.0]
@@ -2282,8 +2282,8 @@ fn ghi(part001) {
assert_eq!(
recasted,
r#"mySuperCoolPart = startSketchOn(XY)
- |> startProfileAt([0.0, 5.0], %)
- |> line([0.4900857016, -0.0240763666], %)
+ |> startProfile(at = [0.0, 5.0])
+ |> line(end = [0.4900857016, -0.0240763666])
part002 = "part002"
things = [mySuperCoolPart, 0.0]
@@ -2319,24 +2319,24 @@ fn ghi(part001) {
#[test]
fn test_recast_trailing_comma() {
let some_program_string = r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> arc({
radius = 1,
angle_start = 0,
angle_end = 180,
- }, %)"#;
+ })"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
assert_eq!(
recasted,
r#"startSketchOn(XY)
- |> startProfileAt([0, 0], %)
+ |> startProfile(at = [0, 0])
|> arc({
radius = 1,
angle_start = 0,
angle_end = 180
- }, %)
+ })
"#
);
}
@@ -2348,12 +2348,12 @@ l = 8
h = 10
firstExtrude = startSketchOn(XY)
- |> startProfileAt([0,0], %)
- |> line([0, l], %)
- |> line([w, 0], %)
- |> line([0, -l], %)
+ |> startProfile(at = [0,0])
+ |> line(end = [0, l])
+ |> line(end = [w, 0])
+ |> line(end = [0, -l])
|> close()
- |> extrude(h, %)
+ |> extrude(h)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -2365,12 +2365,12 @@ l = 8
h = 10
firstExtrude = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([0, l], %)
- |> line([w, 0], %)
- |> line([0, -l], %)
+ |> startProfile(at = [0, 0])
+ |> line(end = [0, l])
+ |> line(end = [w, 0])
+ |> line(end = [0, -l])
|> close()
- |> extrude(h, %)
+ |> extrude(h)
"#
);
}
@@ -2385,12 +2385,12 @@ h = 10
// It has multiple lines
// And it's really long
firstExtrude = startSketchOn(XY)
- |> startProfileAt([0,0], %)
- |> line([0, l], %)
- |> line([w, 0], %)
- |> line([0, -l], %)
+ |> startProfile(at = [0,0])
+ |> line(end = [0, l])
+ |> line(end = [w, 0])
+ |> line(end = [0, -l])
|> close()
- |> extrude(h, %)
+ |> extrude(h)
"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
@@ -2405,12 +2405,12 @@ h = 10
// It has multiple lines
// And it's really long
firstExtrude = startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([0, l], %)
- |> line([w, 0], %)
- |> line([0, -l], %)
+ |> startProfile(at = [0, 0])
+ |> line(end = [0, l])
+ |> line(end = [w, 0])
+ |> line(end = [0, -l])
|> close()
- |> extrude(h, %)
+ |> extrude(h)
"#
);
}
@@ -2430,11 +2430,11 @@ firstExtrude = startSketchOn(XY)
thickness = 0.5
startSketchOn(XY)
- |> startProfileAt([0, 0], %)
- |> line([0, -(wallMountL - thickness)], %)
- |> line([0, -(5 - thickness)], %)
- |> line([0, -(5 - 1)], %)
- |> line([0, -(-5 - 1)], %)"#;
+ |> startProfile(at = [0, 0])
+ |> line(end = [0, -(wallMountL - thickness)])
+ |> line(end = [0, -(5 - thickness)])
+ |> line(end = [0, -(5 - 1)])
+ |> line(end = [0, -(-5 - 1)])"#;
let program = crate::parsing::top_level_parse(some_program_string).unwrap();
let recasted = program.recast(&Default::default(), 0);
@@ -2560,9 +2560,13 @@ sketch002 = startSketchOn({
#[test]
fn unparse_fn_unnamed() {
- let input = r#"squares_out = reduce(arr, 0: number, fn(i, squares) {
- return 1
-})
+ let input = r#"squares_out = reduce(
+ arr,
+ n = 0: number,
+ f = fn(i, squares) {
+ return 1
+ },
+)
"#;
let ast = crate::parsing::top_level_parse(input).unwrap();
let actual = ast.recast(&FormatOptions::new(), 0);
diff --git a/rust/kcl-lib/std/solid.kcl b/rust/kcl-lib/std/solid.kcl
index b9e589858..ad51dee73 100644
--- a/rust/kcl-lib/std/solid.kcl
+++ b/rust/kcl-lib/std/solid.kcl
@@ -117,7 +117,7 @@ export fn fillet(
/// return sg
/// }
///
-/// part001 = cube([0,0], 20)
+/// part001 = cube(pos = [0,0], scale = 20)
/// |> close(tag = $line1)
/// |> extrude(length = 20)
/// // We tag the chamfer to reference it later.
diff --git a/rust/kcl-lib/std/types.kcl b/rust/kcl-lib/std/types.kcl
index 995221bb3..64c45b3c3 100644
--- a/rust/kcl-lib/std/types.kcl
+++ b/rust/kcl-lib/std/types.kcl
@@ -1,6 +1,10 @@
@no_std
@settings(defaultLengthUnit = mm)
+/// Any value.
+@(impl = primitive)
+export type any
+
/// A number
///
/// May be signed or unsigned, an integer or decimal value.
@@ -84,8 +88,8 @@ export type string
/// |> close()
/// }
///
-/// rect([0, 0])
-/// rect([20, 0])
+/// rect(origin = [0, 0])
+/// rect(origin = [20, 0])
/// ```
///
/// Those tags would only be available in the `rect` function and not globally.
@@ -112,8 +116,8 @@ export type string
/// |> close()
/// }
///
-/// rect([0, 0])
-/// myRect = rect([20, 0])
+/// rect(origin = [0, 0])
+/// myRect = rect(origin = [20, 0])
///
/// myRect
/// |> extrude(length = 10)
diff --git a/rust/kcl-lib/tests/add_lots/ast.snap b/rust/kcl-lib/tests/add_lots/ast.snap
index 267a77e27..0c13597e8 100644
--- a/rust/kcl-lib/tests/add_lots/ast.snap
+++ b/rust/kcl-lib/tests/add_lots/ast.snap
@@ -79,7 +79,8 @@ description: Result of parsing add_lots.kcl
"name": "i",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/add_lots/input.kcl b/rust/kcl-lib/tests/add_lots/input.kcl
index 9908919ea..b57329a2f 100644
--- a/rust/kcl-lib/tests/add_lots/input.kcl
+++ b/rust/kcl-lib/tests/add_lots/input.kcl
@@ -1,4 +1,4 @@
-fn f(i) {
+fn f(@i) {
return i * 2
}
diff --git a/rust/kcl-lib/tests/add_lots/unparsed.snap b/rust/kcl-lib/tests/add_lots/unparsed.snap
index 5fe7fdfe8..54d33f03a 100644
--- a/rust/kcl-lib/tests/add_lots/unparsed.snap
+++ b/rust/kcl-lib/tests/add_lots/unparsed.snap
@@ -2,7 +2,7 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing add_lots.kcl
---
-fn f(i) {
+fn f(@i) {
return i * 2
}
diff --git a/rust/kcl-lib/tests/argument_error/ast.snap b/rust/kcl-lib/tests/argument_error/ast.snap
index 6c71a2c73..db4f99689 100644
--- a/rust/kcl-lib/tests/argument_error/ast.snap
+++ b/rust/kcl-lib/tests/argument_error/ast.snap
@@ -55,7 +55,8 @@ description: Result of parsing argument_error.kcl
"name": "i",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -77,53 +78,47 @@ description: Result of parsing argument_error.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "f",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
@@ -144,8 +139,24 @@ description: Result of parsing argument_error.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "f",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
"start": 0,
"type": "ExpressionStatement",
diff --git a/rust/kcl-lib/tests/argument_error/execution_error.snap b/rust/kcl-lib/tests/argument_error/execution_error.snap
index e16a1568f..45f8382ea 100644
--- a/rust/kcl-lib/tests/argument_error/execution_error.snap
+++ b/rust/kcl-lib/tests/argument_error/execution_error.snap
@@ -8,7 +8,7 @@ KCL Semantic error
│ Vec but it's actually of type Function
╭─[5:5]
4 │
- 5 │ map(f, [0, 1])
+ 5 │ map(f, f = [0, 1])
· ┬
· ╰── tests/argument_error/input.kcl
╰────
diff --git a/rust/kcl-lib/tests/argument_error/input.kcl b/rust/kcl-lib/tests/argument_error/input.kcl
index e9d750548..5443dce2c 100644
--- a/rust/kcl-lib/tests/argument_error/input.kcl
+++ b/rust/kcl-lib/tests/argument_error/input.kcl
@@ -1,5 +1,5 @@
-fn f(i) {
+fn f(@i) {
return 5
}
-map(f, [0, 1])
+map(f, f = [0, 1])
diff --git a/rust/kcl-lib/tests/argument_error/unparsed.snap b/rust/kcl-lib/tests/argument_error/unparsed.snap
index 464ef539e..b85dd2120 100644
--- a/rust/kcl-lib/tests/argument_error/unparsed.snap
+++ b/rust/kcl-lib/tests/argument_error/unparsed.snap
@@ -2,8 +2,8 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing argument_error.kcl
---
-fn f(i) {
+fn f(@i) {
return 5
}
-map(f, [0, 1])
+map(f, f = [0, 1])
diff --git a/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap b/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap
index f4488027b..4376cdf07 100644
--- a/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap
+++ b/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap
@@ -422,53 +422,73 @@ description: Result of parsing bad_units_in_annotation.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "oxygenRadius",
+ "name": "center",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "radius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "oxygenRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -489,8 +509,9 @@ description: Result of parsing bad_units_in_annotation.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -784,61 +805,81 @@ description: Result of parsing bad_units_in_annotation.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hydrogenOffsetX",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hydrogenOffsetY",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "hydrogenRadius",
+ "name": "center",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hydrogenOffsetX",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hydrogenOffsetY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "radius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hydrogenRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -859,8 +900,9 @@ description: Result of parsing bad_units_in_annotation.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -891,17 +933,49 @@ description: Result of parsing bad_units_in_annotation.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hydrogenOffsetX",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "hydrogenOffsetX",
+ "name": "hydrogenOffsetY",
"start": 0,
"type": "Identifier"
},
@@ -909,51 +983,39 @@ description: Result of parsing bad_units_in_annotation.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hydrogenOffsetY",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "hydrogenRadius",
+ "name": "radius",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hydrogenRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -974,8 +1036,9 @@ description: Result of parsing bad_units_in_annotation.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/bad_units_in_annotation/input.kcl b/rust/kcl-lib/tests/bad_units_in_annotation/input.kcl
index e5fbde6a9..b23019562 100644
--- a/rust/kcl-lib/tests/bad_units_in_annotation/input.kcl
+++ b/rust/kcl-lib/tests/bad_units_in_annotation/input.kcl
@@ -17,12 +17,12 @@ fn createAtom(center, radius) {
}
// Create the oxygen atom at the origin
-oxygenAtom = createAtom([0, 0], oxygenRadius)
+oxygenAtom = createAtom(center = [0, 0], radius = oxygenRadius)
// Calculate the positions of the hydrogen atoms
hydrogenOffsetX = oxygenHydrogenDistance * cos(toRadians(bondAngle / 2))
hydrogenOffsetY = oxygenHydrogenDistance * sin(toRadians(bondAngle / 2))
// Create the hydrogen atoms
-hydrogenAtom1 = createAtom([hydrogenOffsetX, hydrogenOffsetY], hydrogenRadius)
-hydrogenAtom2 = createAtom([-hydrogenOffsetX, hydrogenOffsetY], hydrogenRadius)
+hydrogenAtom1 = createAtom(center = [hydrogenOffsetX, hydrogenOffsetY], radius = hydrogenRadius)
+hydrogenAtom2 = createAtom(center = [-hydrogenOffsetX, hydrogenOffsetY], radius = hydrogenRadius)
diff --git a/rust/kcl-lib/tests/bad_units_in_annotation/unparsed.snap b/rust/kcl-lib/tests/bad_units_in_annotation/unparsed.snap
index e9551f5ce..6e34a1483 100644
--- a/rust/kcl-lib/tests/bad_units_in_annotation/unparsed.snap
+++ b/rust/kcl-lib/tests/bad_units_in_annotation/unparsed.snap
@@ -21,12 +21,12 @@ fn createAtom(center, radius) {
}
// Create the oxygen atom at the origin
-oxygenAtom = createAtom([0, 0], oxygenRadius)
+oxygenAtom = createAtom(center = [0, 0], radius = oxygenRadius)
// Calculate the positions of the hydrogen atoms
hydrogenOffsetX = oxygenHydrogenDistance * cos(toRadians(bondAngle / 2))
hydrogenOffsetY = oxygenHydrogenDistance * sin(toRadians(bondAngle / 2))
// Create the hydrogen atoms
-hydrogenAtom1 = createAtom([hydrogenOffsetX, hydrogenOffsetY], hydrogenRadius)
-hydrogenAtom2 = createAtom([-hydrogenOffsetX, hydrogenOffsetY], hydrogenRadius)
+hydrogenAtom1 = createAtom(center = [hydrogenOffsetX, hydrogenOffsetY], radius = hydrogenRadius)
+hydrogenAtom2 = createAtom(center = [-hydrogenOffsetX, hydrogenOffsetY], radius = hydrogenRadius)
diff --git a/rust/kcl-lib/tests/cube_with_error/ast.snap b/rust/kcl-lib/tests/cube_with_error/ast.snap
index bbdd37fea..ee0652279 100644
--- a/rust/kcl-lib/tests/cube_with_error/ast.snap
+++ b/rust/kcl-lib/tests/cube_with_error/ast.snap
@@ -1105,49 +1105,69 @@ description: Result of parsing cube_with_error.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "40",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 40.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "40",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 40.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
@@ -1168,8 +1188,9 @@ description: Result of parsing cube_with_error.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/cube_with_error/input.kcl b/rust/kcl-lib/tests/cube_with_error/input.kcl
index 0331a1285..176b01a01 100644
--- a/rust/kcl-lib/tests/cube_with_error/input.kcl
+++ b/rust/kcl-lib/tests/cube_with_error/input.kcl
@@ -17,7 +17,7 @@ fn cube(length, center) {
|> extrude(length = length)
}
-myCube = cube(40, [0, 0])
+myCube = cube(length = 40, center = [0, 0])
// Error, after creating meaningful output.
foo
diff --git a/rust/kcl-lib/tests/cube_with_error/ops.snap b/rust/kcl-lib/tests/cube_with_error/ops.snap
index 756b2d2d3..2895df93a 100644
--- a/rust/kcl-lib/tests/cube_with_error/ops.snap
+++ b/rust/kcl-lib/tests/cube_with_error/ops.snap
@@ -57,7 +57,58 @@ description: Operations executed cube_with_error.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "center": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "length": {
+ "value": {
+ "type": "Number",
+ "value": 40.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/cube_with_error/unparsed.snap b/rust/kcl-lib/tests/cube_with_error/unparsed.snap
index 4ff3a9e1b..b308dd42e 100644
--- a/rust/kcl-lib/tests/cube_with_error/unparsed.snap
+++ b/rust/kcl-lib/tests/cube_with_error/unparsed.snap
@@ -21,7 +21,7 @@ fn cube(length, center) {
|> extrude(length = length)
}
-myCube = cube(40, [0, 0])
+myCube = cube(length = 40, center = [0, 0])
// Error, after creating meaningful output.
foo
diff --git a/rust/kcl-lib/tests/double_map_fn/ast.snap b/rust/kcl-lib/tests/double_map_fn/ast.snap
index abdb0c8a9..00e28c89b 100644
--- a/rust/kcl-lib/tests/double_map_fn/ast.snap
+++ b/rust/kcl-lib/tests/double_map_fn/ast.snap
@@ -79,7 +79,8 @@ description: Result of parsing double_map_fn.kcl
"name": "i",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/double_map_fn/input.kcl b/rust/kcl-lib/tests/double_map_fn/input.kcl
index 1d3594a4a..bf1407ac9 100644
--- a/rust/kcl-lib/tests/double_map_fn/input.kcl
+++ b/rust/kcl-lib/tests/double_map_fn/input.kcl
@@ -1,4 +1,4 @@
-fn increment(i) {
+fn increment(@i) {
return i + 1
}
diff --git a/rust/kcl-lib/tests/double_map_fn/unparsed.snap b/rust/kcl-lib/tests/double_map_fn/unparsed.snap
index 38c716766..1382ce73d 100644
--- a/rust/kcl-lib/tests/double_map_fn/unparsed.snap
+++ b/rust/kcl-lib/tests/double_map_fn/unparsed.snap
@@ -2,7 +2,7 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing double_map_fn.kcl
---
-fn increment(i) {
+fn increment(@i) {
return i + 1
}
diff --git a/rust/kcl-lib/tests/fillet-and-shell/ast.snap b/rust/kcl-lib/tests/fillet-and-shell/ast.snap
index c1a4013c0..ba795a618 100644
--- a/rust/kcl-lib/tests/fillet-and-shell/ast.snap
+++ b/rust/kcl-lib/tests/fillet-and-shell/ast.snap
@@ -2558,132 +2558,21 @@ description: Result of parsing fillet-and-shell.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "border",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "rpizWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
+ "name": "x",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "widthBetweenScrews",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
"commentStart": 0,
"end": 0,
"left": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "operator": "+",
- "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -2699,11 +2588,48 @@ description: Result of parsing fillet-and-shell.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
@@ -2714,7 +2640,7 @@ description: Result of parsing fillet-and-shell.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "rpizLength",
+ "name": "widthBetweenScrews",
"start": 0,
"type": "Identifier"
},
@@ -2743,63 +2669,167 @@ description: Result of parsing fillet-and-shell.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
"commentStart": 0,
"end": 0,
- "name": "lengthBetweenScrews",
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "border",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"start": 0,
- "type": "Identifier"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "/",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "lengthBetweenScrews",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "screwHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "screwHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -2820,8 +2850,9 @@ description: Result of parsing fillet-and-shell.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -2833,132 +2864,21 @@ description: Result of parsing fillet-and-shell.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "border",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "rpizWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
+ "name": "x",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "widthBetweenScrews",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
"commentStart": 0,
"end": 0,
"left": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "operator": "+",
- "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -2974,11 +2894,48 @@ description: Result of parsing fillet-and-shell.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
@@ -2989,7 +2946,7 @@ description: Result of parsing fillet-and-shell.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "rpizLength",
+ "name": "widthBetweenScrews",
"start": 0,
"type": "Identifier"
},
@@ -3018,63 +2975,167 @@ description: Result of parsing fillet-and-shell.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
"commentStart": 0,
"end": 0,
- "name": "lengthBetweenScrews",
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "border",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"start": 0,
- "type": "Identifier"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "/",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "lengthBetweenScrews",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "screwHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "screwHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3095,8 +3156,9 @@ description: Result of parsing fillet-and-shell.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -3108,132 +3170,21 @@ description: Result of parsing fillet-and-shell.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "border",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "rpizWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
+ "name": "x",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "widthBetweenScrews",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
"commentStart": 0,
"end": 0,
"left": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "operator": "+",
- "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -3249,6 +3200,43 @@ description: Result of parsing fillet-and-shell.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
@@ -3264,7 +3252,7 @@ description: Result of parsing fillet-and-shell.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "rpizLength",
+ "name": "widthBetweenScrews",
"start": 0,
"type": "Identifier"
},
@@ -3293,63 +3281,167 @@ description: Result of parsing fillet-and-shell.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
"commentStart": 0,
"end": 0,
- "name": "lengthBetweenScrews",
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "border",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"start": 0,
- "type": "Identifier"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "/",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "lengthBetweenScrews",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "screwHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "screwHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3370,8 +3462,9 @@ description: Result of parsing fillet-and-shell.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -3383,132 +3476,21 @@ description: Result of parsing fillet-and-shell.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "border",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "rpizWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
+ "name": "x",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "widthBetweenScrews",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
"commentStart": 0,
"end": 0,
"left": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "operator": "+",
- "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -3524,6 +3506,43 @@ description: Result of parsing fillet-and-shell.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
@@ -3539,7 +3558,7 @@ description: Result of parsing fillet-and-shell.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "rpizLength",
+ "name": "widthBetweenScrews",
"start": 0,
"type": "Identifier"
},
@@ -3568,63 +3587,167 @@ description: Result of parsing fillet-and-shell.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
"commentStart": 0,
"end": 0,
- "name": "lengthBetweenScrews",
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "border",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"start": 0,
- "type": "Identifier"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "rpizLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "/",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "lengthBetweenScrews",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "screwHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "screwHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3645,8 +3768,9 @@ description: Result of parsing fillet-and-shell.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -3879,39 +4003,6 @@ description: Result of parsing fillet-and-shell.kcl
}
}
],
- "19": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "NonCodeNode",
- "value": {
- "type": "newLine"
- }
- }
- ],
- "20": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "NonCodeNode",
- "value": {
- "type": "newLine"
- }
- }
- ],
- "21": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "NonCodeNode",
- "value": {
- "type": "newLine"
- }
- }
- ],
"22": [
{
"commentStart": 0,
diff --git a/rust/kcl-lib/tests/fillet-and-shell/input.kcl b/rust/kcl-lib/tests/fillet-and-shell/input.kcl
index 7de92cbe2..09b685b46 100644
--- a/rust/kcl-lib/tests/fillet-and-shell/input.kcl
+++ b/rust/kcl-lib/tests/fillet-and-shell/input.kcl
@@ -64,12 +64,9 @@ fn m25Screw(x, y, height) {
return screw
}
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
-
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
-
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
-
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
shell(case, faces = ['end'], thickness = caseThickness)
diff --git a/rust/kcl-lib/tests/fillet-and-shell/ops.snap b/rust/kcl-lib/tests/fillet-and-shell/ops.snap
index 14173443e..58e96ec21 100644
--- a/rust/kcl-lib/tests/fillet-and-shell/ops.snap
+++ b/rust/kcl-lib/tests/fillet-and-shell/ops.snap
@@ -416,7 +416,56 @@ description: Operations executed fillet-and-shell.kcl
"name": "m25Screw",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 7.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 7.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -427,7 +476,56 @@ description: Operations executed fillet-and-shell.kcl
"name": "m25Screw",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 7.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 65.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -438,7 +536,56 @@ description: Operations executed fillet-and-shell.kcl
"name": "m25Screw",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 30.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 65.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -449,7 +596,56 @@ description: Operations executed fillet-and-shell.kcl
"name": "m25Screw",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 30.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 7.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap b/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap
index c8ff7b04b..3390e7062 100644
--- a/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap
+++ b/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap
@@ -71,12 +71,9 @@ fn m25Screw(x, y, height) {
return screw
}
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
-
-m25Screw(border + rpizWidth / 2 - (widthBetweenScrews / 2), 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
-
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, screwHeight)
-
-m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 - (widthBetweenScrews / 2), y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 + lengthBetweenScrews / 2, height = screwHeight)
+m25Screw(x = border + rpizWidth / 2 + widthBetweenScrews / 2, y = 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), height = screwHeight)
shell(case, faces = [END], thickness = caseThickness)
diff --git a/rust/kcl-lib/tests/function_sketch/ast.snap b/rust/kcl-lib/tests/function_sketch/ast.snap
index b36376bfb..65d15bbea 100644
--- a/rust/kcl-lib/tests/function_sketch/ast.snap
+++ b/rust/kcl-lib/tests/function_sketch/ast.snap
@@ -570,39 +570,69 @@ description: Result of parsing function_sketch.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "h",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 6.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "l",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 6.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "w",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
}
],
@@ -624,8 +654,9 @@ description: Result of parsing function_sketch.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/function_sketch/input.kcl b/rust/kcl-lib/tests/function_sketch/input.kcl
index 8e32a5e27..87127e2b7 100644
--- a/rust/kcl-lib/tests/function_sketch/input.kcl
+++ b/rust/kcl-lib/tests/function_sketch/input.kcl
@@ -10,4 +10,4 @@ fn box(h, l, w) {
return myBox
}
-fnBox = box(3, 6, 10)
+fnBox = box(h = 3, l = 6, w = 10)
diff --git a/rust/kcl-lib/tests/function_sketch/ops.snap b/rust/kcl-lib/tests/function_sketch/ops.snap
index 230898ba1..712a5a388 100644
--- a/rust/kcl-lib/tests/function_sketch/ops.snap
+++ b/rust/kcl-lib/tests/function_sketch/ops.snap
@@ -57,7 +57,56 @@ description: Operations executed function_sketch.kcl
"name": "box",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "h": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "l": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "w": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/function_sketch/unparsed.snap b/rust/kcl-lib/tests/function_sketch/unparsed.snap
index ad3e8ad12..73447b494 100644
--- a/rust/kcl-lib/tests/function_sketch/unparsed.snap
+++ b/rust/kcl-lib/tests/function_sketch/unparsed.snap
@@ -14,4 +14,4 @@ fn box(h, l, w) {
return myBox
}
-fnBox = box(3, 6, 10)
+fnBox = box(h = 3, l = 6, w = 10)
diff --git a/rust/kcl-lib/tests/function_sketch_with_position/ast.snap b/rust/kcl-lib/tests/function_sketch_with_position/ast.snap
index b1ad9322f..8392cf01c 100644
--- a/rust/kcl-lib/tests/function_sketch_with_position/ast.snap
+++ b/rust/kcl-lib/tests/function_sketch_with_position/ast.snap
@@ -563,72 +563,112 @@ description: Result of parsing function_sketch_with_position.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "p",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "h",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
}
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 6.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "l",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 6.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "w",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
}
],
@@ -650,8 +690,9 @@ description: Result of parsing function_sketch_with_position.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/function_sketch_with_position/input.kcl b/rust/kcl-lib/tests/function_sketch_with_position/input.kcl
index 648433121..7a670b662 100644
--- a/rust/kcl-lib/tests/function_sketch_with_position/input.kcl
+++ b/rust/kcl-lib/tests/function_sketch_with_position/input.kcl
@@ -10,4 +10,4 @@ fn box(p, h, l, w) {
return myBox
}
-thing = box([0, 0], 3, 6, 10)
+thing = box(p = [0, 0], h = 3, l = 6, w = 10)
diff --git a/rust/kcl-lib/tests/function_sketch_with_position/ops.snap b/rust/kcl-lib/tests/function_sketch_with_position/ops.snap
index c9fd15a78..cc8fced1b 100644
--- a/rust/kcl-lib/tests/function_sketch_with_position/ops.snap
+++ b/rust/kcl-lib/tests/function_sketch_with_position/ops.snap
@@ -57,7 +57,90 @@ description: Operations executed function_sketch_with_position.kcl
"name": "box",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "h": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "l": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "p": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "w": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/function_sketch_with_position/unparsed.snap b/rust/kcl-lib/tests/function_sketch_with_position/unparsed.snap
index ffa71009e..569af5f11 100644
--- a/rust/kcl-lib/tests/function_sketch_with_position/unparsed.snap
+++ b/rust/kcl-lib/tests/function_sketch_with_position/unparsed.snap
@@ -14,4 +14,9 @@ fn box(p, h, l, w) {
return myBox
}
-thing = box([0, 0], 3, 6, 10)
+thing = box(
+ p = [0, 0],
+ h = 3,
+ l = 6,
+ w = 10,
+)
diff --git a/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md
index 236ebe28b..332772bd5 100644
--- a/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md
@@ -20,7 +20,7 @@ flowchart LR
2["Plane [33, 50, 0]"]
15["Sweep Extrusion [328, 354, 0]"]
16["Sweep Extrusion [328, 354, 0]"]
- 17["CompositeSolid Intersect [448, 477, 0]"]
+ 17["CompositeSolid Intersect [480, 509, 0]"]
18[Wall]
19[Wall]
20[Wall]
diff --git a/rust/kcl-lib/tests/intersect_cubes/ast.snap b/rust/kcl-lib/tests/intersect_cubes/ast.snap
index 0920666c6..a84ec9b1b 100644
--- a/rust/kcl-lib/tests/intersect_cubes/ast.snap
+++ b/rust/kcl-lib/tests/intersect_cubes/ast.snap
@@ -819,48 +819,68 @@ description: Result of parsing intersect_cubes.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "size",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
}
],
@@ -882,8 +902,9 @@ description: Result of parsing intersect_cubes.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -911,48 +932,68 @@ description: Result of parsing intersect_cubes.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 7.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 7.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "size",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -974,8 +1015,9 @@ description: Result of parsing intersect_cubes.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/intersect_cubes/input.kcl b/rust/kcl-lib/tests/intersect_cubes/input.kcl
index ec430fd43..2554ea55d 100644
--- a/rust/kcl-lib/tests/intersect_cubes/input.kcl
+++ b/rust/kcl-lib/tests/intersect_cubes/input.kcl
@@ -8,8 +8,8 @@ fn cube(center, size) {
|> extrude(length = 2 * size)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
fullPart = intersect([part001, part002])
diff --git a/rust/kcl-lib/tests/intersect_cubes/ops.snap b/rust/kcl-lib/tests/intersect_cubes/ops.snap
index 205968529..9b09eb6d1 100644
--- a/rust/kcl-lib/tests/intersect_cubes/ops.snap
+++ b/rust/kcl-lib/tests/intersect_cubes/ops.snap
@@ -104,7 +104,58 @@ description: Operations executed intersect_cubes.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "center": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "size": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -115,7 +166,58 @@ description: Operations executed intersect_cubes.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "center": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "size": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/intersect_cubes/unparsed.snap b/rust/kcl-lib/tests/intersect_cubes/unparsed.snap
index cdb0aadae..50fe3af4b 100644
--- a/rust/kcl-lib/tests/intersect_cubes/unparsed.snap
+++ b/rust/kcl-lib/tests/intersect_cubes/unparsed.snap
@@ -12,8 +12,8 @@ fn cube(center, size) {
|> extrude(length = 2 * size)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(center = [0, 0], size = 10)
+part002 = cube(center = [7, 3], size = 5)
|> translate(z = 1)
fullPart = intersect([part001, part002])
diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap
index e3f073482..c9d7cf90f 100644
--- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap
@@ -9474,60 +9474,90 @@ description: Result of parsing 80-20-rail.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.5,
- "suffix": "None"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "48",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 48.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "railHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.5,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "railLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "48",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 48.0,
+ "suffix": "None"
+ }
}
}
],
@@ -9549,8 +9579,9 @@ description: Result of parsing 80-20-rail.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap
index 6f8db391b..895eeadd7 100644
--- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap
@@ -290,7 +290,74 @@ description: Operations executed 80-20-rail.kcl
"name": "rail8020",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "railHeight": {
+ "value": {
+ "type": "Number",
+ "value": 1.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "railLength": {
+ "value": {
+ "type": "Number",
+ "value": 48.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_graph_flowchart.snap.md
index 1c1175c73..3a0811db8 100644
--- a/rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_graph_flowchart.snap.md
@@ -177,7 +177,7 @@ flowchart LR
129["Sweep Extrusion [333, 353, 10]"]
130["Sweep Extrusion [543, 564, 10]"]
131["Sweep Revolve [764, 846, 11]"]
- 132["Sweep Loft [2259, 2379, 11]"]
+ 132["Sweep Loft [2454, 2473, 11]"]
133[Wall]
134[Wall]
135[Wall]
@@ -605,19 +605,19 @@ flowchart LR
84 --- 147
84 --- 233
87 --- 169
- 87 x--> 183
+ 87 x--> 184
87 --- 212
87 --- 257
89 --- 168
- 89 x--> 183
+ 89 x--> 184
89 --- 214
89 --- 258
90 --- 167
- 90 x--> 183
+ 90 x--> 184
90 --- 211
90 --- 256
92 --- 166
- 92 x--> 183
+ 92 x--> 184
92 --- 213
92 --- 259
119 --- 162
@@ -865,10 +865,10 @@ flowchart LR
221 <--x 181
222 <--x 181
193 <--x 182
- 211 <--x 184
- 212 <--x 184
- 213 <--x 184
- 214 <--x 184
+ 211 <--x 183
+ 212 <--x 183
+ 213 <--x 183
+ 214 <--x 183
203 <--x 186
204 <--x 186
205 <--x 186
diff --git a/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md
index 4ee7e0899..7db77e92a 100644
--- a/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md
@@ -1,275 +1,275 @@
```mermaid
flowchart LR
subgraph path24 [Path]
- 24["Path [361, 394, 8]"]
- 44["Segment [402, 428, 8]"]
- 49["Segment [436, 498, 8]"]
- 57["Segment [506, 568, 8]"]
- 62["Segment [576, 639, 8]"]
- 69["Segment [647, 672, 8]"]
- 70["Segment [680, 700, 8]"]
- 79["Segment [708, 732, 8]"]
- 84["Segment [740, 802, 8]"]
- 88["Segment [810, 835, 8]"]
- 98["Segment [843, 863, 8]"]
- 104["Segment [871, 895, 8]"]
- 107["Segment [903, 964, 8]"]
- 112["Segment [972, 1033, 8]"]
- 122["Segment [1041, 1066, 8]"]
- 129["Segment [1074, 1098, 8]"]
- 133["Segment [1106, 1168, 8]"]
- 141["Segment [1176, 1201, 8]"]
- 144["Segment [1209, 1236, 8]"]
- 149["Segment [1244, 1305, 8]"]
- 155["Segment [1313, 1357, 8]"]
- 160["Segment [1365, 1372, 8]"]
+ 24["Path [362, 395, 8]"]
+ 44["Segment [403, 429, 8]"]
+ 49["Segment [437, 499, 8]"]
+ 57["Segment [507, 569, 8]"]
+ 62["Segment [577, 640, 8]"]
+ 69["Segment [648, 673, 8]"]
+ 70["Segment [681, 701, 8]"]
+ 79["Segment [709, 733, 8]"]
+ 84["Segment [741, 803, 8]"]
+ 88["Segment [811, 836, 8]"]
+ 98["Segment [844, 864, 8]"]
+ 104["Segment [872, 896, 8]"]
+ 107["Segment [904, 965, 8]"]
+ 112["Segment [973, 1034, 8]"]
+ 122["Segment [1042, 1067, 8]"]
+ 129["Segment [1075, 1099, 8]"]
+ 133["Segment [1107, 1169, 8]"]
+ 141["Segment [1177, 1202, 8]"]
+ 144["Segment [1210, 1237, 8]"]
+ 149["Segment [1245, 1306, 8]"]
+ 155["Segment [1314, 1358, 8]"]
+ 160["Segment [1366, 1373, 8]"]
212[Solid2d]
end
subgraph path25 [Path]
- 25["Path [361, 394, 8]"]
- 40["Segment [402, 428, 8]"]
- 51["Segment [436, 498, 8]"]
- 56["Segment [506, 568, 8]"]
- 59["Segment [576, 639, 8]"]
- 67["Segment [647, 672, 8]"]
- 74["Segment [680, 700, 8]"]
- 81["Segment [708, 732, 8]"]
- 82["Segment [740, 802, 8]"]
- 90["Segment [810, 835, 8]"]
- 99["Segment [843, 863, 8]"]
- 105["Segment [871, 895, 8]"]
- 109["Segment [903, 964, 8]"]
- 113["Segment [972, 1033, 8]"]
- 119["Segment [1041, 1066, 8]"]
- 124["Segment [1074, 1098, 8]"]
- 132["Segment [1106, 1168, 8]"]
- 140["Segment [1176, 1201, 8]"]
- 143["Segment [1209, 1236, 8]"]
- 150["Segment [1244, 1305, 8]"]
- 154["Segment [1313, 1357, 8]"]
- 164["Segment [1365, 1372, 8]"]
+ 25["Path [362, 395, 8]"]
+ 40["Segment [403, 429, 8]"]
+ 51["Segment [437, 499, 8]"]
+ 56["Segment [507, 569, 8]"]
+ 59["Segment [577, 640, 8]"]
+ 67["Segment [648, 673, 8]"]
+ 74["Segment [681, 701, 8]"]
+ 81["Segment [709, 733, 8]"]
+ 82["Segment [741, 803, 8]"]
+ 90["Segment [811, 836, 8]"]
+ 99["Segment [844, 864, 8]"]
+ 105["Segment [872, 896, 8]"]
+ 109["Segment [904, 965, 8]"]
+ 113["Segment [973, 1034, 8]"]
+ 119["Segment [1042, 1067, 8]"]
+ 124["Segment [1075, 1099, 8]"]
+ 132["Segment [1107, 1169, 8]"]
+ 140["Segment [1177, 1202, 8]"]
+ 143["Segment [1210, 1237, 8]"]
+ 150["Segment [1245, 1306, 8]"]
+ 154["Segment [1314, 1358, 8]"]
+ 164["Segment [1366, 1373, 8]"]
217[Solid2d]
end
subgraph path26 [Path]
- 26["Path [361, 394, 8]"]
- 43["Segment [402, 428, 8]"]
- 50["Segment [436, 498, 8]"]
- 54["Segment [506, 568, 8]"]
- 61["Segment [576, 639, 8]"]
- 65["Segment [647, 672, 8]"]
- 71["Segment [680, 700, 8]"]
- 80["Segment [708, 732, 8]"]
- 87["Segment [740, 802, 8]"]
- 92["Segment [810, 835, 8]"]
- 94["Segment [843, 863, 8]"]
- 101["Segment [871, 895, 8]"]
- 111["Segment [903, 964, 8]"]
- 117["Segment [972, 1033, 8]"]
- 123["Segment [1041, 1066, 8]"]
- 125["Segment [1074, 1098, 8]"]
- 134["Segment [1106, 1168, 8]"]
- 136["Segment [1176, 1201, 8]"]
- 147["Segment [1209, 1236, 8]"]
- 148["Segment [1244, 1305, 8]"]
- 156["Segment [1313, 1357, 8]"]
- 165["Segment [1365, 1372, 8]"]
+ 26["Path [362, 395, 8]"]
+ 43["Segment [403, 429, 8]"]
+ 50["Segment [437, 499, 8]"]
+ 54["Segment [507, 569, 8]"]
+ 61["Segment [577, 640, 8]"]
+ 65["Segment [648, 673, 8]"]
+ 71["Segment [681, 701, 8]"]
+ 80["Segment [709, 733, 8]"]
+ 87["Segment [741, 803, 8]"]
+ 92["Segment [811, 836, 8]"]
+ 94["Segment [844, 864, 8]"]
+ 101["Segment [872, 896, 8]"]
+ 111["Segment [904, 965, 8]"]
+ 117["Segment [973, 1034, 8]"]
+ 123["Segment [1042, 1067, 8]"]
+ 125["Segment [1075, 1099, 8]"]
+ 134["Segment [1107, 1169, 8]"]
+ 136["Segment [1177, 1202, 8]"]
+ 147["Segment [1210, 1237, 8]"]
+ 148["Segment [1245, 1306, 8]"]
+ 156["Segment [1314, 1358, 8]"]
+ 165["Segment [1366, 1373, 8]"]
218[Solid2d]
end
subgraph path27 [Path]
- 27["Path [361, 394, 8]"]
- 42["Segment [402, 428, 8]"]
- 47["Segment [436, 498, 8]"]
- 53["Segment [506, 568, 8]"]
- 58["Segment [576, 639, 8]"]
- 68["Segment [647, 672, 8]"]
- 73["Segment [680, 700, 8]"]
- 77["Segment [708, 732, 8]"]
- 83["Segment [740, 802, 8]"]
- 91["Segment [810, 835, 8]"]
- 95["Segment [843, 863, 8]"]
- 100["Segment [871, 895, 8]"]
- 108["Segment [903, 964, 8]"]
- 114["Segment [972, 1033, 8]"]
- 120["Segment [1041, 1066, 8]"]
- 126["Segment [1074, 1098, 8]"]
- 135["Segment [1106, 1168, 8]"]
- 139["Segment [1176, 1201, 8]"]
- 142["Segment [1209, 1236, 8]"]
- 151["Segment [1244, 1305, 8]"]
- 157["Segment [1313, 1357, 8]"]
- 161["Segment [1365, 1372, 8]"]
+ 27["Path [362, 395, 8]"]
+ 42["Segment [403, 429, 8]"]
+ 47["Segment [437, 499, 8]"]
+ 53["Segment [507, 569, 8]"]
+ 58["Segment [577, 640, 8]"]
+ 68["Segment [648, 673, 8]"]
+ 73["Segment [681, 701, 8]"]
+ 77["Segment [709, 733, 8]"]
+ 83["Segment [741, 803, 8]"]
+ 91["Segment [811, 836, 8]"]
+ 95["Segment [844, 864, 8]"]
+ 100["Segment [872, 896, 8]"]
+ 108["Segment [904, 965, 8]"]
+ 114["Segment [973, 1034, 8]"]
+ 120["Segment [1042, 1067, 8]"]
+ 126["Segment [1075, 1099, 8]"]
+ 135["Segment [1107, 1169, 8]"]
+ 139["Segment [1177, 1202, 8]"]
+ 142["Segment [1210, 1237, 8]"]
+ 151["Segment [1245, 1306, 8]"]
+ 157["Segment [1314, 1358, 8]"]
+ 161["Segment [1366, 1373, 8]"]
219[Solid2d]
end
subgraph path28 [Path]
- 28["Path [361, 394, 8]"]
- 45["Segment [402, 428, 8]"]
- 46["Segment [436, 498, 8]"]
- 52["Segment [506, 568, 8]"]
- 63["Segment [576, 639, 8]"]
- 66["Segment [647, 672, 8]"]
- 72["Segment [680, 700, 8]"]
- 78["Segment [708, 732, 8]"]
- 86["Segment [740, 802, 8]"]
- 89["Segment [810, 835, 8]"]
- 96["Segment [843, 863, 8]"]
- 102["Segment [871, 895, 8]"]
- 106["Segment [903, 964, 8]"]
- 116["Segment [972, 1033, 8]"]
- 118["Segment [1041, 1066, 8]"]
- 128["Segment [1074, 1098, 8]"]
- 130["Segment [1106, 1168, 8]"]
- 137["Segment [1176, 1201, 8]"]
- 145["Segment [1209, 1236, 8]"]
- 152["Segment [1244, 1305, 8]"]
- 158["Segment [1313, 1357, 8]"]
- 162["Segment [1365, 1372, 8]"]
+ 28["Path [362, 395, 8]"]
+ 45["Segment [403, 429, 8]"]
+ 46["Segment [437, 499, 8]"]
+ 52["Segment [507, 569, 8]"]
+ 63["Segment [577, 640, 8]"]
+ 66["Segment [648, 673, 8]"]
+ 72["Segment [681, 701, 8]"]
+ 78["Segment [709, 733, 8]"]
+ 86["Segment [741, 803, 8]"]
+ 89["Segment [811, 836, 8]"]
+ 96["Segment [844, 864, 8]"]
+ 102["Segment [872, 896, 8]"]
+ 106["Segment [904, 965, 8]"]
+ 116["Segment [973, 1034, 8]"]
+ 118["Segment [1042, 1067, 8]"]
+ 128["Segment [1075, 1099, 8]"]
+ 130["Segment [1107, 1169, 8]"]
+ 137["Segment [1177, 1202, 8]"]
+ 145["Segment [1210, 1237, 8]"]
+ 152["Segment [1245, 1306, 8]"]
+ 158["Segment [1314, 1358, 8]"]
+ 162["Segment [1366, 1373, 8]"]
220[Solid2d]
end
subgraph path29 [Path]
- 29["Path [361, 394, 8]"]
- 41["Segment [402, 428, 8]"]
- 48["Segment [436, 498, 8]"]
- 55["Segment [506, 568, 8]"]
- 60["Segment [576, 639, 8]"]
- 64["Segment [647, 672, 8]"]
- 75["Segment [680, 700, 8]"]
- 76["Segment [708, 732, 8]"]
- 85["Segment [740, 802, 8]"]
- 93["Segment [810, 835, 8]"]
- 97["Segment [843, 863, 8]"]
- 103["Segment [871, 895, 8]"]
- 110["Segment [903, 964, 8]"]
- 115["Segment [972, 1033, 8]"]
- 121["Segment [1041, 1066, 8]"]
- 127["Segment [1074, 1098, 8]"]
- 131["Segment [1106, 1168, 8]"]
- 138["Segment [1176, 1201, 8]"]
- 146["Segment [1209, 1236, 8]"]
- 153["Segment [1244, 1305, 8]"]
- 159["Segment [1313, 1357, 8]"]
- 163["Segment [1365, 1372, 8]"]
+ 29["Path [362, 395, 8]"]
+ 41["Segment [403, 429, 8]"]
+ 48["Segment [437, 499, 8]"]
+ 55["Segment [507, 569, 8]"]
+ 60["Segment [577, 640, 8]"]
+ 64["Segment [648, 673, 8]"]
+ 75["Segment [681, 701, 8]"]
+ 76["Segment [709, 733, 8]"]
+ 85["Segment [741, 803, 8]"]
+ 93["Segment [811, 836, 8]"]
+ 97["Segment [844, 864, 8]"]
+ 103["Segment [872, 896, 8]"]
+ 110["Segment [904, 965, 8]"]
+ 115["Segment [973, 1034, 8]"]
+ 121["Segment [1042, 1067, 8]"]
+ 127["Segment [1075, 1099, 8]"]
+ 131["Segment [1107, 1169, 8]"]
+ 138["Segment [1177, 1202, 8]"]
+ 146["Segment [1210, 1237, 8]"]
+ 153["Segment [1245, 1306, 8]"]
+ 159["Segment [1314, 1358, 8]"]
+ 163["Segment [1366, 1373, 8]"]
221[Solid2d]
end
subgraph path30 [Path]
- 30["Path [1762, 1786, 8]"]
+ 30["Path [1765, 1789, 8]"]
end
subgraph path31 [Path]
- 31["Path [1762, 1786, 8]"]
+ 31["Path [1765, 1789, 8]"]
end
subgraph path32 [Path]
- 32["Path [1794, 1920, 8]"]
- 169["Segment [1794, 1920, 8]"]
- 170["Segment [1794, 1920, 8]"]
- 171["Segment [1794, 1920, 8]"]
- 172["Segment [1794, 1920, 8]"]
- 176["Segment [1794, 1920, 8]"]
- 178["Segment [1794, 1920, 8]"]
- 179["Segment [1794, 1920, 8]"]
+ 32["Path [1797, 1923, 8]"]
+ 169["Segment [1797, 1923, 8]"]
+ 170["Segment [1797, 1923, 8]"]
+ 171["Segment [1797, 1923, 8]"]
+ 172["Segment [1797, 1923, 8]"]
+ 176["Segment [1797, 1923, 8]"]
+ 178["Segment [1797, 1923, 8]"]
+ 179["Segment [1797, 1923, 8]"]
215[Solid2d]
end
subgraph path33 [Path]
- 33["Path [1794, 1920, 8]"]
- 166["Segment [1794, 1920, 8]"]
- 167["Segment [1794, 1920, 8]"]
- 168["Segment [1794, 1920, 8]"]
- 173["Segment [1794, 1920, 8]"]
- 174["Segment [1794, 1920, 8]"]
- 175["Segment [1794, 1920, 8]"]
- 177["Segment [1794, 1920, 8]"]
+ 33["Path [1797, 1923, 8]"]
+ 166["Segment [1797, 1923, 8]"]
+ 167["Segment [1797, 1923, 8]"]
+ 168["Segment [1797, 1923, 8]"]
+ 173["Segment [1797, 1923, 8]"]
+ 174["Segment [1797, 1923, 8]"]
+ 175["Segment [1797, 1923, 8]"]
+ 177["Segment [1797, 1923, 8]"]
222[Solid2d]
end
subgraph path34 [Path]
- 34["Path [2196, 2223, 8]"]
- 180["Segment [2231, 2253, 8]"]
- 181["Segment [2261, 2283, 8]"]
- 182["Segment [2291, 2313, 8]"]
- 183["Segment [2321, 2344, 8]"]
- 184["Segment [2352, 2375, 8]"]
- 185["Segment [2383, 2418, 8]"]
- 186["Segment [2426, 2433, 8]"]
+ 34["Path [2217, 2244, 8]"]
+ 180["Segment [2252, 2274, 8]"]
+ 181["Segment [2282, 2304, 8]"]
+ 182["Segment [2312, 2334, 8]"]
+ 183["Segment [2342, 2365, 8]"]
+ 184["Segment [2373, 2396, 8]"]
+ 185["Segment [2404, 2439, 8]"]
+ 186["Segment [2447, 2454, 8]"]
223[Solid2d]
end
subgraph path35 [Path]
- 35["Path [2705, 2734, 8]"]
- 187["Segment [2742, 2777, 8]"]
- 188["Segment [2785, 2810, 8]"]
- 189["Segment [2818, 2854, 8]"]
- 190["Segment [2862, 2886, 8]"]
- 191["Segment [2894, 2928, 8]"]
- 192["Segment [2936, 2971, 8]"]
- 193["Segment [2979, 2986, 8]"]
+ 35["Path [2728, 2757, 8]"]
+ 187["Segment [2765, 2800, 8]"]
+ 188["Segment [2808, 2833, 8]"]
+ 189["Segment [2841, 2877, 8]"]
+ 190["Segment [2885, 2909, 8]"]
+ 191["Segment [2917, 2951, 8]"]
+ 192["Segment [2959, 2994, 8]"]
+ 193["Segment [3002, 3009, 8]"]
214[Solid2d]
end
subgraph path36 [Path]
- 36["Path [3261, 3288, 8]"]
- 195["Segment [3296, 3315, 8]"]
- 197["Segment [3323, 3372, 8]"]
+ 36["Path [3286, 3313, 8]"]
+ 195["Segment [3321, 3340, 8]"]
+ 197["Segment [3348, 3397, 8]"]
end
subgraph path37 [Path]
- 37["Path [3261, 3288, 8]"]
- 194["Segment [3296, 3315, 8]"]
- 196["Segment [3323, 3372, 8]"]
+ 37["Path [3286, 3313, 8]"]
+ 194["Segment [3321, 3340, 8]"]
+ 196["Segment [3348, 3397, 8]"]
end
subgraph path38 [Path]
- 38["Path [3472, 3505, 8]"]
- 199["Segment [3513, 3532, 8]"]
- 200["Segment [3540, 3562, 8]"]
- 202["Segment [3570, 3593, 8]"]
- 204["Segment [3601, 3621, 8]"]
- 206["Segment [3629, 3653, 8]"]
- 209["Segment [3661, 3684, 8]"]
- 211["Segment [3692, 3699, 8]"]
+ 38["Path [3498, 3531, 8]"]
+ 199["Segment [3539, 3558, 8]"]
+ 200["Segment [3566, 3588, 8]"]
+ 202["Segment [3596, 3619, 8]"]
+ 204["Segment [3627, 3647, 8]"]
+ 206["Segment [3655, 3679, 8]"]
+ 209["Segment [3687, 3710, 8]"]
+ 211["Segment [3718, 3725, 8]"]
213[Solid2d]
end
subgraph path39 [Path]
- 39["Path [3472, 3505, 8]"]
- 198["Segment [3513, 3532, 8]"]
- 201["Segment [3540, 3562, 8]"]
- 203["Segment [3570, 3593, 8]"]
- 205["Segment [3601, 3621, 8]"]
- 207["Segment [3629, 3653, 8]"]
- 208["Segment [3661, 3684, 8]"]
- 210["Segment [3692, 3699, 8]"]
+ 39["Path [3498, 3531, 8]"]
+ 198["Segment [3539, 3558, 8]"]
+ 201["Segment [3566, 3588, 8]"]
+ 203["Segment [3596, 3619, 8]"]
+ 205["Segment [3627, 3647, 8]"]
+ 207["Segment [3655, 3679, 8]"]
+ 208["Segment [3687, 3710, 8]"]
+ 210["Segment [3718, 3725, 8]"]
216[Solid2d]
end
1["Plane [823, 864, 0]"]
2["Plane [874, 916, 0]"]
3["Plane [975, 1017, 0]"]
- 4["Plane [1068, 1135, 0]"]
- 5["Plane [1205, 1272, 0]"]
- 6["Plane [333, 353, 8]"]
- 7["Plane [333, 353, 8]"]
- 8["Plane [3780, 3815, 8]"]
- 9["Plane [3780, 3815, 8]"]
- 10["Plane [3846, 3875, 8]"]
- 11["Plane [3846, 3875, 8]"]
- 12["StartSketchOnPlane [2677, 2697, 8]"]
- 13["StartSketchOnPlane [1734, 1754, 8]"]
- 14["StartSketchOnPlane [3233, 3253, 8]"]
- 15["StartSketchOnPlane [1734, 1754, 8]"]
- 16["StartSketchOnPlane [333, 353, 8]"]
- 17["StartSketchOnPlane [3444, 3464, 8]"]
- 18["StartSketchOnPlane [3444, 3464, 8]"]
- 19["StartSketchOnPlane [333, 353, 8]"]
- 20["StartSketchOnPlane [333, 353, 8]"]
- 21["StartSketchOnPlane [3233, 3253, 8]"]
- 22["StartSketchOnPlane [333, 353, 8]"]
- 23["StartSketchOnPlane [2168, 2188, 8]"]
- 224["Sweep Extrusion [1460, 1498, 8]"]
- 225["Sweep Extrusion [1460, 1498, 8]"]
- 226["Sweep Extrusion [1460, 1498, 8]"]
- 227["Sweep Extrusion [1536, 1575, 8]"]
- 228["Sweep Extrusion [1536, 1575, 8]"]
- 229["Sweep Extrusion [1536, 1575, 8]"]
- 230["Sweep Extrusion [2022, 2046, 8]"]
- 231["Sweep Extrusion [2088, 2112, 8]"]
- 232["Sweep Extrusion [2596, 2620, 8]"]
- 233["Sweep Extrusion [2596, 2620, 8]"]
- 234["Sweep Extrusion [2596, 2620, 8]"]
- 235["Sweep Extrusion [3156, 3180, 8]"]
- 236["Sweep Extrusion [3156, 3180, 8]"]
- 237["Sweep Sweep [3888, 3915, 8]"]
- 238["Sweep Sweep [3888, 3915, 8]"]
+ 4["Plane [1077, 1144, 0]"]
+ 5["Plane [1223, 1290, 0]"]
+ 6["Plane [334, 354, 8]"]
+ 7["Plane [334, 354, 8]"]
+ 8["Plane [3807, 3842, 8]"]
+ 9["Plane [3807, 3842, 8]"]
+ 10["Plane [3873, 3902, 8]"]
+ 11["Plane [3873, 3902, 8]"]
+ 12["StartSketchOnPlane [2700, 2720, 8]"]
+ 13["StartSketchOnPlane [1737, 1757, 8]"]
+ 14["StartSketchOnPlane [3258, 3278, 8]"]
+ 15["StartSketchOnPlane [1737, 1757, 8]"]
+ 16["StartSketchOnPlane [334, 354, 8]"]
+ 17["StartSketchOnPlane [3470, 3490, 8]"]
+ 18["StartSketchOnPlane [3470, 3490, 8]"]
+ 19["StartSketchOnPlane [334, 354, 8]"]
+ 20["StartSketchOnPlane [334, 354, 8]"]
+ 21["StartSketchOnPlane [3258, 3278, 8]"]
+ 22["StartSketchOnPlane [334, 354, 8]"]
+ 23["StartSketchOnPlane [2189, 2209, 8]"]
+ 224["Sweep Extrusion [1462, 1500, 8]"]
+ 225["Sweep Extrusion [1462, 1500, 8]"]
+ 226["Sweep Extrusion [1462, 1500, 8]"]
+ 227["Sweep Extrusion [1538, 1577, 8]"]
+ 228["Sweep Extrusion [1538, 1577, 8]"]
+ 229["Sweep Extrusion [1538, 1577, 8]"]
+ 230["Sweep Extrusion [2034, 2058, 8]"]
+ 231["Sweep Extrusion [2108, 2132, 8]"]
+ 232["Sweep Extrusion [2618, 2642, 8]"]
+ 233["Sweep Extrusion [2618, 2642, 8]"]
+ 234["Sweep Extrusion [2618, 2642, 8]"]
+ 235["Sweep Extrusion [3180, 3204, 8]"]
+ 236["Sweep Extrusion [3180, 3204, 8]"]
+ 237["Sweep Sweep [3924, 3951, 8]"]
+ 238["Sweep Sweep [3924, 3951, 8]"]
239[Wall]
240[Wall]
241[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/bench/ast.snap b/rust/kcl-lib/tests/kcl_samples/bench/ast.snap
index 55c770099..5bf496b5b 100644
--- a/rust/kcl-lib/tests/kcl_samples/bench/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/bench/ast.snap
@@ -526,17 +526,247 @@ description: Result of parsing bench.kcl
"expression": {
"arguments": [
{
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "connector",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"commentStart": 0,
"end": 0,
- "name": "offset",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ },
+ "preComments": [
+ "",
+ "",
+ "// Create the connectors to join the dividers"
+ ],
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
"start": 0,
"type": "Identifier"
},
- "arg": {
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "dividerThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seatSlats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"commentStart": 0,
"end": 0,
"left": {
@@ -579,54 +809,78 @@ description: Result of parsing bench.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- }
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "dividerThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
}
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "offsetPlane",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "YZ",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
}
- },
- {
+ ],
+ "callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "benchLength",
+ "name": "offsetPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
"start": 0,
"type": "Identifier"
},
@@ -635,241 +889,7 @@ description: Result of parsing bench.kcl
"type": "Name",
"type": "Name"
}
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "connector",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "preComments": [
- "",
- "",
- "// Create the connectors to join the dividers"
- ],
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "offset",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "benchLength",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "dividerThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "offsetPlane",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "YZ",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "benchLength",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "dividerThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "seatSlats",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ }
},
"preComments": [
"",
@@ -886,182 +906,54 @@ description: Result of parsing bench.kcl
"expression": {
"arguments": [
{
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": "offset",
+ "name": "benchLength",
"start": 0,
"type": "Identifier"
},
- "arg": {
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "benchLength",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "dividerThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
+ "name": "dividerThickness",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "offsetPlane",
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
"start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "YZ",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "benchLength",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "dividerThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
}
],
"callee": {
@@ -1082,8 +974,146 @@ description: Result of parsing bench.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "dividerThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
},
"preComments": [
"",
@@ -1100,56 +1130,50 @@ description: Result of parsing bench.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "YZ",
+ "name": "offset",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "arg": {
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "benchLength",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1170,8 +1194,24 @@ description: Result of parsing bench.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
"preComments": [
"",
@@ -1188,64 +1228,58 @@ description: Result of parsing bench.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "YZ",
+ "name": "offset",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "benchLength",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "benchLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1266,8 +1300,24 @@ description: Result of parsing bench.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
"start": 0,
"type": "ExpressionStatement",
diff --git a/rust/kcl-lib/tests/kcl_samples/bench/ops.snap b/rust/kcl-lib/tests/kcl_samples/bench/ops.snap
index 5446674ad..46787e6d8 100644
--- a/rust/kcl-lib/tests/kcl_samples/bench/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/bench/ops.snap
@@ -111,8 +111,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "connector",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "length": {
+ "value": {
+ "type": "Number",
+ "value": 56.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -152,8 +175,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "seatSlats",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "length": {
+ "value": {
+ "type": "Number",
+ "value": 60.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -193,8 +239,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "backSlats",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "length": {
+ "value": {
+ "type": "Number",
+ "value": 60.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -234,8 +303,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "armRest",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": 28.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -245,8 +337,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "armRest",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": -28.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -928,8 +1043,49 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "connectorSketch",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -971,8 +1127,49 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "connectorSketch",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 16.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -1300,8 +1497,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "armRestProfile",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": -28.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -1311,8 +1531,31 @@ description: Operations executed bench.kcl
"type": "FunctionCall",
"name": "armRestProfile",
"functionSourceRange": [],
- "unlabeledArg": null,
- "labeledArgs": {}
+ "unlabeledArg": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "labeledArgs": {
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": 28.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md
index 7bfdcf81c..c783af76a 100644
--- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md
@@ -67,31 +67,31 @@ flowchart LR
149[Solid2d]
end
subgraph path21 [Path]
- 21["Path [4279, 4374, 8]"]
- 60["Segment [4380, 4413, 8]"]
- 61["Segment [4419, 4470, 8]"]
- 62["Segment [4476, 4509, 8]"]
- 63["Segment [4515, 4565, 8]"]
- 64["Segment [4571, 4612, 8]"]
- 65["Segment [4618, 4667, 8]"]
- 66["Segment [4673, 4706, 8]"]
- 67["Segment [4712, 4746, 8]"]
- 68["Segment [4752, 4786, 8]"]
- 69["Segment [4792, 4844, 8]"]
- 70["Segment [4850, 4884, 8]"]
- 71["Segment [4890, 4966, 8]"]
- 72["Segment [4972, 5005, 8]"]
- 73["Segment [5011, 5087, 8]"]
- 74["Segment [5093, 5127, 8]"]
- 75["Segment [5133, 5207, 8]"]
- 76["Segment [5213, 5247, 8]"]
- 77["Segment [5253, 5304, 8]"]
- 78["Segment [5310, 5372, 8]"]
- 79["Segment [5378, 5429, 8]"]
- 80["Segment [5435, 5469, 8]"]
- 81["Segment [5475, 5508, 8]"]
- 82["Segment [5514, 5547, 8]"]
- 83["Segment [5553, 5560, 8]"]
+ 21["Path [4361, 4456, 8]"]
+ 60["Segment [4462, 4495, 8]"]
+ 61["Segment [4501, 4552, 8]"]
+ 62["Segment [4558, 4591, 8]"]
+ 63["Segment [4597, 4647, 8]"]
+ 64["Segment [4653, 4694, 8]"]
+ 65["Segment [4700, 4749, 8]"]
+ 66["Segment [4755, 4788, 8]"]
+ 67["Segment [4794, 4828, 8]"]
+ 68["Segment [4834, 4868, 8]"]
+ 69["Segment [4874, 4926, 8]"]
+ 70["Segment [4932, 4966, 8]"]
+ 71["Segment [4972, 5048, 8]"]
+ 72["Segment [5054, 5087, 8]"]
+ 73["Segment [5093, 5169, 8]"]
+ 74["Segment [5175, 5209, 8]"]
+ 75["Segment [5215, 5289, 8]"]
+ 76["Segment [5295, 5329, 8]"]
+ 77["Segment [5335, 5386, 8]"]
+ 78["Segment [5392, 5454, 8]"]
+ 79["Segment [5460, 5511, 8]"]
+ 80["Segment [5517, 5551, 8]"]
+ 81["Segment [5557, 5590, 8]"]
+ 82["Segment [5596, 5629, 8]"]
+ 83["Segment [5635, 5642, 8]"]
158[Solid2d]
end
subgraph path22 [Path]
@@ -204,7 +204,7 @@ flowchart LR
3["Plane [2084, 2101, 8]"]
4["Plane [2860, 2883, 8]"]
5["Plane [2860, 2883, 8]"]
- 6["Plane [4256, 4273, 8]"]
+ 6["Plane [4338, 4355, 8]"]
7["Plane [548, 565, 10]"]
8["Plane [488, 505, 11]"]
9["Plane [659, 685, 12]"]
@@ -225,7 +225,7 @@ flowchart LR
177["Sweep Revolve [2416, 2433, 8]"]
178["Sweep Extrusion [3799, 3845, 8]"]
179["Sweep Extrusion [3799, 3845, 8]"]
- 180["Sweep Revolve [5566, 5583, 8]"]
+ 180["Sweep Revolve [5648, 5665, 8]"]
181["Sweep Extrusion [631, 687, 10]"]
182["Sweep Extrusion [881, 943, 10]"]
183["Sweep Extrusion [1198, 1277, 10]"]
diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap
index fe4e47391..d4f37a9bb 100644
--- a/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap
@@ -1636,29 +1636,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "bluePlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "bluePlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#0000FF'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#0000FF"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#0000FF'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#0000FF"
+ }
}
],
"callee": {
@@ -1679,8 +1699,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
@@ -1697,29 +1718,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "yellowPlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "yellowPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#FFFF00'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#FFFF00"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#FFFF00'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#FFFF00"
+ }
}
],
"callee": {
@@ -1740,8 +1781,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1753,29 +1795,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "greenPlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "greenPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#00FF00'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#00FF00"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#00FF00'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#00FF00"
+ }
}
],
"callee": {
@@ -1796,8 +1858,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1809,29 +1872,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "redPlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "redPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#FF0000'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#FF0000"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#FF0000'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#FF0000"
+ }
}
],
"callee": {
@@ -1852,8 +1935,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1865,29 +1949,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "tealPlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "tealPlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#00FFFF'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#00FFFF"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#00FFFF'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#00FFFF"
+ }
}
],
"callee": {
@@ -1908,8 +2012,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1921,29 +2026,49 @@ description: Result of parsing color-cube.kcl
"expression": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "purplePlane",
+ "name": "profile",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "purplePlane",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "'#FF00FF'",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": "#FF00FF"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "'#FF00FF'",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": "#FF00FF"
+ }
}
],
"callee": {
@@ -1964,8 +2089,9 @@ description: Result of parsing color-cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap
index 34ebf684e..1e1efa4bc 100644
--- a/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap
@@ -382,7 +382,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#0000FF"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -393,7 +408,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#FFFF00"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -404,7 +434,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#00FF00"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -415,7 +460,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#FF0000"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -426,7 +486,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#00FFFF"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -437,7 +512,22 @@ description: Operations executed color-cube.kcl
"name": "sketchRectangle",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#FF00FF"
+ },
+ "sourceRange": []
+ },
+ "profile": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md
index e83796570..f524cb9b5 100644
--- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md
@@ -1,54 +1,54 @@
```mermaid
flowchart LR
subgraph path7 [Path]
- 7["Path [644, 834, 0]"]
- 13["Segment [844, 928, 0]"]
- 16["Segment [938, 990, 0]"]
- 17["Segment [1000, 1047, 0]"]
- 19["Segment [1057, 1109, 0]"]
- 21["Segment [1119, 1166, 0]"]
- 23["Segment [1176, 1241, 0]"]
- 27["Segment [1251, 1259, 0]"]
+ 7["Path [645, 835, 0]"]
+ 13["Segment [845, 929, 0]"]
+ 16["Segment [939, 991, 0]"]
+ 17["Segment [1001, 1048, 0]"]
+ 19["Segment [1058, 1110, 0]"]
+ 21["Segment [1120, 1167, 0]"]
+ 23["Segment [1177, 1242, 0]"]
+ 27["Segment [1252, 1260, 0]"]
31[Solid2d]
end
subgraph path8 [Path]
- 8["Path [644, 834, 0]"]
- 26["Segment [1251, 1259, 0]"]
+ 8["Path [645, 835, 0]"]
+ 26["Segment [1252, 1260, 0]"]
32[Solid2d]
end
subgraph path9 [Path]
- 9["Path [644, 834, 0]"]
- 14["Segment [844, 928, 0]"]
- 15["Segment [938, 990, 0]"]
- 18["Segment [1000, 1047, 0]"]
- 20["Segment [1057, 1109, 0]"]
- 22["Segment [1119, 1166, 0]"]
- 24["Segment [1176, 1241, 0]"]
- 25["Segment [1251, 1259, 0]"]
+ 9["Path [645, 835, 0]"]
+ 14["Segment [845, 929, 0]"]
+ 15["Segment [939, 991, 0]"]
+ 18["Segment [1001, 1048, 0]"]
+ 20["Segment [1058, 1110, 0]"]
+ 22["Segment [1120, 1167, 0]"]
+ 24["Segment [1177, 1242, 0]"]
+ 25["Segment [1252, 1260, 0]"]
36[Solid2d]
end
subgraph path10 [Path]
- 10["Path [1287, 1337, 0]"]
- 29["Segment [1287, 1337, 0]"]
+ 10["Path [1288, 1338, 0]"]
+ 29["Segment [1288, 1338, 0]"]
33[Solid2d]
end
subgraph path11 [Path]
- 11["Path [1287, 1337, 0]"]
- 30["Segment [1287, 1337, 0]"]
+ 11["Path [1288, 1338, 0]"]
+ 30["Segment [1288, 1338, 0]"]
34[Solid2d]
end
subgraph path12 [Path]
- 12["Path [1287, 1337, 0]"]
- 28["Segment [1287, 1337, 0]"]
+ 12["Path [1288, 1338, 0]"]
+ 28["Segment [1288, 1338, 0]"]
35[Solid2d]
end
- 1["Plane [600, 633, 0]"]
- 2["Plane [600, 633, 0]"]
- 3["Plane [600, 633, 0]"]
- 4["StartSketchOnPlane [586, 634, 0]"]
- 5["StartSketchOnPlane [586, 634, 0]"]
- 6["StartSketchOnPlane [586, 634, 0]"]
- 37["Sweep Loft [1464, 1553, 0]"]
+ 1["Plane [601, 634, 0]"]
+ 2["Plane [601, 634, 0]"]
+ 3["Plane [601, 634, 0]"]
+ 4["StartSketchOnPlane [587, 635, 0]"]
+ 5["StartSketchOnPlane [587, 635, 0]"]
+ 6["StartSketchOnPlane [587, 635, 0]"]
+ 37["Sweep Loft [1465, 1554, 0]"]
38[Wall]
39[Wall]
40[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap
index f8d92cbb6..e476b1877 100644
--- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap
@@ -1436,7 +1436,8 @@ description: Result of parsing cycloidal-gear.kcl
"name": "gHeight",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -1760,60 +1761,100 @@ description: Result of parsing cycloidal-gear.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": ".3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.3,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.5,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.297",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.297,
- "suffix": "None"
- }
- },
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "raw": "80",
+ "name": "gearPitch",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".3",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 80.0,
+ "value": 0.3,
"suffix": "None"
}
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "gearHeight",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.5,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "holeDiameter",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.297",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.297,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "helixAngle",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "80",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 80.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -1834,8 +1875,9 @@ description: Result of parsing cycloidal-gear.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap
index 70a1f6793..720703856 100644
--- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap
@@ -419,7 +419,72 @@ description: Operations executed cycloidal-gear.kcl
"name": "cycloidalGear",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "gearHeight": {
+ "value": {
+ "type": "Number",
+ "value": 1.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "gearPitch": {
+ "value": {
+ "type": "Number",
+ "value": 0.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "helixAngle": {
+ "value": {
+ "type": "Number",
+ "value": -80.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "holeDiameter": {
+ "value": {
+ "type": "Number",
+ "value": 0.297,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md
index b9cd50cee..295b778fe 100644
--- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md
@@ -1,136 +1,136 @@
```mermaid
flowchart LR
subgraph path13 [Path]
- 13["Path [496, 547, 0]"]
- 31["Segment [555, 606, 0]"]
- 38["Segment [614, 664, 0]"]
- 59["Segment [672, 723, 0]"]
- 67["Segment [731, 738, 0]"]
+ 13["Path [497, 548, 0]"]
+ 31["Segment [556, 607, 0]"]
+ 38["Segment [615, 665, 0]"]
+ 59["Segment [673, 724, 0]"]
+ 67["Segment [732, 739, 0]"]
73[Solid2d]
end
subgraph path14 [Path]
- 14["Path [496, 547, 0]"]
- 27["Segment [555, 606, 0]"]
- 45["Segment [614, 664, 0]"]
- 50["Segment [672, 723, 0]"]
- 65["Segment [731, 738, 0]"]
+ 14["Path [497, 548, 0]"]
+ 27["Segment [556, 607, 0]"]
+ 45["Segment [615, 665, 0]"]
+ 50["Segment [673, 724, 0]"]
+ 65["Segment [732, 739, 0]"]
74[Solid2d]
end
subgraph path15 [Path]
- 15["Path [496, 547, 0]"]
- 32["Segment [555, 606, 0]"]
- 48["Segment [614, 664, 0]"]
- 51["Segment [672, 723, 0]"]
- 71["Segment [731, 738, 0]"]
+ 15["Path [497, 548, 0]"]
+ 32["Segment [556, 607, 0]"]
+ 48["Segment [615, 665, 0]"]
+ 51["Segment [673, 724, 0]"]
+ 71["Segment [732, 739, 0]"]
75[Solid2d]
end
subgraph path16 [Path]
- 16["Path [496, 547, 0]"]
- 29["Segment [555, 606, 0]"]
- 40["Segment [614, 664, 0]"]
- 56["Segment [672, 723, 0]"]
- 69["Segment [731, 738, 0]"]
+ 16["Path [497, 548, 0]"]
+ 29["Segment [556, 607, 0]"]
+ 40["Segment [615, 665, 0]"]
+ 56["Segment [673, 724, 0]"]
+ 69["Segment [732, 739, 0]"]
76[Solid2d]
end
subgraph path17 [Path]
- 17["Path [496, 547, 0]"]
- 26["Segment [555, 606, 0]"]
- 44["Segment [614, 664, 0]"]
- 52["Segment [672, 723, 0]"]
- 63["Segment [731, 738, 0]"]
+ 17["Path [497, 548, 0]"]
+ 26["Segment [556, 607, 0]"]
+ 44["Segment [615, 665, 0]"]
+ 52["Segment [673, 724, 0]"]
+ 63["Segment [732, 739, 0]"]
77[Solid2d]
end
subgraph path18 [Path]
- 18["Path [496, 547, 0]"]
- 28["Segment [555, 606, 0]"]
- 47["Segment [614, 664, 0]"]
- 58["Segment [672, 723, 0]"]
- 64["Segment [731, 738, 0]"]
+ 18["Path [497, 548, 0]"]
+ 28["Segment [556, 607, 0]"]
+ 47["Segment [615, 665, 0]"]
+ 58["Segment [673, 724, 0]"]
+ 64["Segment [732, 739, 0]"]
78[Solid2d]
end
subgraph path19 [Path]
- 19["Path [496, 547, 0]"]
- 35["Segment [555, 606, 0]"]
- 41["Segment [614, 664, 0]"]
- 57["Segment [672, 723, 0]"]
- 66["Segment [731, 738, 0]"]
+ 19["Path [497, 548, 0]"]
+ 35["Segment [556, 607, 0]"]
+ 41["Segment [615, 665, 0]"]
+ 57["Segment [673, 724, 0]"]
+ 66["Segment [732, 739, 0]"]
79[Solid2d]
end
subgraph path20 [Path]
- 20["Path [496, 547, 0]"]
- 34["Segment [555, 606, 0]"]
- 42["Segment [614, 664, 0]"]
- 55["Segment [672, 723, 0]"]
- 68["Segment [731, 738, 0]"]
+ 20["Path [497, 548, 0]"]
+ 34["Segment [556, 607, 0]"]
+ 42["Segment [615, 665, 0]"]
+ 55["Segment [673, 724, 0]"]
+ 68["Segment [732, 739, 0]"]
80[Solid2d]
end
subgraph path21 [Path]
- 21["Path [496, 547, 0]"]
- 30["Segment [555, 606, 0]"]
- 39["Segment [614, 664, 0]"]
- 60["Segment [672, 723, 0]"]
- 70["Segment [731, 738, 0]"]
+ 21["Path [497, 548, 0]"]
+ 30["Segment [556, 607, 0]"]
+ 39["Segment [615, 665, 0]"]
+ 60["Segment [673, 724, 0]"]
+ 70["Segment [732, 739, 0]"]
81[Solid2d]
end
subgraph path22 [Path]
- 22["Path [496, 547, 0]"]
- 25["Segment [555, 606, 0]"]
- 46["Segment [614, 664, 0]"]
- 54["Segment [672, 723, 0]"]
- 72["Segment [731, 738, 0]"]
+ 22["Path [497, 548, 0]"]
+ 25["Segment [556, 607, 0]"]
+ 46["Segment [615, 665, 0]"]
+ 54["Segment [673, 724, 0]"]
+ 72["Segment [732, 739, 0]"]
82[Solid2d]
end
subgraph path23 [Path]
- 23["Path [496, 547, 0]"]
- 36["Segment [555, 606, 0]"]
- 37["Segment [614, 664, 0]"]
- 49["Segment [672, 723, 0]"]
- 62["Segment [731, 738, 0]"]
+ 23["Path [497, 548, 0]"]
+ 36["Segment [556, 607, 0]"]
+ 37["Segment [615, 665, 0]"]
+ 49["Segment [673, 724, 0]"]
+ 62["Segment [732, 739, 0]"]
83[Solid2d]
end
subgraph path24 [Path]
- 24["Path [496, 547, 0]"]
- 33["Segment [555, 606, 0]"]
- 43["Segment [614, 664, 0]"]
- 53["Segment [672, 723, 0]"]
- 61["Segment [731, 738, 0]"]
+ 24["Path [497, 548, 0]"]
+ 33["Segment [556, 607, 0]"]
+ 43["Segment [615, 665, 0]"]
+ 53["Segment [673, 724, 0]"]
+ 61["Segment [732, 739, 0]"]
84[Solid2d]
end
- 1["Plane [471, 488, 0]"]
- 2["Plane [471, 488, 0]"]
- 3["Plane [471, 488, 0]"]
- 4["Plane [471, 488, 0]"]
- 5["Plane [471, 488, 0]"]
- 6["Plane [471, 488, 0]"]
- 7["Plane [471, 488, 0]"]
- 8["Plane [471, 488, 0]"]
- 9["Plane [471, 488, 0]"]
- 10["Plane [471, 488, 0]"]
- 11["Plane [471, 488, 0]"]
- 12["Plane [471, 488, 0]"]
- 85["Sweep Extrusion [752, 802, 0]"]
- 86["Sweep Extrusion [752, 802, 0]"]
- 87["Sweep Extrusion [752, 802, 0]"]
- 88["Sweep Extrusion [752, 802, 0]"]
- 89["Sweep Extrusion [752, 802, 0]"]
- 90["Sweep Extrusion [752, 802, 0]"]
- 91["Sweep Extrusion [752, 802, 0]"]
- 92["Sweep Extrusion [752, 802, 0]"]
- 93["Sweep Extrusion [752, 802, 0]"]
- 94["Sweep Extrusion [752, 802, 0]"]
- 95["Sweep Extrusion [752, 802, 0]"]
- 96["Sweep Extrusion [752, 802, 0]"]
- 97["CompositeSolid Intersect [1997, 2027, 0]"]
- 98["CompositeSolid Intersect [1997, 2027, 0]"]
- 99["CompositeSolid Intersect [1997, 2027, 0]"]
- 100["CompositeSolid Intersect [1997, 2027, 0]"]
- 101["CompositeSolid Intersect [1997, 2027, 0]"]
- 102["CompositeSolid Intersect [1997, 2027, 0]"]
- 103["CompositeSolid Intersect [1997, 2027, 0]"]
- 104["CompositeSolid Intersect [1997, 2027, 0]"]
- 105["CompositeSolid Intersect [1997, 2027, 0]"]
- 106["CompositeSolid Intersect [1997, 2027, 0]"]
- 107["CompositeSolid Intersect [1997, 2027, 0]"]
+ 1["Plane [472, 489, 0]"]
+ 2["Plane [472, 489, 0]"]
+ 3["Plane [472, 489, 0]"]
+ 4["Plane [472, 489, 0]"]
+ 5["Plane [472, 489, 0]"]
+ 6["Plane [472, 489, 0]"]
+ 7["Plane [472, 489, 0]"]
+ 8["Plane [472, 489, 0]"]
+ 9["Plane [472, 489, 0]"]
+ 10["Plane [472, 489, 0]"]
+ 11["Plane [472, 489, 0]"]
+ 12["Plane [472, 489, 0]"]
+ 85["Sweep Extrusion [753, 803, 0]"]
+ 86["Sweep Extrusion [753, 803, 0]"]
+ 87["Sweep Extrusion [753, 803, 0]"]
+ 88["Sweep Extrusion [753, 803, 0]"]
+ 89["Sweep Extrusion [753, 803, 0]"]
+ 90["Sweep Extrusion [753, 803, 0]"]
+ 91["Sweep Extrusion [753, 803, 0]"]
+ 92["Sweep Extrusion [753, 803, 0]"]
+ 93["Sweep Extrusion [753, 803, 0]"]
+ 94["Sweep Extrusion [753, 803, 0]"]
+ 95["Sweep Extrusion [753, 803, 0]"]
+ 96["Sweep Extrusion [753, 803, 0]"]
+ 97["CompositeSolid Intersect [2000, 2030, 0]"]
+ 98["CompositeSolid Intersect [2000, 2030, 0]"]
+ 99["CompositeSolid Intersect [2000, 2030, 0]"]
+ 100["CompositeSolid Intersect [2000, 2030, 0]"]
+ 101["CompositeSolid Intersect [2000, 2030, 0]"]
+ 102["CompositeSolid Intersect [2000, 2030, 0]"]
+ 103["CompositeSolid Intersect [2000, 2030, 0]"]
+ 104["CompositeSolid Intersect [2000, 2030, 0]"]
+ 105["CompositeSolid Intersect [2000, 2030, 0]"]
+ 106["CompositeSolid Intersect [2000, 2030, 0]"]
+ 107["CompositeSolid Intersect [2000, 2030, 0]"]
108[Wall]
109[Wall]
110[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap
index 58b8b5562..af524641d 100644
--- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap
@@ -943,7 +943,8 @@ description: Result of parsing dodecahedron.kcl
"name": "dither",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -2501,7 +2502,8 @@ description: Result of parsing dodecahedron.kcl
"name": "arr",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -2963,7 +2965,8 @@ description: Result of parsing dodecahedron.kcl
"name": "solids",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md
index cb12580a7..c55bad230 100644
--- a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md
@@ -10,117 +10,117 @@ flowchart LR
67[Solid2d]
end
subgraph path9 [Path]
- 9["Path [1597, 1680, 0]"]
- 33["Segment [1597, 1680, 0]"]
+ 9["Path [1598, 1681, 0]"]
+ 33["Segment [1598, 1681, 0]"]
59[Solid2d]
end
subgraph path10 [Path]
- 10["Path [1597, 1680, 0]"]
- 32["Segment [1597, 1680, 0]"]
+ 10["Path [1598, 1681, 0]"]
+ 32["Segment [1598, 1681, 0]"]
60[Solid2d]
end
subgraph path11 [Path]
- 11["Path [1597, 1680, 0]"]
- 34["Segment [1597, 1680, 0]"]
+ 11["Path [1598, 1681, 0]"]
+ 34["Segment [1598, 1681, 0]"]
66[Solid2d]
end
subgraph path12 [Path]
- 12["Path [1597, 1680, 0]"]
- 35["Segment [1597, 1680, 0]"]
+ 12["Path [1598, 1681, 0]"]
+ 35["Segment [1598, 1681, 0]"]
75[Solid2d]
end
subgraph path13 [Path]
- 13["Path [1706, 1773, 0]"]
- 37["Segment [1706, 1773, 0]"]
+ 13["Path [1707, 1774, 0]"]
+ 37["Segment [1707, 1774, 0]"]
62[Solid2d]
end
subgraph path14 [Path]
- 14["Path [1706, 1773, 0]"]
- 36["Segment [1706, 1773, 0]"]
+ 14["Path [1707, 1774, 0]"]
+ 36["Segment [1707, 1774, 0]"]
70[Solid2d]
end
subgraph path15 [Path]
- 15["Path [1706, 1773, 0]"]
- 39["Segment [1706, 1773, 0]"]
+ 15["Path [1707, 1774, 0]"]
+ 39["Segment [1707, 1774, 0]"]
72[Solid2d]
end
subgraph path16 [Path]
- 16["Path [1706, 1773, 0]"]
- 38["Segment [1706, 1773, 0]"]
+ 16["Path [1707, 1774, 0]"]
+ 38["Segment [1707, 1774, 0]"]
73[Solid2d]
end
subgraph path17 [Path]
- 17["Path [2341, 2376, 0]"]
- 40["Segment [2382, 2448, 0]"]
- 41["Segment [2454, 2553, 0]"]
- 42["Segment [2559, 2676, 0]"]
- 43["Segment [2682, 2767, 0]"]
- 44["Segment [2773, 2780, 0]"]
+ 17["Path [2342, 2377, 0]"]
+ 40["Segment [2383, 2449, 0]"]
+ 41["Segment [2455, 2554, 0]"]
+ 42["Segment [2560, 2677, 0]"]
+ 43["Segment [2683, 2768, 0]"]
+ 44["Segment [2774, 2781, 0]"]
63[Solid2d]
end
subgraph path18 [Path]
- 18["Path [2804, 2960, 0]"]
- 45["Segment [2804, 2960, 0]"]
+ 18["Path [2805, 2961, 0]"]
+ 45["Segment [2805, 2961, 0]"]
74[Solid2d]
end
subgraph path19 [Path]
- 19["Path [2985, 3152, 0]"]
- 46["Segment [2985, 3152, 0]"]
+ 19["Path [2986, 3153, 0]"]
+ 46["Segment [2986, 3153, 0]"]
76[Solid2d]
end
subgraph path20 [Path]
- 20["Path [3177, 3335, 0]"]
- 47["Segment [3177, 3335, 0]"]
+ 20["Path [3178, 3336, 0]"]
+ 47["Segment [3178, 3336, 0]"]
64[Solid2d]
end
subgraph path21 [Path]
- 21["Path [3360, 3529, 0]"]
- 48["Segment [3360, 3529, 0]"]
+ 21["Path [3361, 3530, 0]"]
+ 48["Segment [3361, 3530, 0]"]
61[Solid2d]
end
subgraph path22 [Path]
- 22["Path [3972, 4056, 0]"]
- 49["Segment [4062, 4150, 0]"]
- 50["Segment [4156, 4277, 0]"]
- 51["Segment [4283, 4400, 0]"]
- 52["Segment [4406, 4491, 0]"]
- 53["Segment [4497, 4504, 0]"]
+ 22["Path [3973, 4057, 0]"]
+ 49["Segment [4063, 4151, 0]"]
+ 50["Segment [4157, 4278, 0]"]
+ 51["Segment [4284, 4401, 0]"]
+ 52["Segment [4407, 4492, 0]"]
+ 53["Segment [4498, 4505, 0]"]
65[Solid2d]
end
subgraph path23 [Path]
- 23["Path [4528, 4700, 0]"]
- 54["Segment [4528, 4700, 0]"]
+ 23["Path [4529, 4701, 0]"]
+ 54["Segment [4529, 4701, 0]"]
58[Solid2d]
end
subgraph path24 [Path]
- 24["Path [4725, 4908, 0]"]
- 55["Segment [4725, 4908, 0]"]
+ 24["Path [4726, 4909, 0]"]
+ 55["Segment [4726, 4909, 0]"]
71[Solid2d]
end
subgraph path25 [Path]
- 25["Path [4933, 5107, 0]"]
- 56["Segment [4933, 5107, 0]"]
+ 25["Path [4934, 5108, 0]"]
+ 56["Segment [4934, 5108, 0]"]
68[Solid2d]
end
subgraph path26 [Path]
- 26["Path [5132, 5317, 0]"]
- 57["Segment [5132, 5317, 0]"]
+ 26["Path [5133, 5318, 0]"]
+ 57["Segment [5133, 5318, 0]"]
69[Solid2d]
end
1["Plane [264, 281, 0]"]
- 2["Plane [1566, 1589, 0]"]
- 3["Plane [1566, 1589, 0]"]
- 4["Plane [1566, 1589, 0]"]
- 5["Plane [1566, 1589, 0]"]
- 6["Plane [2318, 2335, 0]"]
- 7["StartSketchOnFace [3929, 3966, 0]"]
+ 2["Plane [1567, 1590, 0]"]
+ 3["Plane [1567, 1590, 0]"]
+ 4["Plane [1567, 1590, 0]"]
+ 5["Plane [1567, 1590, 0]"]
+ 6["Plane [2319, 2336, 0]"]
+ 7["StartSketchOnFace [3930, 3967, 0]"]
77["Sweep Extrusion [730, 765, 0]"]
- 78["Sweep Extrusion [1790, 1841, 0]"]
- 79["Sweep Extrusion [1790, 1841, 0]"]
- 80["Sweep Extrusion [1790, 1841, 0]"]
- 81["Sweep Extrusion [1790, 1841, 0]"]
- 82["Sweep Extrusion [3544, 3586, 0]"]
- 83["Sweep Extrusion [5332, 5374, 0]"]
+ 78["Sweep Extrusion [1791, 1842, 0]"]
+ 79["Sweep Extrusion [1791, 1842, 0]"]
+ 80["Sweep Extrusion [1791, 1842, 0]"]
+ 81["Sweep Extrusion [1791, 1842, 0]"]
+ 82["Sweep Extrusion [3545, 3587, 0]"]
+ 83["Sweep Extrusion [5333, 5375, 0]"]
84[Wall]
85[Wall]
86[Wall]
@@ -187,14 +187,14 @@ flowchart LR
147["EdgeCut Fillet [771, 1053, 0]"]
148["EdgeCut Fillet [771, 1053, 0]"]
149["EdgeCut Fillet [771, 1053, 0]"]
- 150["EdgeCut Fillet [3592, 3874, 0]"]
- 151["EdgeCut Fillet [3592, 3874, 0]"]
- 152["EdgeCut Fillet [3592, 3874, 0]"]
- 153["EdgeCut Fillet [3592, 3874, 0]"]
- 154["EdgeCut Fillet [5380, 5662, 0]"]
- 155["EdgeCut Fillet [5380, 5662, 0]"]
- 156["EdgeCut Fillet [5380, 5662, 0]"]
- 157["EdgeCut Fillet [5380, 5662, 0]"]
+ 150["EdgeCut Fillet [3593, 3875, 0]"]
+ 151["EdgeCut Fillet [3593, 3875, 0]"]
+ 152["EdgeCut Fillet [3593, 3875, 0]"]
+ 153["EdgeCut Fillet [3593, 3875, 0]"]
+ 154["EdgeCut Fillet [5381, 5663, 0]"]
+ 155["EdgeCut Fillet [5381, 5663, 0]"]
+ 156["EdgeCut Fillet [5381, 5663, 0]"]
+ 157["EdgeCut Fillet [5381, 5663, 0]"]
1 --- 8
2 --- 9
2 --- 14
diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap
index ca6cbd65a..3c4839dd4 100644
--- a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap
@@ -2143,7 +2143,8 @@ description: Result of parsing enclosure.kcl
"name": "originStart",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap
index 3cb92e862..a5da9d76e 100644
--- a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap
@@ -354,9 +354,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -367,9 +367,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -380,9 +380,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -393,9 +393,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -416,9 +416,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -441,9 +441,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -466,9 +466,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -491,9 +491,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -693,9 +693,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4128,
- "end": 4149,
- "start": 4128,
+ "commentStart": 4129,
+ "end": 4150,
+ "start": 4129,
"type": "TagDeclarator",
"value": "rectangleSegmentA003"
},
@@ -706,9 +706,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4255,
- "end": 4276,
- "start": 4255,
+ "commentStart": 4256,
+ "end": 4277,
+ "start": 4256,
"type": "TagDeclarator",
"value": "rectangleSegmentB003"
},
@@ -719,9 +719,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4378,
- "end": 4399,
- "start": 4378,
+ "commentStart": 4379,
+ "end": 4400,
+ "start": 4379,
"type": "TagDeclarator",
"value": "rectangleSegmentC003"
},
@@ -732,9 +732,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4469,
- "end": 4490,
- "start": 4469,
+ "commentStart": 4470,
+ "end": 4491,
+ "start": 4470,
"type": "TagDeclarator",
"value": "rectangleSegmentD003"
},
@@ -755,9 +755,9 @@ description: Variables in memory after executing enclosure.kcl
3.0
],
"tag": {
- "commentStart": 4128,
- "end": 4149,
- "start": 4128,
+ "commentStart": 4129,
+ "end": 4150,
+ "start": 4129,
"type": "TagDeclarator",
"value": "rectangleSegmentA003"
},
@@ -780,9 +780,9 @@ description: Variables in memory after executing enclosure.kcl
3.0
],
"tag": {
- "commentStart": 4255,
- "end": 4276,
- "start": 4255,
+ "commentStart": 4256,
+ "end": 4277,
+ "start": 4256,
"type": "TagDeclarator",
"value": "rectangleSegmentB003"
},
@@ -805,9 +805,9 @@ description: Variables in memory after executing enclosure.kcl
172.0
],
"tag": {
- "commentStart": 4378,
- "end": 4399,
- "start": 4378,
+ "commentStart": 4379,
+ "end": 4400,
+ "start": 4379,
"type": "TagDeclarator",
"value": "rectangleSegmentC003"
},
@@ -830,9 +830,9 @@ description: Variables in memory after executing enclosure.kcl
172.0
],
"tag": {
- "commentStart": 4469,
- "end": 4490,
- "start": 4469,
+ "commentStart": 4470,
+ "end": 4491,
+ "start": 4470,
"type": "TagDeclarator",
"value": "rectangleSegmentD003"
},
@@ -896,9 +896,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -909,9 +909,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -922,9 +922,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -935,9 +935,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -958,9 +958,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -983,9 +983,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -1008,9 +1008,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -1033,9 +1033,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -1668,9 +1668,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -1693,9 +1693,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -1718,9 +1718,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -1743,9 +1743,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -1867,9 +1867,9 @@ description: Variables in memory after executing enclosure.kcl
3.0
],
"tag": {
- "commentStart": 4128,
- "end": 4149,
- "start": 4128,
+ "commentStart": 4129,
+ "end": 4150,
+ "start": 4129,
"type": "TagDeclarator",
"value": "rectangleSegmentA003"
},
@@ -1892,9 +1892,9 @@ description: Variables in memory after executing enclosure.kcl
3.0
],
"tag": {
- "commentStart": 4255,
- "end": 4276,
- "start": 4255,
+ "commentStart": 4256,
+ "end": 4277,
+ "start": 4256,
"type": "TagDeclarator",
"value": "rectangleSegmentB003"
},
@@ -1917,9 +1917,9 @@ description: Variables in memory after executing enclosure.kcl
172.0
],
"tag": {
- "commentStart": 4378,
- "end": 4399,
- "start": 4378,
+ "commentStart": 4379,
+ "end": 4400,
+ "start": 4379,
"type": "TagDeclarator",
"value": "rectangleSegmentC003"
},
@@ -1942,9 +1942,9 @@ description: Variables in memory after executing enclosure.kcl
172.0
],
"tag": {
- "commentStart": 4469,
- "end": 4490,
- "start": 4469,
+ "commentStart": 4470,
+ "end": 4491,
+ "start": 4470,
"type": "TagDeclarator",
"value": "rectangleSegmentD003"
},
@@ -2008,9 +2008,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -2021,9 +2021,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -2034,9 +2034,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -2047,9 +2047,9 @@ description: Variables in memory after executing enclosure.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
@@ -2070,9 +2070,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2426,
- "end": 2447,
- "start": 2426,
+ "commentStart": 2427,
+ "end": 2448,
+ "start": 2427,
"type": "TagDeclarator",
"value": "rectangleSegmentA002"
},
@@ -2095,9 +2095,9 @@ description: Variables in memory after executing enclosure.kcl
0.0
],
"tag": {
- "commentStart": 2531,
- "end": 2552,
- "start": 2531,
+ "commentStart": 2532,
+ "end": 2553,
+ "start": 2532,
"type": "TagDeclarator",
"value": "rectangleSegmentB002"
},
@@ -2120,9 +2120,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2654,
- "end": 2675,
- "start": 2654,
+ "commentStart": 2655,
+ "end": 2676,
+ "start": 2655,
"type": "TagDeclarator",
"value": "rectangleSegmentC002"
},
@@ -2145,9 +2145,9 @@ description: Variables in memory after executing enclosure.kcl
175.0
],
"tag": {
- "commentStart": 2745,
- "end": 2766,
- "start": 2745,
+ "commentStart": 2746,
+ "end": 2767,
+ "start": 2746,
"type": "TagDeclarator",
"value": "rectangleSegmentD002"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md
index e9badc19a..e21d5f637 100644
--- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md
@@ -73,64 +73,64 @@ flowchart LR
100[Solid2d]
end
subgraph path22 [Path]
- 22["Path [1667, 1702, 0]"]
- 59["Segment [1708, 1742, 0]"]
- 60["Segment [1748, 1787, 0]"]
- 61["Segment [1793, 1831, 0]"]
- 62["Segment [1837, 1876, 0]"]
- 63["Segment [1882, 1916, 0]"]
- 64["Segment [1922, 1965, 0]"]
- 65["Segment [1971, 2004, 0]"]
- 66["Segment [2010, 2049, 0]"]
- 67["Segment [2055, 2094, 0]"]
- 68["Segment [2100, 2139, 0]"]
- 69["Segment [2145, 2188, 0]"]
- 70["Segment [2194, 2245, 0]"]
- 71["Segment [2251, 2295, 0]"]
- 72["Segment [2301, 2340, 0]"]
- 73["Segment [2346, 2384, 0]"]
- 74["Segment [2390, 2455, 0]"]
- 75["Segment [2461, 2468, 0]"]
+ 22["Path [1923, 1958, 0]"]
+ 59["Segment [1964, 1998, 0]"]
+ 60["Segment [2004, 2043, 0]"]
+ 61["Segment [2049, 2087, 0]"]
+ 62["Segment [2093, 2132, 0]"]
+ 63["Segment [2138, 2172, 0]"]
+ 64["Segment [2178, 2221, 0]"]
+ 65["Segment [2227, 2260, 0]"]
+ 66["Segment [2266, 2305, 0]"]
+ 67["Segment [2311, 2350, 0]"]
+ 68["Segment [2356, 2395, 0]"]
+ 69["Segment [2401, 2444, 0]"]
+ 70["Segment [2450, 2501, 0]"]
+ 71["Segment [2507, 2551, 0]"]
+ 72["Segment [2557, 2596, 0]"]
+ 73["Segment [2602, 2640, 0]"]
+ 74["Segment [2646, 2711, 0]"]
+ 75["Segment [2717, 2724, 0]"]
96[Solid2d]
end
subgraph path23 [Path]
- 23["Path [2553, 2626, 0]"]
- 76["Segment [2553, 2626, 0]"]
+ 23["Path [2809, 2882, 0]"]
+ 76["Segment [2809, 2882, 0]"]
86[Solid2d]
end
subgraph path24 [Path]
- 24["Path [2651, 2724, 0]"]
- 77["Segment [2651, 2724, 0]"]
+ 24["Path [2907, 2980, 0]"]
+ 77["Segment [2907, 2980, 0]"]
98[Solid2d]
end
subgraph path25 [Path]
- 25["Path [2749, 2822, 0]"]
- 78["Segment [2749, 2822, 0]"]
+ 25["Path [3005, 3078, 0]"]
+ 78["Segment [3005, 3078, 0]"]
85[Solid2d]
end
subgraph path26 [Path]
- 26["Path [2847, 2920, 0]"]
- 79["Segment [2847, 2920, 0]"]
+ 26["Path [3103, 3176, 0]"]
+ 79["Segment [3103, 3176, 0]"]
94[Solid2d]
end
subgraph path27 [Path]
- 27["Path [2984, 3123, 0]"]
- 80["Segment [2984, 3123, 0]"]
+ 27["Path [3240, 3379, 0]"]
+ 80["Segment [3240, 3379, 0]"]
87[Solid2d]
end
subgraph path28 [Path]
- 28["Path [3148, 3285, 0]"]
- 81["Segment [3148, 3285, 0]"]
+ 28["Path [3404, 3541, 0]"]
+ 81["Segment [3404, 3541, 0]"]
99[Solid2d]
end
subgraph path29 [Path]
- 29["Path [3310, 3457, 0]"]
- 82["Segment [3310, 3457, 0]"]
+ 29["Path [3566, 3713, 0]"]
+ 82["Segment [3566, 3713, 0]"]
90[Solid2d]
end
subgraph path30 [Path]
- 30["Path [3482, 3628, 0]"]
- 83["Segment [3482, 3628, 0]"]
+ 30["Path [3738, 3884, 0]"]
+ 83["Segment [3738, 3884, 0]"]
97[Solid2d]
end
1["Plane [702, 727, 0]"]
@@ -141,12 +141,12 @@ flowchart LR
6["Plane [1152, 1169, 0]"]
7["Plane [1152, 1169, 0]"]
8["Plane [1152, 1169, 0]"]
- 9["Plane [1644, 1661, 0]"]
+ 9["Plane [1900, 1917, 0]"]
101["Sweep Sweep [1352, 1375, 0]"]
102["Sweep Sweep [1352, 1375, 0]"]
103["Sweep Sweep [1352, 1375, 0]"]
104["Sweep Sweep [1352, 1375, 0]"]
- 105["Sweep Extrusion [3681, 3710, 0]"]
+ 105["Sweep Extrusion [3937, 3966, 0]"]
106[Wall]
107[Wall]
108[Wall]
@@ -217,10 +217,10 @@ flowchart LR
173["SweepEdge Adjacent"]
174["SweepEdge Adjacent"]
175["SweepEdge Adjacent"]
- 176["EdgeCut Fillet [3716, 3850, 0]"]
- 177["EdgeCut Fillet [3716, 3850, 0]"]
- 178["EdgeCut Fillet [3856, 3990, 0]"]
- 179["EdgeCut Fillet [3856, 3990, 0]"]
+ 176["EdgeCut Fillet [3972, 4106, 0]"]
+ 177["EdgeCut Fillet [3972, 4106, 0]"]
+ 178["EdgeCut Fillet [4112, 4246, 0]"]
+ 179["EdgeCut Fillet [4112, 4246, 0]"]
1 --- 11
2 --- 10
3 --- 13
diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap
index 294891695..41a010275 100644
--- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap
@@ -1717,63 +1717,113 @@ description: Result of parsing exhaust-manifold.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "n",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "angle001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 6.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length002",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 6.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length003",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -1795,8 +1845,9 @@ description: Result of parsing exhaust-manifold.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
@@ -1813,63 +1864,113 @@ description: Result of parsing exhaust-manifold.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "n",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "angle001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 6.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length002",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 6.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length003",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -1891,8 +1992,9 @@ description: Result of parsing exhaust-manifold.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1904,63 +2006,113 @@ description: Result of parsing exhaust-manifold.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "n",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "24.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 24.3,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "angle001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "24.3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 24.3,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length002",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length003",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
}
],
@@ -1982,8 +2134,9 @@ description: Result of parsing exhaust-manifold.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -1995,63 +2148,113 @@ description: Result of parsing exhaust-manifold.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "n",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "25.2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 25.2,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "angle001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "25.2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 25.2,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length001",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length002",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length003",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
}
],
@@ -2073,8 +2276,9 @@ description: Result of parsing exhaust-manifold.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap
index 8b8aca410..98e45cf55 100644
--- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap
@@ -1086,7 +1086,88 @@ description: Operations executed exhaust-manifold.kcl
"name": "primaryTube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "angle001": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length001": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length002": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length003": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "n": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -1097,7 +1178,88 @@ description: Operations executed exhaust-manifold.kcl
"name": "primaryTube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "angle001": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length001": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length002": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length003": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "n": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -1108,7 +1270,88 @@ description: Operations executed exhaust-manifold.kcl
"name": "primaryTube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "angle001": {
+ "value": {
+ "type": "Number",
+ "value": 24.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length001": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length002": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length003": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "n": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -1119,7 +1362,88 @@ description: Operations executed exhaust-manifold.kcl
"name": "primaryTube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "angle001": {
+ "value": {
+ "type": "Number",
+ "value": 25.2,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length001": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length002": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "length003": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "n": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap
index c1bc78139..5e2167296 100644
--- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap
@@ -28,9 +28,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1735,
- "end": 1741,
- "start": 1735,
+ "commentStart": 1991,
+ "end": 1997,
+ "start": 1991,
"type": "TagDeclarator",
"value": "seg01"
},
@@ -62,9 +62,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1909,
- "end": 1915,
- "start": 1909,
+ "commentStart": 2165,
+ "end": 2171,
+ "start": 2165,
"type": "TagDeclarator",
"value": "seg03"
},
@@ -75,9 +75,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1958,
- "end": 1964,
- "start": 1958,
+ "commentStart": 2214,
+ "end": 2220,
+ "start": 2214,
"type": "TagDeclarator",
"value": "seg04"
},
@@ -88,9 +88,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1997,
- "end": 2003,
- "start": 1997,
+ "commentStart": 2253,
+ "end": 2259,
+ "start": 2253,
"type": "TagDeclarator",
"value": "seg05"
},
@@ -122,9 +122,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2181,
- "end": 2187,
- "start": 2181,
+ "commentStart": 2437,
+ "end": 2443,
+ "start": 2437,
"type": "TagDeclarator",
"value": "seg07"
},
@@ -135,9 +135,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2238,
- "end": 2244,
- "start": 2238,
+ "commentStart": 2494,
+ "end": 2500,
+ "start": 2494,
"type": "TagDeclarator",
"value": "seg08"
},
@@ -148,9 +148,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2288,
- "end": 2294,
- "start": 2288,
+ "commentStart": 2544,
+ "end": 2550,
+ "start": 2544,
"type": "TagDeclarator",
"value": "seg09"
},
@@ -192,9 +192,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
-1.25
],
"tag": {
- "commentStart": 1735,
- "end": 1741,
- "start": 1735,
+ "commentStart": 1991,
+ "end": 1997,
+ "start": 1991,
"type": "TagDeclarator",
"value": "seg01"
},
@@ -289,9 +289,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
-1.25
],
"tag": {
- "commentStart": 1909,
- "end": 1915,
- "start": 1909,
+ "commentStart": 2165,
+ "end": 2171,
+ "start": 2165,
"type": "TagDeclarator",
"value": "seg03"
},
@@ -314,9 +314,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
-1.25
],
"tag": {
- "commentStart": 1958,
- "end": 1964,
- "start": 1958,
+ "commentStart": 2214,
+ "end": 2220,
+ "start": 2214,
"type": "TagDeclarator",
"value": "seg04"
},
@@ -339,9 +339,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
1.35
],
"tag": {
- "commentStart": 1997,
- "end": 2003,
- "start": 1997,
+ "commentStart": 2253,
+ "end": 2259,
+ "start": 2253,
"type": "TagDeclarator",
"value": "seg05"
},
@@ -436,9 +436,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
1.35
],
"tag": {
- "commentStart": 2181,
- "end": 2187,
- "start": 2181,
+ "commentStart": 2437,
+ "end": 2443,
+ "start": 2437,
"type": "TagDeclarator",
"value": "seg07"
},
@@ -461,9 +461,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
1.35
],
"tag": {
- "commentStart": 2238,
- "end": 2244,
- "start": 2238,
+ "commentStart": 2494,
+ "end": 2500,
+ "start": 2494,
"type": "TagDeclarator",
"value": "seg08"
},
@@ -486,9 +486,9 @@ description: Variables in memory after executing exhaust-manifold.kcl
-1.25
],
"tag": {
- "commentStart": 2288,
- "end": 2294,
- "start": 2288,
+ "commentStart": 2544,
+ "end": 2550,
+ "start": 2544,
"type": "TagDeclarator",
"value": "seg09"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md
index 220914521..19175abde 100644
--- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md
@@ -1,68 +1,68 @@
```mermaid
flowchart LR
subgraph path6 [Path]
- 6["Path [1234, 1272, 0]"]
- 13["Segment [1280, 1330, 0]"]
- 14["Segment [1338, 1387, 0]"]
- 15["Segment [1395, 1447, 0]"]
- 16["Segment [1455, 1503, 0]"]
- 17["Segment [1511, 1555, 0]"]
- 18["Segment [1563, 1608, 0]"]
- 19["Segment [1616, 1665, 0]"]
- 20["Segment [1673, 1692, 0]"]
+ 6["Path [813, 851, 0]"]
+ 13["Segment [859, 909, 0]"]
+ 14["Segment [917, 966, 0]"]
+ 15["Segment [974, 1026, 0]"]
+ 16["Segment [1034, 1082, 0]"]
+ 17["Segment [1090, 1134, 0]"]
+ 18["Segment [1142, 1187, 0]"]
+ 19["Segment [1195, 1244, 0]"]
+ 20["Segment [1252, 1271, 0]"]
42[Solid2d]
end
subgraph path7 [Path]
- 7["Path [2383, 2437, 0]"]
- 21["Segment [2443, 2496, 0]"]
- 22["Segment [2502, 2552, 0]"]
- 23["Segment [2558, 2612, 0]"]
- 24["Segment [2618, 2638, 0]"]
+ 7["Path [1974, 2028, 0]"]
+ 21["Segment [2034, 2087, 0]"]
+ 22["Segment [2093, 2143, 0]"]
+ 23["Segment [2149, 2203, 0]"]
+ 24["Segment [2209, 2229, 0]"]
38[Solid2d]
end
subgraph path8 [Path]
- 8["Path [2662, 2825, 0]"]
- 25["Segment [2662, 2825, 0]"]
+ 8["Path [2253, 2416, 0]"]
+ 25["Segment [2253, 2416, 0]"]
40[Solid2d]
end
subgraph path9 [Path]
- 9["Path [3207, 3262, 0]"]
- 26["Segment [3268, 3322, 0]"]
- 27["Segment [3328, 3378, 0]"]
- 28["Segment [3384, 3437, 0]"]
- 29["Segment [3443, 3463, 0]"]
+ 9["Path [2798, 2853, 0]"]
+ 26["Segment [2859, 2913, 0]"]
+ 27["Segment [2919, 2969, 0]"]
+ 28["Segment [2975, 3028, 0]"]
+ 29["Segment [3034, 3054, 0]"]
39[Solid2d]
end
subgraph path10 [Path]
- 10["Path [3487, 3653, 0]"]
- 30["Segment [3487, 3653, 0]"]
+ 10["Path [3078, 3244, 0]"]
+ 30["Segment [3078, 3244, 0]"]
43[Solid2d]
end
subgraph path11 [Path]
- 11["Path [4233, 4274, 0]"]
- 31["Segment [4280, 4300, 0]"]
- 32["Segment [4306, 4329, 0]"]
- 33["Segment [4335, 4342, 0]"]
+ 11["Path [3824, 3865, 0]"]
+ 31["Segment [3871, 3891, 0]"]
+ 32["Segment [3897, 3920, 0]"]
+ 33["Segment [3926, 3933, 0]"]
41[Solid2d]
end
subgraph path12 [Path]
- 12["Path [4457, 4497, 0]"]
- 34["Segment [4503, 4523, 0]"]
- 35["Segment [4529, 4550, 0]"]
- 36["Segment [4556, 4577, 0]"]
- 37["Segment [4583, 4590, 0]"]
+ 12["Path [4048, 4088, 0]"]
+ 34["Segment [4094, 4114, 0]"]
+ 35["Segment [4120, 4141, 0]"]
+ 36["Segment [4147, 4168, 0]"]
+ 37["Segment [4174, 4181, 0]"]
44[Solid2d]
end
- 1["Plane [1199, 1226, 0]"]
- 2["Plane [2354, 2377, 0]"]
- 3["Plane [3178, 3201, 0]"]
- 4["Plane [4204, 4227, 0]"]
- 5["Plane [4428, 4451, 0]"]
- 45["Sweep Extrusion [1800, 1834, 0]"]
- 46["Sweep Extrusion [2832, 2857, 0]"]
- 47["Sweep Extrusion [3660, 3685, 0]"]
- 48["Sweep Extrusion [4348, 4376, 0]"]
- 49["Sweep Extrusion [4596, 4624, 0]"]
+ 1["Plane [778, 805, 0]"]
+ 2["Plane [1945, 1968, 0]"]
+ 3["Plane [2769, 2792, 0]"]
+ 4["Plane [3795, 3818, 0]"]
+ 5["Plane [4019, 4042, 0]"]
+ 45["Sweep Extrusion [1391, 1425, 0]"]
+ 46["Sweep Extrusion [2423, 2448, 0]"]
+ 47["Sweep Extrusion [3251, 3276, 0]"]
+ 48["Sweep Extrusion [3939, 3967, 0]"]
+ 49["Sweep Extrusion [4187, 4215, 0]"]
50[Wall]
51[Wall]
52[Wall]
@@ -142,14 +142,14 @@ flowchart LR
126["SweepEdge Adjacent"]
127["SweepEdge Adjacent"]
128["SweepEdge Adjacent"]
- 129["EdgeCut Fillet [1840, 2099, 0]"]
- 130["EdgeCut Fillet [1840, 2099, 0]"]
- 131["EdgeCut Fillet [1840, 2099, 0]"]
- 132["EdgeCut Fillet [1840, 2099, 0]"]
- 133["EdgeCut Fillet [2863, 3008, 0]"]
- 134["EdgeCut Fillet [2863, 3008, 0]"]
- 135["EdgeCut Fillet [3691, 3836, 0]"]
- 136["EdgeCut Fillet [3691, 3836, 0]"]
+ 129["EdgeCut Fillet [1431, 1690, 0]"]
+ 130["EdgeCut Fillet [1431, 1690, 0]"]
+ 131["EdgeCut Fillet [1431, 1690, 0]"]
+ 132["EdgeCut Fillet [1431, 1690, 0]"]
+ 133["EdgeCut Fillet [2454, 2599, 0]"]
+ 134["EdgeCut Fillet [2454, 2599, 0]"]
+ 135["EdgeCut Fillet [3282, 3427, 0]"]
+ 136["EdgeCut Fillet [3282, 3427, 0]"]
1 --- 6
2 --- 7
2 --- 8
diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap
index 6126a74e1..dfb05b962 100644
--- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap
@@ -305,1020 +305,6 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl
"type": "VariableDeclaration",
"type": "VariableDeclaration"
},
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "rectShape",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "body": {
- "body": [
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "rr",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "body": [
- {
- "arguments": [
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "XY",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "startSketchOn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "at",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "w",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "startProfile",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "w",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- }
- },
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "tag",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "TagDeclarator",
- "type": "TagDeclarator",
- "value": "edge01"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "w",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- }
- },
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "tag",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "TagDeclarator",
- "type": "TagDeclarator",
- "value": "edge02"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "w",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- }
- },
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "tag",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "TagDeclarator",
- "type": "TagDeclarator",
- "value": "edge03"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "tag",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "TagDeclarator",
- "type": "TagDeclarator",
- "value": "edge04"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "close",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- }
- ],
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "PipeExpression",
- "type": "PipeExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "rr",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "ReturnStatement",
- "type": "ReturnStatement"
- }
- ],
- "commentStart": 0,
- "end": 0,
- "start": 0
- },
- "commentStart": 0,
- "end": 0,
- "params": [
- {
- "type": "Parameter",
- "identifier": {
- "commentStart": 0,
- "end": 0,
- "name": "pos",
- "start": 0,
- "type": "Identifier"
- }
- },
- {
- "type": "Parameter",
- "identifier": {
- "commentStart": 0,
- "end": 0,
- "name": "w",
- "start": 0,
- "type": "Identifier"
- }
- },
- {
- "type": "Parameter",
- "identifier": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- }
- }
- ],
- "start": 0,
- "type": "FunctionExpression",
- "type": "FunctionExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "fn",
- "preComments": [
- "",
- "",
- "// Define a rectangular shape func"
- ],
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
{
"commentStart": 0,
"declaration": {
@@ -3147,52 +2133,82 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "width",
+ "name": "w",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "depth",
+ "name": "d",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "thk",
+ "name": "t",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "thk",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3213,8 +2229,9 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap
index 7ca435454..5e03346f3 100644
--- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap
@@ -202,7 +202,56 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl
"name": "bracketSketch",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "d": {
+ "value": {
+ "type": "Number",
+ "value": 45.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "t": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "w": {
+ "value": {
+ "type": "Number",
+ "value": 144.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap
index 95ee6572e..4316f42af 100644
--- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap
@@ -15,9 +15,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1323,
- "end": 1329,
- "start": 1323,
+ "commentStart": 902,
+ "end": 908,
+ "start": 902,
"type": "TagDeclarator",
"value": "edge1"
},
@@ -28,9 +28,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1380,
- "end": 1386,
- "start": 1380,
+ "commentStart": 959,
+ "end": 965,
+ "start": 959,
"type": "TagDeclarator",
"value": "edge2"
},
@@ -41,9 +41,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1440,
- "end": 1446,
- "start": 1440,
+ "commentStart": 1019,
+ "end": 1025,
+ "start": 1019,
"type": "TagDeclarator",
"value": "edge3"
},
@@ -54,9 +54,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1496,
- "end": 1502,
- "start": 1496,
+ "commentStart": 1075,
+ "end": 1081,
+ "start": 1075,
"type": "TagDeclarator",
"value": "edge4"
},
@@ -67,9 +67,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1548,
- "end": 1554,
- "start": 1548,
+ "commentStart": 1127,
+ "end": 1133,
+ "start": 1127,
"type": "TagDeclarator",
"value": "edge5"
},
@@ -80,9 +80,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1601,
- "end": 1607,
- "start": 1601,
+ "commentStart": 1180,
+ "end": 1186,
+ "start": 1180,
"type": "TagDeclarator",
"value": "edge6"
},
@@ -93,9 +93,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1658,
- "end": 1664,
- "start": 1658,
+ "commentStart": 1237,
+ "end": 1243,
+ "start": 1237,
"type": "TagDeclarator",
"value": "edge7"
},
@@ -106,9 +106,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 1685,
- "end": 1691,
- "start": 1685,
+ "commentStart": 1264,
+ "end": 1270,
+ "start": 1264,
"type": "TagDeclarator",
"value": "edge8"
},
@@ -129,9 +129,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1323,
- "end": 1329,
- "start": 1323,
+ "commentStart": 902,
+ "end": 908,
+ "start": 902,
"type": "TagDeclarator",
"value": "edge1"
},
@@ -154,9 +154,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
-4.0
],
"tag": {
- "commentStart": 1380,
- "end": 1386,
- "start": 1380,
+ "commentStart": 959,
+ "end": 965,
+ "start": 959,
"type": "TagDeclarator",
"value": "edge2"
},
@@ -179,9 +179,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
-4.0
],
"tag": {
- "commentStart": 1440,
- "end": 1446,
- "start": 1440,
+ "commentStart": 1019,
+ "end": 1025,
+ "start": 1019,
"type": "TagDeclarator",
"value": "edge3"
},
@@ -204,9 +204,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1496,
- "end": 1502,
- "start": 1496,
+ "commentStart": 1075,
+ "end": 1081,
+ "start": 1075,
"type": "TagDeclarator",
"value": "edge4"
},
@@ -229,9 +229,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1548,
- "end": 1554,
- "start": 1548,
+ "commentStart": 1127,
+ "end": 1133,
+ "start": 1127,
"type": "TagDeclarator",
"value": "edge5"
},
@@ -254,9 +254,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
0.0
],
"tag": {
- "commentStart": 1601,
- "end": 1607,
- "start": 1601,
+ "commentStart": 1180,
+ "end": 1186,
+ "start": 1180,
"type": "TagDeclarator",
"value": "edge6"
},
@@ -279,9 +279,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
0.0
],
"tag": {
- "commentStart": 1658,
- "end": 1664,
- "start": 1658,
+ "commentStart": 1237,
+ "end": 1243,
+ "start": 1237,
"type": "TagDeclarator",
"value": "edge7"
},
@@ -304,9 +304,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1685,
- "end": 1691,
- "start": 1685,
+ "commentStart": 1264,
+ "end": 1270,
+ "start": 1264,
"type": "TagDeclarator",
"value": "edge8"
},
@@ -691,9 +691,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1323,
- "end": 1329,
- "start": 1323,
+ "commentStart": 902,
+ "end": 908,
+ "start": 902,
"type": "TagDeclarator",
"value": "edge1"
},
@@ -716,9 +716,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
-4.0
],
"tag": {
- "commentStart": 1380,
- "end": 1386,
- "start": 1380,
+ "commentStart": 959,
+ "end": 965,
+ "start": 959,
"type": "TagDeclarator",
"value": "edge2"
},
@@ -741,9 +741,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
-4.0
],
"tag": {
- "commentStart": 1440,
- "end": 1446,
- "start": 1440,
+ "commentStart": 1019,
+ "end": 1025,
+ "start": 1019,
"type": "TagDeclarator",
"value": "edge3"
},
@@ -766,9 +766,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1496,
- "end": 1502,
- "start": 1496,
+ "commentStart": 1075,
+ "end": 1081,
+ "start": 1075,
"type": "TagDeclarator",
"value": "edge4"
},
@@ -791,9 +791,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1548,
- "end": 1554,
- "start": 1548,
+ "commentStart": 1127,
+ "end": 1133,
+ "start": 1127,
"type": "TagDeclarator",
"value": "edge5"
},
@@ -816,9 +816,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
0.0
],
"tag": {
- "commentStart": 1601,
- "end": 1607,
- "start": 1601,
+ "commentStart": 1180,
+ "end": 1186,
+ "start": 1180,
"type": "TagDeclarator",
"value": "edge6"
},
@@ -841,9 +841,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
0.0
],
"tag": {
- "commentStart": 1658,
- "end": 1664,
- "start": 1658,
+ "commentStart": 1237,
+ "end": 1243,
+ "start": 1237,
"type": "TagDeclarator",
"value": "edge7"
},
@@ -866,9 +866,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
49.0
],
"tag": {
- "commentStart": 1685,
- "end": 1691,
- "start": 1685,
+ "commentStart": 1264,
+ "end": 1270,
+ "start": 1264,
"type": "TagDeclarator",
"value": "edge8"
},
@@ -1103,9 +1103,6 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
}
}
},
- "rectShape": {
- "type": "Function"
- },
"retBack": {
"type": "Solid",
"value": {
@@ -1856,9 +1853,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3314,
- "end": 3321,
- "start": 3314,
+ "commentStart": 2905,
+ "end": 2912,
+ "start": 2905,
"type": "TagDeclarator",
"value": "edge21"
},
@@ -1869,9 +1866,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3370,
- "end": 3377,
- "start": 3370,
+ "commentStart": 2961,
+ "end": 2968,
+ "start": 2961,
"type": "TagDeclarator",
"value": "edge22"
},
@@ -1882,9 +1879,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3429,
- "end": 3436,
- "start": 3429,
+ "commentStart": 3020,
+ "end": 3027,
+ "start": 3020,
"type": "TagDeclarator",
"value": "edge23"
},
@@ -1895,9 +1892,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3455,
- "end": 3462,
- "start": 3455,
+ "commentStart": 3046,
+ "end": 3053,
+ "start": 3046,
"type": "TagDeclarator",
"value": "edge24"
},
@@ -1918,9 +1915,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
44.0
],
"tag": {
- "commentStart": 3314,
- "end": 3321,
- "start": 3314,
+ "commentStart": 2905,
+ "end": 2912,
+ "start": 2905,
"type": "TagDeclarator",
"value": "edge21"
},
@@ -1943,9 +1940,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
35.6667
],
"tag": {
- "commentStart": 3370,
- "end": 3377,
- "start": 3370,
+ "commentStart": 2961,
+ "end": 2968,
+ "start": 2961,
"type": "TagDeclarator",
"value": "edge22"
},
@@ -1968,9 +1965,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
19.0
],
"tag": {
- "commentStart": 3429,
- "end": 3436,
- "start": 3429,
+ "commentStart": 3020,
+ "end": 3027,
+ "start": 3020,
"type": "TagDeclarator",
"value": "edge23"
},
@@ -1993,9 +1990,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
10.6667
],
"tag": {
- "commentStart": 3455,
- "end": 3462,
- "start": 3455,
+ "commentStart": 3046,
+ "end": 3053,
+ "start": 3046,
"type": "TagDeclarator",
"value": "edge24"
},
@@ -2140,9 +2137,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3314,
- "end": 3321,
- "start": 3314,
+ "commentStart": 2905,
+ "end": 2912,
+ "start": 2905,
"type": "TagDeclarator",
"value": "edge21"
},
@@ -2153,9 +2150,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3370,
- "end": 3377,
- "start": 3370,
+ "commentStart": 2961,
+ "end": 2968,
+ "start": 2961,
"type": "TagDeclarator",
"value": "edge22"
},
@@ -2166,9 +2163,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3429,
- "end": 3436,
- "start": 3429,
+ "commentStart": 3020,
+ "end": 3027,
+ "start": 3020,
"type": "TagDeclarator",
"value": "edge23"
},
@@ -2179,9 +2176,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 3455,
- "end": 3462,
- "start": 3455,
+ "commentStart": 3046,
+ "end": 3053,
+ "start": 3046,
"type": "TagDeclarator",
"value": "edge24"
},
@@ -2202,9 +2199,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
44.0
],
"tag": {
- "commentStart": 3314,
- "end": 3321,
- "start": 3314,
+ "commentStart": 2905,
+ "end": 2912,
+ "start": 2905,
"type": "TagDeclarator",
"value": "edge21"
},
@@ -2227,9 +2224,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
35.6667
],
"tag": {
- "commentStart": 3370,
- "end": 3377,
- "start": 3370,
+ "commentStart": 2961,
+ "end": 2968,
+ "start": 2961,
"type": "TagDeclarator",
"value": "edge22"
},
@@ -2252,9 +2249,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
19.0
],
"tag": {
- "commentStart": 3429,
- "end": 3436,
- "start": 3429,
+ "commentStart": 3020,
+ "end": 3027,
+ "start": 3020,
"type": "TagDeclarator",
"value": "edge23"
},
@@ -2277,9 +2274,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
10.6667
],
"tag": {
- "commentStart": 3455,
- "end": 3462,
- "start": 3455,
+ "commentStart": 3046,
+ "end": 3053,
+ "start": 3046,
"type": "TagDeclarator",
"value": "edge24"
},
@@ -2429,9 +2426,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2488,
- "end": 2495,
- "start": 2488,
+ "commentStart": 2079,
+ "end": 2086,
+ "start": 2079,
"type": "TagDeclarator",
"value": "edge11"
},
@@ -2442,9 +2439,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2544,
- "end": 2551,
- "start": 2544,
+ "commentStart": 2135,
+ "end": 2142,
+ "start": 2135,
"type": "TagDeclarator",
"value": "edge12"
},
@@ -2455,9 +2452,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2604,
- "end": 2611,
- "start": 2604,
+ "commentStart": 2195,
+ "end": 2202,
+ "start": 2195,
"type": "TagDeclarator",
"value": "edge13"
},
@@ -2468,9 +2465,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2630,
- "end": 2637,
- "start": 2630,
+ "commentStart": 2221,
+ "end": 2228,
+ "start": 2221,
"type": "TagDeclarator",
"value": "edge14"
},
@@ -2491,9 +2488,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
44.0
],
"tag": {
- "commentStart": 2488,
- "end": 2495,
- "start": 2488,
+ "commentStart": 2079,
+ "end": 2086,
+ "start": 2079,
"type": "TagDeclarator",
"value": "edge11"
},
@@ -2516,9 +2513,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
35.6667
],
"tag": {
- "commentStart": 2544,
- "end": 2551,
- "start": 2544,
+ "commentStart": 2135,
+ "end": 2142,
+ "start": 2135,
"type": "TagDeclarator",
"value": "edge12"
},
@@ -2541,9 +2538,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
19.0
],
"tag": {
- "commentStart": 2604,
- "end": 2611,
- "start": 2604,
+ "commentStart": 2195,
+ "end": 2202,
+ "start": 2195,
"type": "TagDeclarator",
"value": "edge13"
},
@@ -2566,9 +2563,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
10.6667
],
"tag": {
- "commentStart": 2630,
- "end": 2637,
- "start": 2630,
+ "commentStart": 2221,
+ "end": 2228,
+ "start": 2221,
"type": "TagDeclarator",
"value": "edge14"
},
@@ -2713,9 +2710,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2488,
- "end": 2495,
- "start": 2488,
+ "commentStart": 2079,
+ "end": 2086,
+ "start": 2079,
"type": "TagDeclarator",
"value": "edge11"
},
@@ -2726,9 +2723,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2544,
- "end": 2551,
- "start": 2544,
+ "commentStart": 2135,
+ "end": 2142,
+ "start": 2135,
"type": "TagDeclarator",
"value": "edge12"
},
@@ -2739,9 +2736,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2604,
- "end": 2611,
- "start": 2604,
+ "commentStart": 2195,
+ "end": 2202,
+ "start": 2195,
"type": "TagDeclarator",
"value": "edge13"
},
@@ -2752,9 +2749,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2630,
- "end": 2637,
- "start": 2630,
+ "commentStart": 2221,
+ "end": 2228,
+ "start": 2221,
"type": "TagDeclarator",
"value": "edge14"
},
@@ -2775,9 +2772,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
44.0
],
"tag": {
- "commentStart": 2488,
- "end": 2495,
- "start": 2488,
+ "commentStart": 2079,
+ "end": 2086,
+ "start": 2079,
"type": "TagDeclarator",
"value": "edge11"
},
@@ -2800,9 +2797,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
35.6667
],
"tag": {
- "commentStart": 2544,
- "end": 2551,
- "start": 2544,
+ "commentStart": 2135,
+ "end": 2142,
+ "start": 2135,
"type": "TagDeclarator",
"value": "edge12"
},
@@ -2825,9 +2822,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
19.0
],
"tag": {
- "commentStart": 2604,
- "end": 2611,
- "start": 2604,
+ "commentStart": 2195,
+ "end": 2202,
+ "start": 2195,
"type": "TagDeclarator",
"value": "edge13"
},
@@ -2850,9 +2847,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra
10.6667
],
"tag": {
- "commentStart": 2630,
- "end": 2637,
- "start": 2630,
+ "commentStart": 2221,
+ "end": 2228,
+ "start": 2221,
"type": "TagDeclarator",
"value": "edge14"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md
index 54e7fbd11..6e8bbf853 100644
--- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md
@@ -46,38 +46,38 @@ flowchart LR
57[Solid2d]
end
subgraph path11 [Path]
- 11["Path [2744, 2800, 0]"]
- 38["Segment [2806, 2865, 0]"]
- 39["Segment [2871, 2906, 0]"]
- 40["Segment [2912, 2945, 0]"]
- 41["Segment [2951, 3010, 0]"]
- 42["Segment [3016, 3052, 0]"]
- 43["Segment [3058, 3082, 0]"]
- 44["Segment [3088, 3095, 0]"]
+ 11["Path [2873, 2929, 0]"]
+ 38["Segment [2935, 2994, 0]"]
+ 39["Segment [3000, 3035, 0]"]
+ 40["Segment [3041, 3074, 0]"]
+ 41["Segment [3080, 3139, 0]"]
+ 42["Segment [3145, 3181, 0]"]
+ 43["Segment [3187, 3211, 0]"]
+ 44["Segment [3217, 3224, 0]"]
54[Solid2d]
end
subgraph path12 [Path]
- 12["Path [3690, 3740, 0]"]
- 45["Segment [3746, 3796, 0]"]
- 46["Segment [3802, 3868, 0]"]
- 47["Segment [3874, 3925, 0]"]
- 48["Segment [3931, 3996, 0]"]
- 49["Segment [4002, 4055, 0]"]
- 50["Segment [4061, 4128, 0]"]
- 51["Segment [4134, 4208, 0]"]
- 52["Segment [4214, 4282, 0]"]
- 53["Segment [4288, 4295, 0]"]
+ 12["Path [3819, 3869, 0]"]
+ 45["Segment [3875, 3925, 0]"]
+ 46["Segment [3931, 3997, 0]"]
+ 47["Segment [4003, 4054, 0]"]
+ 48["Segment [4060, 4125, 0]"]
+ 49["Segment [4131, 4184, 0]"]
+ 50["Segment [4190, 4257, 0]"]
+ 51["Segment [4263, 4337, 0]"]
+ 52["Segment [4343, 4411, 0]"]
+ 53["Segment [4417, 4424, 0]"]
55[Solid2d]
end
1["Plane [1379, 1396, 0]"]
- 2["Plane [2641, 2683, 0]"]
- 3["Plane [3616, 3642, 0]"]
- 4["StartSketchOnPlane [2627, 2684, 0]"]
- 5["StartSketchOnFace [4452, 4491, 0]"]
- 61["Sweep Extrusion [2318, 2368, 0]"]
- 62["Sweep Extrusion [3129, 3173, 0]"]
- 63["Sweep Extrusion [4351, 4393, 0]"]
- 64["Sweep Extrusion [4628, 4678, 0]"]
+ 2["Plane [2770, 2812, 0]"]
+ 3["Plane [3745, 3771, 0]"]
+ 4["StartSketchOnPlane [2756, 2813, 0]"]
+ 5["StartSketchOnFace [4581, 4620, 0]"]
+ 61["Sweep Extrusion [2447, 2497, 0]"]
+ 62["Sweep Extrusion [3258, 3302, 0]"]
+ 63["Sweep Extrusion [4480, 4522, 0]"]
+ 64["Sweep Extrusion [4800, 4850, 0]"]
65[Wall]
66[Wall]
67[Wall]
@@ -156,10 +156,10 @@ flowchart LR
140["SweepEdge Adjacent"]
141["SweepEdge Adjacent"]
142["SweepEdge Adjacent"]
- 143["EdgeCut Fillet [2405, 2546, 0]"]
- 144["EdgeCut Fillet [2405, 2546, 0]"]
- 145["EdgeCut Fillet [3216, 3347, 0]"]
- 146["EdgeCut Fillet [3216, 3347, 0]"]
+ 143["EdgeCut Fillet [2534, 2675, 0]"]
+ 144["EdgeCut Fillet [2534, 2675, 0]"]
+ 145["EdgeCut Fillet [3345, 3476, 0]"]
+ 146["EdgeCut Fillet [3345, 3476, 0]"]
1 --- 6
1 --- 8
1 --- 9
diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap
index 5cd7c5112..ee8461378 100644
--- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap
@@ -2863,118 +2863,158 @@ description: Result of parsing food-service-spatula.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "flipperSketch",
+ "name": "sketch1",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSketch",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "elements": [
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "start",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "25",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 25.0,
+ "suffix": "None"
+ }
+ },
"commentStart": 0,
"end": 0,
- "raw": "25",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 25.0,
+ "value": 0.0,
"suffix": "None"
}
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
}
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "elements": [
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "end",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "55",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 55.0,
+ "suffix": "None"
+ }
+ },
"commentStart": 0,
"end": 0,
- "raw": "55",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 55.0,
+ "value": 0.0,
"suffix": "None"
}
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
}
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "flipperSlotWidth",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSlotWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -2995,8 +3035,9 @@ description: Result of parsing food-service-spatula.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -3022,118 +3063,158 @@ description: Result of parsing food-service-spatula.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "flipperSketch",
+ "name": "sketch1",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSketch",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "elements": [
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "start",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "25",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 25.0,
+ "suffix": "None"
+ }
+ },
"commentStart": 0,
"end": 0,
- "raw": "25",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "18",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 25.0,
+ "value": 18.0,
"suffix": "None"
}
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "18",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 18.0,
- "suffix": "None"
}
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "elements": [
- {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "end",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "55",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 55.0,
+ "suffix": "None"
+ }
+ },
"commentStart": 0,
"end": 0,
- "raw": "55",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "19",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 55.0,
+ "value": 19.0,
"suffix": "None"
}
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "19",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 19.0,
- "suffix": "None"
}
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "flipperSlotWidth",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSlotWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3154,8 +3235,9 @@ description: Result of parsing food-service-spatula.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -3186,134 +3268,174 @@ description: Result of parsing food-service-spatula.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "flipperSketch",
+ "name": "sketch1",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "elements": [
- {
- "argument": {
- "commentStart": 0,
- "end": 0,
- "raw": "25",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 25.0,
- "suffix": "None"
- }
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "argument": {
- "commentStart": 0,
- "end": 0,
- "raw": "18",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 18.0,
- "suffix": "None"
- }
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "elements": [
- {
- "argument": {
- "commentStart": 0,
- "end": 0,
- "raw": "55",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 55.0,
- "suffix": "None"
- }
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "argument": {
- "commentStart": 0,
- "end": 0,
- "raw": "19",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 19.0,
- "suffix": "None"
- }
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "flipperSlotWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSketch",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "start",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "25",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 25.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "18",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 18.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "end",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "55",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 55.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "19",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 19.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "flipperSlotWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3334,8 +3456,9 @@ description: Result of parsing food-service-spatula.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -6403,102 +6526,142 @@ description: Result of parsing food-service-spatula.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "holeSketch",
+ "name": "sketch1",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "200",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 200.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "210",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 210.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "gripSlotWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "holeSketch",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "start",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "200",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 200.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "end",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "210",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 210.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "gripSlotWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -6519,8 +6682,9 @@ description: Result of parsing food-service-spatula.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap
index c1e8fac73..c82d647ef 100644
--- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap
@@ -223,7 +223,99 @@ description: Operations executed food-service-spatula.kcl
"name": "slot",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "end": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -55.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "sketch1": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -234,7 +326,99 @@ description: Operations executed food-service-spatula.kcl
"name": "slot",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "end": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -55.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 19.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "sketch1": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 18.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -245,7 +429,99 @@ description: Operations executed food-service-spatula.kcl
"name": "slot",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "end": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -55.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": -19.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "sketch1": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": -25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": -18.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -784,7 +1060,99 @@ description: Operations executed food-service-spatula.kcl
"name": "slot",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "end": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 210.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "sketch1": {
+ "value": {
+ "type": "Face",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 200.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap
index 7d7ed191f..8f6389f8b 100644
--- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap
@@ -551,9 +551,9 @@ description: Variables in memory after executing food-service-spatula.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -713,9 +713,9 @@ description: Variables in memory after executing food-service-spatula.kcl
7.0
],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -1058,9 +1058,9 @@ description: Variables in memory after executing food-service-spatula.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -1220,9 +1220,9 @@ description: Variables in memory after executing food-service-spatula.kcl
7.0
],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -1538,9 +1538,9 @@ description: Variables in memory after executing food-service-spatula.kcl
7.0
],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -1729,9 +1729,9 @@ description: Variables in memory after executing food-service-spatula.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2847,
- "end": 2864,
- "start": 2847,
+ "commentStart": 2976,
+ "end": 2993,
+ "start": 2976,
"type": "TagDeclarator",
"value": "handleBottomEdge"
},
@@ -1756,9 +1756,9 @@ description: Variables in memory after executing food-service-spatula.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2995,
- "end": 3009,
- "start": 2995,
+ "commentStart": 3124,
+ "end": 3138,
+ "start": 3124,
"type": "TagDeclarator",
"value": "handleTopEdge"
},
@@ -1800,9 +1800,9 @@ description: Variables in memory after executing food-service-spatula.kcl
3.5
],
"tag": {
- "commentStart": 2847,
- "end": 2864,
- "start": 2847,
+ "commentStart": 2976,
+ "end": 2993,
+ "start": 2976,
"type": "TagDeclarator",
"value": "handleBottomEdge"
},
@@ -1863,9 +1863,9 @@ description: Variables in memory after executing food-service-spatula.kcl
91.3213
],
"tag": {
- "commentStart": 2995,
- "end": 3009,
- "start": 2995,
+ "commentStart": 3124,
+ "end": 3138,
+ "start": 3124,
"type": "TagDeclarator",
"value": "handleTopEdge"
},
@@ -2211,9 +2211,9 @@ description: Variables in memory after executing food-service-spatula.kcl
3.5
],
"tag": {
- "commentStart": 2847,
- "end": 2864,
- "start": 2847,
+ "commentStart": 2976,
+ "end": 2993,
+ "start": 2976,
"type": "TagDeclarator",
"value": "handleBottomEdge"
},
@@ -2274,9 +2274,9 @@ description: Variables in memory after executing food-service-spatula.kcl
91.3213
],
"tag": {
- "commentStart": 2995,
- "end": 3009,
- "start": 2995,
+ "commentStart": 3124,
+ "end": 3138,
+ "start": 3124,
"type": "TagDeclarator",
"value": "handleTopEdge"
},
@@ -2536,9 +2536,9 @@ description: Variables in memory after executing food-service-spatula.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
@@ -2698,9 +2698,9 @@ description: Variables in memory after executing food-service-spatula.kcl
7.0
],
"tag": {
- "commentStart": 4195,
- "end": 4207,
- "start": 4195,
+ "commentStart": 4324,
+ "end": 4336,
+ "start": 4324,
"type": "TagDeclarator",
"value": "gripEdgeTop"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md
index 967a84bfe..9a0f43ac2 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md
@@ -1,100 +1,100 @@
```mermaid
flowchart LR
subgraph path11 [Path]
- 11["Path [922, 947, 0]"]
- 18["Segment [955, 977, 0]"]
- 21["Segment [985, 1029, 0]"]
- 23["Segment [1037, 1064, 0]"]
- 24["Segment [1072, 1116, 0]"]
- 26["Segment [1124, 1131, 0]"]
+ 11["Path [923, 948, 0]"]
+ 18["Segment [956, 978, 0]"]
+ 21["Segment [986, 1030, 0]"]
+ 23["Segment [1038, 1065, 0]"]
+ 24["Segment [1073, 1117, 0]"]
+ 26["Segment [1125, 1132, 0]"]
74[Solid2d]
end
subgraph path12 [Path]
- 12["Path [922, 947, 0]"]
- 19["Segment [955, 977, 0]"]
- 20["Segment [985, 1029, 0]"]
- 22["Segment [1037, 1064, 0]"]
- 25["Segment [1072, 1116, 0]"]
- 27["Segment [1124, 1131, 0]"]
+ 12["Path [923, 948, 0]"]
+ 19["Segment [956, 978, 0]"]
+ 20["Segment [986, 1030, 0]"]
+ 22["Segment [1038, 1065, 0]"]
+ 25["Segment [1073, 1117, 0]"]
+ 27["Segment [1125, 1132, 0]"]
77[Solid2d]
end
subgraph path13 [Path]
- 13["Path [2723, 2810, 0]"]
- 28["Segment [2818, 2897, 0]"]
- 30["Segment [2905, 2970, 0]"]
- 32["Segment [2978, 3060, 0]"]
- 34["Segment [3068, 3114, 0]"]
- 37["Segment [3122, 3201, 0]"]
- 38["Segment [3209, 3276, 0]"]
- 40["Segment [3284, 3363, 0]"]
- 42["Segment [3371, 3417, 0]"]
- 44["Segment [3425, 3507, 0]"]
- 46["Segment [3515, 3583, 0]"]
- 49["Segment [3591, 3670, 0]"]
- 50["Segment [3678, 3743, 0]"]
- 52["Segment [3751, 3833, 0]"]
- 55["Segment [3841, 3909, 0]"]
- 56["Segment [3917, 3999, 0]"]
- 59["Segment [4007, 4056, 0]"]
- 61["Segment [4064, 4071, 0]"]
+ 13["Path [2725, 2812, 0]"]
+ 28["Segment [2820, 2899, 0]"]
+ 30["Segment [2907, 2972, 0]"]
+ 32["Segment [2980, 3062, 0]"]
+ 34["Segment [3070, 3116, 0]"]
+ 37["Segment [3124, 3203, 0]"]
+ 38["Segment [3211, 3278, 0]"]
+ 40["Segment [3286, 3365, 0]"]
+ 42["Segment [3373, 3419, 0]"]
+ 44["Segment [3427, 3509, 0]"]
+ 46["Segment [3517, 3585, 0]"]
+ 49["Segment [3593, 3672, 0]"]
+ 50["Segment [3680, 3745, 0]"]
+ 52["Segment [3753, 3835, 0]"]
+ 55["Segment [3843, 3911, 0]"]
+ 56["Segment [3919, 4001, 0]"]
+ 59["Segment [4009, 4058, 0]"]
+ 61["Segment [4066, 4073, 0]"]
71[Solid2d]
end
subgraph path14 [Path]
- 14["Path [2723, 2810, 0]"]
- 29["Segment [2818, 2897, 0]"]
- 31["Segment [2905, 2970, 0]"]
- 33["Segment [2978, 3060, 0]"]
- 35["Segment [3068, 3114, 0]"]
- 36["Segment [3122, 3201, 0]"]
- 39["Segment [3209, 3276, 0]"]
- 41["Segment [3284, 3363, 0]"]
- 43["Segment [3371, 3417, 0]"]
- 45["Segment [3425, 3507, 0]"]
- 47["Segment [3515, 3583, 0]"]
- 48["Segment [3591, 3670, 0]"]
- 51["Segment [3678, 3743, 0]"]
- 53["Segment [3751, 3833, 0]"]
- 54["Segment [3841, 3909, 0]"]
- 57["Segment [3917, 3999, 0]"]
- 58["Segment [4007, 4056, 0]"]
- 60["Segment [4064, 4071, 0]"]
+ 14["Path [2725, 2812, 0]"]
+ 29["Segment [2820, 2899, 0]"]
+ 31["Segment [2907, 2972, 0]"]
+ 33["Segment [2980, 3062, 0]"]
+ 35["Segment [3070, 3116, 0]"]
+ 36["Segment [3124, 3203, 0]"]
+ 39["Segment [3211, 3278, 0]"]
+ 41["Segment [3286, 3365, 0]"]
+ 43["Segment [3373, 3419, 0]"]
+ 45["Segment [3427, 3509, 0]"]
+ 47["Segment [3517, 3585, 0]"]
+ 48["Segment [3593, 3672, 0]"]
+ 51["Segment [3680, 3745, 0]"]
+ 53["Segment [3753, 3835, 0]"]
+ 54["Segment [3843, 3911, 0]"]
+ 57["Segment [3919, 4001, 0]"]
+ 58["Segment [4009, 4058, 0]"]
+ 60["Segment [4066, 4073, 0]"]
72[Solid2d]
end
subgraph path15 [Path]
- 15["Path [4214, 4239, 0]"]
- 62["Segment [4247, 4288, 0]"]
- 64["Segment [4296, 4337, 0]"]
- 67["Segment [4345, 4398, 0]"]
- 68["Segment [4406, 4427, 0]"]
+ 15["Path [4217, 4242, 0]"]
+ 62["Segment [4250, 4291, 0]"]
+ 64["Segment [4299, 4340, 0]"]
+ 67["Segment [4348, 4401, 0]"]
+ 68["Segment [4409, 4430, 0]"]
73[Solid2d]
end
subgraph path16 [Path]
- 16["Path [4214, 4239, 0]"]
- 63["Segment [4247, 4288, 0]"]
- 65["Segment [4296, 4337, 0]"]
- 66["Segment [4345, 4398, 0]"]
- 69["Segment [4406, 4427, 0]"]
+ 16["Path [4217, 4242, 0]"]
+ 63["Segment [4250, 4291, 0]"]
+ 65["Segment [4299, 4340, 0]"]
+ 66["Segment [4348, 4401, 0]"]
+ 69["Segment [4409, 4430, 0]"]
76[Solid2d]
end
subgraph path17 [Path]
- 17["Path [4593, 4673, 0]"]
- 70["Segment [4593, 4673, 0]"]
+ 17["Path [4596, 4676, 0]"]
+ 70["Segment [4596, 4676, 0]"]
75[Solid2d]
end
- 1["Plane [1217, 1255, 0]"]
- 2["Plane [1711, 1749, 0]"]
- 3["Plane [2695, 2715, 0]"]
- 4["Plane [4186, 4206, 0]"]
- 5["Plane [4570, 4587, 0]"]
- 6["Plane [5562, 5597, 0]"]
- 7["StartSketchOnPlane [894, 914, 0]"]
- 8["StartSketchOnPlane [894, 914, 0]"]
- 9["StartSketchOnPlane [4186, 4206, 0]"]
- 10["StartSketchOnPlane [2695, 2715, 0]"]
- 78["Sweep Extrusion [1204, 1298, 0]"]
- 79["Sweep Revolve [1698, 1780, 0]"]
- 80["Sweep Extrusion [5026, 5068, 0]"]
- 81["Sweep Extrusion [5680, 5731, 0]"]
+ 1["Plane [1218, 1256, 0]"]
+ 2["Plane [1712, 1750, 0]"]
+ 3["Plane [2697, 2717, 0]"]
+ 4["Plane [4189, 4209, 0]"]
+ 5["Plane [4573, 4590, 0]"]
+ 6["Plane [5565, 5600, 0]"]
+ 7["StartSketchOnPlane [895, 915, 0]"]
+ 8["StartSketchOnPlane [895, 915, 0]"]
+ 9["StartSketchOnPlane [4189, 4209, 0]"]
+ 10["StartSketchOnPlane [2697, 2717, 0]"]
+ 78["Sweep Extrusion [1205, 1299, 0]"]
+ 79["Sweep Revolve [1699, 1781, 0]"]
+ 80["Sweep Extrusion [5029, 5071, 0]"]
+ 81["Sweep Extrusion [5683, 5734, 0]"]
82[Wall]
83[Wall]
84[Wall]
@@ -157,14 +157,14 @@ flowchart LR
141["SweepEdge Adjacent"]
142["SweepEdge Adjacent"]
143["SweepEdge Adjacent"]
- 144["EdgeCut Fillet [5131, 5470, 0]"]
- 145["EdgeCut Fillet [5131, 5470, 0]"]
- 146["EdgeCut Fillet [5131, 5470, 0]"]
- 147["EdgeCut Fillet [5131, 5470, 0]"]
- 148["EdgeCut Fillet [5795, 6139, 0]"]
- 149["EdgeCut Fillet [5795, 6139, 0]"]
- 150["EdgeCut Fillet [5795, 6139, 0]"]
- 151["EdgeCut Fillet [5795, 6139, 0]"]
+ 144["EdgeCut Fillet [5134, 5473, 0]"]
+ 145["EdgeCut Fillet [5134, 5473, 0]"]
+ 146["EdgeCut Fillet [5134, 5473, 0]"]
+ 147["EdgeCut Fillet [5134, 5473, 0]"]
+ 148["EdgeCut Fillet [5798, 6142, 0]"]
+ 149["EdgeCut Fillet [5798, 6142, 0]"]
+ 150["EdgeCut Fillet [5798, 6142, 0]"]
+ 151["EdgeCut Fillet [5798, 6142, 0]"]
1 <--x 8
1 --- 12
2 <--x 7
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap
index 88bdae3e5..4bdf56835 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap
@@ -920,7 +920,8 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -5192,7 +5193,8 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -5740,7 +5742,8 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap
index 365060f12..56fe619bc 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap
@@ -10955,9 +10955,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -10968,9 +10968,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -10981,9 +10981,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -10994,9 +10994,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11017,9 +11017,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11042,9 +11042,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11067,9 +11067,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11092,9 +11092,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11201,9 +11201,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11214,9 +11214,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11227,9 +11227,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11240,9 +11240,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11263,9 +11263,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11288,9 +11288,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11313,9 +11313,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11338,9 +11338,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11521,9 +11521,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11534,9 +11534,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11547,9 +11547,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11560,9 +11560,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11583,9 +11583,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11608,9 +11608,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11633,9 +11633,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11658,9 +11658,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11767,9 +11767,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11780,9 +11780,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11793,9 +11793,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11806,9 +11806,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -11829,9 +11829,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -11854,9 +11854,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -11879,9 +11879,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -11904,9 +11904,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -12091,9 +12091,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -12116,9 +12116,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -12141,9 +12141,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -12166,9 +12166,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
@@ -12271,9 +12271,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4279,
- "end": 4287,
- "start": 4279,
+ "commentStart": 4282,
+ "end": 4290,
+ "start": 4282,
"type": "TagDeclarator",
"value": "line001"
},
@@ -12296,9 +12296,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
0.0
],
"tag": {
- "commentStart": 4328,
- "end": 4336,
- "start": 4328,
+ "commentStart": 4331,
+ "end": 4339,
+ "start": 4331,
"type": "TagDeclarator",
"value": "line002"
},
@@ -12321,9 +12321,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4389,
- "end": 4397,
- "start": 4389,
+ "commentStart": 4392,
+ "end": 4400,
+ "start": 4392,
"type": "TagDeclarator",
"value": "line003"
},
@@ -12346,9 +12346,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc
42.0
],
"tag": {
- "commentStart": 4418,
- "end": 4426,
- "start": 4418,
+ "commentStart": 4421,
+ "end": 4429,
+ "start": 4421,
"type": "TagDeclarator",
"value": "line004"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md
index e40763c70..52c29e483 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md
@@ -1,29 +1,29 @@
```mermaid
flowchart LR
subgraph path5 [Path]
- 5["Path [799, 824, 0]"]
- 7["Segment [832, 854, 0]"]
- 10["Segment [862, 906, 0]"]
- 12["Segment [914, 941, 0]"]
- 13["Segment [949, 993, 0]"]
- 15["Segment [1001, 1008, 0]"]
+ 5["Path [800, 825, 0]"]
+ 7["Segment [833, 855, 0]"]
+ 10["Segment [863, 907, 0]"]
+ 12["Segment [915, 942, 0]"]
+ 13["Segment [950, 994, 0]"]
+ 15["Segment [1002, 1009, 0]"]
17[Solid2d]
end
subgraph path6 [Path]
- 6["Path [799, 824, 0]"]
- 8["Segment [832, 854, 0]"]
- 9["Segment [862, 906, 0]"]
- 11["Segment [914, 941, 0]"]
- 14["Segment [949, 993, 0]"]
- 16["Segment [1001, 1008, 0]"]
+ 6["Path [800, 825, 0]"]
+ 8["Segment [833, 855, 0]"]
+ 9["Segment [863, 907, 0]"]
+ 11["Segment [915, 942, 0]"]
+ 14["Segment [950, 994, 0]"]
+ 16["Segment [1002, 1009, 0]"]
18[Solid2d]
end
- 1["Plane [1094, 1132, 0]"]
- 2["Plane [1588, 1626, 0]"]
- 3["StartSketchOnPlane [771, 791, 0]"]
- 4["StartSketchOnPlane [771, 791, 0]"]
- 19["Sweep Extrusion [1081, 1175, 0]"]
- 20["Sweep Revolve [1575, 1657, 0]"]
+ 1["Plane [1095, 1133, 0]"]
+ 2["Plane [1589, 1627, 0]"]
+ 3["StartSketchOnPlane [772, 792, 0]"]
+ 4["StartSketchOnPlane [772, 792, 0]"]
+ 19["Sweep Extrusion [1082, 1176, 0]"]
+ 20["Sweep Revolve [1576, 1658, 0]"]
21[Wall]
22[Wall]
23[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap
index 8ebb63b09..3399ab139 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap
@@ -821,7 +821,8 @@ description: Result of parsing gridfinity-baseplate.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md
index bae105a17..a808a7124 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md
@@ -1,118 +1,118 @@
```mermaid
flowchart LR
subgraph path13 [Path]
- 13["Path [1187, 1233, 0]"]
- 22["Segment [1241, 1263, 0]"]
- 25["Segment [1271, 1301, 0]"]
- 26["Segment [1309, 1353, 0]"]
- 28["Segment [1361, 1388, 0]"]
- 30["Segment [1396, 1440, 0]"]
- 32["Segment [1448, 1455, 0]"]
+ 13["Path [1188, 1234, 0]"]
+ 22["Segment [1242, 1264, 0]"]
+ 25["Segment [1272, 1302, 0]"]
+ 26["Segment [1310, 1354, 0]"]
+ 28["Segment [1362, 1389, 0]"]
+ 30["Segment [1397, 1441, 0]"]
+ 32["Segment [1449, 1456, 0]"]
79[Solid2d]
end
subgraph path14 [Path]
- 14["Path [1187, 1233, 0]"]
- 23["Segment [1241, 1263, 0]"]
- 24["Segment [1271, 1301, 0]"]
- 27["Segment [1309, 1353, 0]"]
- 29["Segment [1361, 1388, 0]"]
- 31["Segment [1396, 1440, 0]"]
- 33["Segment [1448, 1455, 0]"]
+ 14["Path [1188, 1234, 0]"]
+ 23["Segment [1242, 1264, 0]"]
+ 24["Segment [1272, 1302, 0]"]
+ 27["Segment [1310, 1354, 0]"]
+ 29["Segment [1362, 1389, 0]"]
+ 31["Segment [1397, 1441, 0]"]
+ 33["Segment [1449, 1456, 0]"]
80[Solid2d]
end
subgraph path15 [Path]
- 15["Path [2496, 2584, 0]"]
- 34["Segment [2590, 2654, 0]"]
- 35["Segment [2660, 2724, 0]"]
- 36["Segment [2730, 2783, 0]"]
- 37["Segment [2789, 2810, 0]"]
+ 15["Path [2497, 2585, 0]"]
+ 34["Segment [2591, 2655, 0]"]
+ 35["Segment [2661, 2725, 0]"]
+ 36["Segment [2731, 2784, 0]"]
+ 37["Segment [2790, 2811, 0]"]
77[Solid2d]
end
subgraph path16 [Path]
- 16["Path [3141, 3307, 0]"]
- 38["Segment [3141, 3307, 0]"]
+ 16["Path [3142, 3308, 0]"]
+ 38["Segment [3142, 3308, 0]"]
76[Solid2d]
end
subgraph path17 [Path]
- 17["Path [4591, 4616, 0]"]
- 39["Segment [4622, 4694, 0]"]
- 40["Segment [4700, 4773, 0]"]
- 41["Segment [4779, 4832, 0]"]
- 42["Segment [4838, 4859, 0]"]
+ 17["Path [4592, 4617, 0]"]
+ 39["Segment [4623, 4695, 0]"]
+ 40["Segment [4701, 4774, 0]"]
+ 41["Segment [4780, 4833, 0]"]
+ 42["Segment [4839, 4860, 0]"]
75[Solid2d]
end
subgraph path18 [Path]
- 18["Path [5326, 5351, 0]"]
- 45["Segment [5411, 5454, 0]"]
- 49["Segment [5462, 5582, 0]"]
- 53["Segment [5645, 5694, 0]"]
- 56["Segment [5702, 5727, 0]"]
- 60["Segment [5735, 5778, 0]"]
- 65["Segment [5786, 5811, 0]"]
- 68["Segment [5819, 5863, 0]"]
- 74["Segment [5871, 5878, 0]"]
+ 18["Path [5328, 5353, 0]"]
+ 45["Segment [5413, 5456, 0]"]
+ 49["Segment [5464, 5584, 0]"]
+ 53["Segment [5647, 5696, 0]"]
+ 56["Segment [5704, 5729, 0]"]
+ 60["Segment [5737, 5780, 0]"]
+ 65["Segment [5788, 5813, 0]"]
+ 68["Segment [5821, 5865, 0]"]
+ 74["Segment [5873, 5880, 0]"]
78[Solid2d]
end
subgraph path19 [Path]
- 19["Path [5326, 5351, 0]"]
- 43["Segment [5411, 5454, 0]"]
- 47["Segment [5462, 5582, 0]"]
- 51["Segment [5645, 5694, 0]"]
- 57["Segment [5702, 5727, 0]"]
- 59["Segment [5735, 5778, 0]"]
- 63["Segment [5786, 5811, 0]"]
- 67["Segment [5819, 5863, 0]"]
- 72["Segment [5871, 5878, 0]"]
+ 19["Path [5328, 5353, 0]"]
+ 43["Segment [5413, 5456, 0]"]
+ 47["Segment [5464, 5584, 0]"]
+ 51["Segment [5647, 5696, 0]"]
+ 57["Segment [5704, 5729, 0]"]
+ 59["Segment [5737, 5780, 0]"]
+ 63["Segment [5788, 5813, 0]"]
+ 67["Segment [5821, 5865, 0]"]
+ 72["Segment [5873, 5880, 0]"]
81[Solid2d]
end
subgraph path20 [Path]
- 20["Path [5326, 5351, 0]"]
- 44["Segment [5411, 5454, 0]"]
- 48["Segment [5462, 5582, 0]"]
- 52["Segment [5645, 5694, 0]"]
- 58["Segment [5702, 5727, 0]"]
- 61["Segment [5735, 5778, 0]"]
- 64["Segment [5786, 5811, 0]"]
- 69["Segment [5819, 5863, 0]"]
- 73["Segment [5871, 5878, 0]"]
+ 20["Path [5328, 5353, 0]"]
+ 44["Segment [5413, 5456, 0]"]
+ 48["Segment [5464, 5584, 0]"]
+ 52["Segment [5647, 5696, 0]"]
+ 58["Segment [5704, 5729, 0]"]
+ 61["Segment [5737, 5780, 0]"]
+ 64["Segment [5788, 5813, 0]"]
+ 69["Segment [5821, 5865, 0]"]
+ 73["Segment [5873, 5880, 0]"]
82[Solid2d]
end
subgraph path21 [Path]
- 21["Path [5326, 5351, 0]"]
- 46["Segment [5411, 5454, 0]"]
- 50["Segment [5462, 5582, 0]"]
- 54["Segment [5645, 5694, 0]"]
- 55["Segment [5702, 5727, 0]"]
- 62["Segment [5735, 5778, 0]"]
- 66["Segment [5786, 5811, 0]"]
- 70["Segment [5819, 5863, 0]"]
- 71["Segment [5871, 5878, 0]"]
+ 21["Path [5328, 5353, 0]"]
+ 46["Segment [5413, 5456, 0]"]
+ 50["Segment [5464, 5584, 0]"]
+ 54["Segment [5647, 5696, 0]"]
+ 55["Segment [5704, 5729, 0]"]
+ 62["Segment [5737, 5780, 0]"]
+ 66["Segment [5788, 5813, 0]"]
+ 70["Segment [5821, 5865, 0]"]
+ 71["Segment [5873, 5880, 0]"]
83[Solid2d]
end
- 1["Plane [1541, 1588, 0]"]
- 2["Plane [2120, 2167, 0]"]
- 3["Plane [2473, 2490, 0]"]
- 4["Plane [4552, 4584, 0]"]
- 5["Plane [5298, 5318, 0]"]
- 6["Plane [5298, 5318, 0]"]
- 7["Plane [5298, 5318, 0]"]
- 8["Plane [5298, 5318, 0]"]
- 9["StartSketchOnPlane [4538, 4585, 0]"]
- 10["StartSketchOnPlane [1159, 1179, 0]"]
- 11["StartSketchOnPlane [1159, 1179, 0]"]
- 12["StartSketchOnFace [3093, 3135, 0]"]
- 84["Sweep Extrusion [1528, 1631, 0]"]
- 85["Sweep Revolve [2107, 2198, 0]"]
- 86["Sweep Extrusion [2816, 2840, 0]"]
- 87["Sweep Extrusion [3529, 3556, 0]"]
- 88["Sweep Extrusion [3529, 3556, 0]"]
- 89["Sweep Extrusion [3529, 3556, 0]"]
- 90["Sweep Extrusion [3529, 3556, 0]"]
- 91["Sweep Extrusion [4865, 4909, 0]"]
- 92["Sweep Extrusion [6516, 6628, 0]"]
- 93["Sweep Extrusion [6694, 6808, 0]"]
- 94["Sweep Revolve [7634, 7689, 0]"]
- 95["Sweep Revolve [7751, 7805, 0]"]
+ 1["Plane [1542, 1589, 0]"]
+ 2["Plane [2121, 2168, 0]"]
+ 3["Plane [2474, 2491, 0]"]
+ 4["Plane [4553, 4585, 0]"]
+ 5["Plane [5300, 5320, 0]"]
+ 6["Plane [5300, 5320, 0]"]
+ 7["Plane [5300, 5320, 0]"]
+ 8["Plane [5300, 5320, 0]"]
+ 9["StartSketchOnPlane [4539, 4586, 0]"]
+ 10["StartSketchOnPlane [1160, 1180, 0]"]
+ 11["StartSketchOnPlane [1160, 1180, 0]"]
+ 12["StartSketchOnFace [3094, 3136, 0]"]
+ 84["Sweep Extrusion [1529, 1632, 0]"]
+ 85["Sweep Revolve [2108, 2199, 0]"]
+ 86["Sweep Extrusion [2817, 2841, 0]"]
+ 87["Sweep Extrusion [3530, 3557, 0]"]
+ 88["Sweep Extrusion [3530, 3557, 0]"]
+ 89["Sweep Extrusion [3530, 3557, 0]"]
+ 90["Sweep Extrusion [3530, 3557, 0]"]
+ 91["Sweep Extrusion [4866, 4910, 0]"]
+ 92["Sweep Extrusion [6518, 6630, 0]"]
+ 93["Sweep Extrusion [6696, 6810, 0]"]
+ 94["Sweep Revolve [7636, 7691, 0]"]
+ 95["Sweep Revolve [7753, 7807, 0]"]
96[Wall]
97[Wall]
98[Wall]
@@ -283,14 +283,14 @@ flowchart LR
263["SweepEdge Adjacent"]
264["SweepEdge Adjacent"]
265["SweepEdge Adjacent"]
- 266["EdgeCut Fillet [2846, 3076, 0]"]
- 267["EdgeCut Fillet [2846, 3076, 0]"]
- 268["EdgeCut Fillet [2846, 3076, 0]"]
- 269["EdgeCut Fillet [2846, 3076, 0]"]
- 270["EdgeCut Fillet [4915, 5148, 0]"]
- 271["EdgeCut Fillet [4915, 5148, 0]"]
- 272["EdgeCut Fillet [4915, 5148, 0]"]
- 273["EdgeCut Fillet [4915, 5148, 0]"]
+ 266["EdgeCut Fillet [2847, 3077, 0]"]
+ 267["EdgeCut Fillet [2847, 3077, 0]"]
+ 268["EdgeCut Fillet [2847, 3077, 0]"]
+ 269["EdgeCut Fillet [2847, 3077, 0]"]
+ 270["EdgeCut Fillet [4916, 5149, 0]"]
+ 271["EdgeCut Fillet [4916, 5149, 0]"]
+ 272["EdgeCut Fillet [4916, 5149, 0]"]
+ 273["EdgeCut Fillet [4916, 5149, 0]"]
1 <--x 10
1 --- 14
2 <--x 11
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap
index b9cbd0d43..5640a569a 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap
@@ -1503,7 +1503,8 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -7495,7 +7496,8 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap
index cd0583966..a2b890012 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap
@@ -5575,9 +5575,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5588,9 +5588,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5601,9 +5601,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5614,9 +5614,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5637,9 +5637,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5662,9 +5662,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5687,9 +5687,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5712,9 +5712,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5895,9 +5895,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5908,9 +5908,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5921,9 +5921,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5934,9 +5934,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5957,9 +5957,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5982,9 +5982,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6007,9 +6007,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6032,9 +6032,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6215,9 +6215,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6228,9 +6228,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6241,9 +6241,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6254,9 +6254,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6277,9 +6277,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6302,9 +6302,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6327,9 +6327,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6352,9 +6352,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6535,9 +6535,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6548,9 +6548,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6561,9 +6561,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6574,9 +6574,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6597,9 +6597,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6622,9 +6622,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6647,9 +6647,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6672,9 +6672,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6855,9 +6855,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6868,9 +6868,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6881,9 +6881,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6894,9 +6894,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6917,9 +6917,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6942,9 +6942,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6967,9 +6967,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6992,9 +6992,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -7175,9 +7175,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -7188,9 +7188,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -7201,9 +7201,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -7214,9 +7214,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -7237,9 +7237,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -7262,9 +7262,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -7287,9 +7287,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -7312,9 +7312,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -12954,9 +12954,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4685,
- "end": 4693,
- "start": 4685,
+ "commentStart": 4686,
+ "end": 4694,
+ "start": 4686,
"type": "TagDeclarator",
"value": "line010"
},
@@ -12967,9 +12967,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4764,
- "end": 4772,
- "start": 4764,
+ "commentStart": 4765,
+ "end": 4773,
+ "start": 4765,
"type": "TagDeclarator",
"value": "line011"
},
@@ -12980,9 +12980,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4823,
- "end": 4831,
- "start": 4823,
+ "commentStart": 4824,
+ "end": 4832,
+ "start": 4824,
"type": "TagDeclarator",
"value": "line012"
},
@@ -12993,9 +12993,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4850,
- "end": 4858,
- "start": 4850,
+ "commentStart": 4851,
+ "end": 4859,
+ "start": 4851,
"type": "TagDeclarator",
"value": "line013"
},
@@ -13016,9 +13016,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 4685,
- "end": 4693,
- "start": 4685,
+ "commentStart": 4686,
+ "end": 4694,
+ "start": 4686,
"type": "TagDeclarator",
"value": "line010"
},
@@ -13041,9 +13041,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 4764,
- "end": 4772,
- "start": 4764,
+ "commentStart": 4765,
+ "end": 4773,
+ "start": 4765,
"type": "TagDeclarator",
"value": "line011"
},
@@ -13066,9 +13066,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
126.0
],
"tag": {
- "commentStart": 4823,
- "end": 4831,
- "start": 4823,
+ "commentStart": 4824,
+ "end": 4832,
+ "start": 4824,
"type": "TagDeclarator",
"value": "line012"
},
@@ -13091,9 +13091,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
126.0
],
"tag": {
- "commentStart": 4850,
- "end": 4858,
- "start": 4850,
+ "commentStart": 4851,
+ "end": 4859,
+ "start": 4851,
"type": "TagDeclarator",
"value": "line013"
},
@@ -14303,9 +14303,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14316,9 +14316,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -14329,9 +14329,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14387,9 +14387,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14418,9 +14418,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -14443,9 +14443,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14643,9 +14643,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14656,9 +14656,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -14669,9 +14669,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14727,9 +14727,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14758,9 +14758,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -14783,9 +14783,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14988,9 +14988,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15001,9 +15001,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15014,9 +15014,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15072,9 +15072,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15103,9 +15103,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15128,9 +15128,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15328,9 +15328,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15341,9 +15341,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15354,9 +15354,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15412,9 +15412,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15443,9 +15443,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15468,9 +15468,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15689,9 +15689,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15702,9 +15702,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15715,9 +15715,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15773,9 +15773,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15804,9 +15804,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -15829,9 +15829,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16029,9 +16029,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16042,9 +16042,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16055,9 +16055,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16113,9 +16113,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16144,9 +16144,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16169,9 +16169,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16384,9 +16384,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16397,9 +16397,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16410,9 +16410,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16468,9 +16468,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16499,9 +16499,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16524,9 +16524,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16724,9 +16724,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16737,9 +16737,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16750,9 +16750,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16808,9 +16808,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16839,9 +16839,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -16864,9 +16864,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17064,9 +17064,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17077,9 +17077,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17090,9 +17090,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17148,9 +17148,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17179,9 +17179,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17204,9 +17204,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17404,9 +17404,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17417,9 +17417,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17430,9 +17430,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17488,9 +17488,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17519,9 +17519,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17544,9 +17544,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17812,9 +17812,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17825,9 +17825,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17838,9 +17838,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -17896,9 +17896,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -17927,9 +17927,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -17952,9 +17952,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -18152,9 +18152,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -18165,9 +18165,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -18178,9 +18178,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -18236,9 +18236,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
0.0
],
"tag": {
- "commentStart": 5445,
- "end": 5453,
- "start": 5445,
+ "commentStart": 5447,
+ "end": 5455,
+ "start": 5447,
"type": "TagDeclarator",
"value": "line000"
},
@@ -18267,9 +18267,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
],
"radius": 0.5,
"tag": {
- "commentStart": 5565,
- "end": 5572,
- "start": 5565,
+ "commentStart": 5567,
+ "end": 5574,
+ "start": 5567,
"type": "TagDeclarator",
"value": "arc000"
},
@@ -18292,9 +18292,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
6.1464
],
"tag": {
- "commentStart": 5685,
- "end": 5693,
- "start": 5685,
+ "commentStart": 5687,
+ "end": 5695,
+ "start": 5687,
"type": "TagDeclarator",
"value": "line001"
},
@@ -18561,9 +18561,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -18574,9 +18574,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -18587,9 +18587,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -18600,9 +18600,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -18623,9 +18623,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -18648,9 +18648,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -18673,9 +18673,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -18698,9 +18698,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -18981,9 +18981,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -18994,9 +18994,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19007,9 +19007,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19020,9 +19020,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -19043,9 +19043,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -19068,9 +19068,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19093,9 +19093,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19118,9 +19118,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -19401,9 +19401,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -19414,9 +19414,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19427,9 +19427,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19440,9 +19440,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -19463,9 +19463,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -19488,9 +19488,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19513,9 +19513,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19538,9 +19538,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -19821,9 +19821,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -19834,9 +19834,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19847,9 +19847,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19860,9 +19860,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -19883,9 +19883,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -19908,9 +19908,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -19933,9 +19933,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -19958,9 +19958,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -21547,9 +21547,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -21560,9 +21560,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -21573,9 +21573,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -21586,9 +21586,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
@@ -21609,9 +21609,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2645,
- "end": 2653,
- "start": 2645,
+ "commentStart": 2646,
+ "end": 2654,
+ "start": 2646,
"type": "TagDeclarator",
"value": "line000"
},
@@ -21634,9 +21634,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
3.2
],
"tag": {
- "commentStart": 2715,
- "end": 2723,
- "start": 2715,
+ "commentStart": 2716,
+ "end": 2724,
+ "start": 2716,
"type": "TagDeclarator",
"value": "line001"
},
@@ -21659,9 +21659,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2774,
- "end": 2782,
- "start": 2774,
+ "commentStart": 2775,
+ "end": 2783,
+ "start": 2775,
"type": "TagDeclarator",
"value": "line002"
},
@@ -21684,9 +21684,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc
38.8
],
"tag": {
- "commentStart": 2801,
- "end": 2809,
- "start": 2801,
+ "commentStart": 2802,
+ "end": 2810,
+ "start": 2802,
"type": "TagDeclarator",
"value": "line003"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md
index 592595582..09937ad1b 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md
@@ -1,62 +1,62 @@
```mermaid
flowchart LR
subgraph path9 [Path]
- 9["Path [928, 974, 0]"]
- 14["Segment [982, 1004, 0]"]
- 17["Segment [1012, 1042, 0]"]
- 18["Segment [1050, 1094, 0]"]
- 20["Segment [1102, 1129, 0]"]
- 22["Segment [1137, 1181, 0]"]
- 24["Segment [1189, 1196, 0]"]
+ 9["Path [929, 975, 0]"]
+ 14["Segment [983, 1005, 0]"]
+ 17["Segment [1013, 1043, 0]"]
+ 18["Segment [1051, 1095, 0]"]
+ 20["Segment [1103, 1130, 0]"]
+ 22["Segment [1138, 1182, 0]"]
+ 24["Segment [1190, 1197, 0]"]
38[Solid2d]
end
subgraph path10 [Path]
- 10["Path [928, 974, 0]"]
- 15["Segment [982, 1004, 0]"]
- 16["Segment [1012, 1042, 0]"]
- 19["Segment [1050, 1094, 0]"]
- 21["Segment [1102, 1129, 0]"]
- 23["Segment [1137, 1181, 0]"]
- 25["Segment [1189, 1196, 0]"]
+ 10["Path [929, 975, 0]"]
+ 15["Segment [983, 1005, 0]"]
+ 16["Segment [1013, 1043, 0]"]
+ 19["Segment [1051, 1095, 0]"]
+ 21["Segment [1103, 1130, 0]"]
+ 23["Segment [1138, 1182, 0]"]
+ 25["Segment [1190, 1197, 0]"]
39[Solid2d]
end
subgraph path11 [Path]
- 11["Path [2237, 2325, 0]"]
- 26["Segment [2331, 2395, 0]"]
- 27["Segment [2401, 2465, 0]"]
- 28["Segment [2471, 2524, 0]"]
- 29["Segment [2530, 2551, 0]"]
+ 11["Path [2238, 2326, 0]"]
+ 26["Segment [2332, 2396, 0]"]
+ 27["Segment [2402, 2466, 0]"]
+ 28["Segment [2472, 2525, 0]"]
+ 29["Segment [2531, 2552, 0]"]
37[Solid2d]
end
subgraph path12 [Path]
- 12["Path [2882, 3048, 0]"]
- 30["Segment [2882, 3048, 0]"]
+ 12["Path [2883, 3049, 0]"]
+ 30["Segment [2883, 3049, 0]"]
36[Solid2d]
end
subgraph path13 [Path]
- 13["Path [4361, 4386, 0]"]
- 31["Segment [4392, 4464, 0]"]
- 32["Segment [4470, 4543, 0]"]
- 33["Segment [4549, 4602, 0]"]
- 34["Segment [4608, 4629, 0]"]
+ 13["Path [4362, 4387, 0]"]
+ 31["Segment [4393, 4465, 0]"]
+ 32["Segment [4471, 4544, 0]"]
+ 33["Segment [4550, 4603, 0]"]
+ 34["Segment [4609, 4630, 0]"]
35[Solid2d]
end
- 1["Plane [1282, 1329, 0]"]
- 2["Plane [1861, 1908, 0]"]
- 3["Plane [2214, 2231, 0]"]
- 4["Plane [4322, 4354, 0]"]
- 5["StartSketchOnPlane [4308, 4355, 0]"]
- 6["StartSketchOnPlane [900, 920, 0]"]
- 7["StartSketchOnPlane [900, 920, 0]"]
- 8["StartSketchOnFace [2834, 2876, 0]"]
- 40["Sweep Extrusion [1269, 1372, 0]"]
- 41["Sweep Revolve [1848, 1939, 0]"]
- 42["Sweep Extrusion [2557, 2581, 0]"]
- 43["Sweep Extrusion [3270, 3297, 0]"]
- 44["Sweep Extrusion [3270, 3297, 0]"]
- 45["Sweep Extrusion [3270, 3297, 0]"]
- 46["Sweep Extrusion [3270, 3297, 0]"]
- 47["Sweep Extrusion [4635, 4679, 0]"]
+ 1["Plane [1283, 1330, 0]"]
+ 2["Plane [1862, 1909, 0]"]
+ 3["Plane [2215, 2232, 0]"]
+ 4["Plane [4323, 4355, 0]"]
+ 5["StartSketchOnPlane [4309, 4356, 0]"]
+ 6["StartSketchOnPlane [901, 921, 0]"]
+ 7["StartSketchOnPlane [901, 921, 0]"]
+ 8["StartSketchOnFace [2835, 2877, 0]"]
+ 40["Sweep Extrusion [1270, 1373, 0]"]
+ 41["Sweep Revolve [1849, 1940, 0]"]
+ 42["Sweep Extrusion [2558, 2582, 0]"]
+ 43["Sweep Extrusion [3271, 3298, 0]"]
+ 44["Sweep Extrusion [3271, 3298, 0]"]
+ 45["Sweep Extrusion [3271, 3298, 0]"]
+ 46["Sweep Extrusion [3271, 3298, 0]"]
+ 47["Sweep Extrusion [4636, 4680, 0]"]
48[Wall]
49[Wall]
50[Wall]
@@ -123,14 +123,14 @@ flowchart LR
111["SweepEdge Adjacent"]
112["SweepEdge Adjacent"]
113["SweepEdge Adjacent"]
- 114["EdgeCut Fillet [2587, 2817, 0]"]
- 115["EdgeCut Fillet [2587, 2817, 0]"]
- 116["EdgeCut Fillet [2587, 2817, 0]"]
- 117["EdgeCut Fillet [2587, 2817, 0]"]
- 118["EdgeCut Fillet [4685, 4918, 0]"]
- 119["EdgeCut Fillet [4685, 4918, 0]"]
- 120["EdgeCut Fillet [4685, 4918, 0]"]
- 121["EdgeCut Fillet [4685, 4918, 0]"]
+ 114["EdgeCut Fillet [2588, 2818, 0]"]
+ 115["EdgeCut Fillet [2588, 2818, 0]"]
+ 116["EdgeCut Fillet [2588, 2818, 0]"]
+ 117["EdgeCut Fillet [2588, 2818, 0]"]
+ 118["EdgeCut Fillet [4686, 4919, 0]"]
+ 119["EdgeCut Fillet [4686, 4919, 0]"]
+ 120["EdgeCut Fillet [4686, 4919, 0]"]
+ 121["EdgeCut Fillet [4686, 4919, 0]"]
1 <--x 6
1 --- 10
2 <--x 7
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap
index 2e34fea9d..edcc79ed9 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap
@@ -1172,7 +1172,8 @@ description: Result of parsing gridfinity-bins.kcl
"name": "plane",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap
index ca16115d2..7a7f73293 100644
--- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap
@@ -5503,9 +5503,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5516,9 +5516,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5529,9 +5529,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5542,9 +5542,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5565,9 +5565,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5590,9 +5590,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5615,9 +5615,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5640,9 +5640,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5823,9 +5823,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5836,9 +5836,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5849,9 +5849,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5862,9 +5862,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -5885,9 +5885,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -5910,9 +5910,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -5935,9 +5935,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -5960,9 +5960,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6143,9 +6143,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6156,9 +6156,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6169,9 +6169,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6182,9 +6182,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6205,9 +6205,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6230,9 +6230,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6255,9 +6255,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6280,9 +6280,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6463,9 +6463,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6476,9 +6476,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6489,9 +6489,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6502,9 +6502,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6525,9 +6525,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6550,9 +6550,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6575,9 +6575,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6600,9 +6600,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6783,9 +6783,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6796,9 +6796,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6809,9 +6809,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6822,9 +6822,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -6845,9 +6845,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -6870,9 +6870,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -6895,9 +6895,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -6920,9 +6920,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -7103,9 +7103,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -7116,9 +7116,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -7129,9 +7129,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -7142,9 +7142,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -7165,9 +7165,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -7190,9 +7190,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -7215,9 +7215,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -7240,9 +7240,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -12882,9 +12882,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4455,
- "end": 4463,
- "start": 4455,
+ "commentStart": 4456,
+ "end": 4464,
+ "start": 4456,
"type": "TagDeclarator",
"value": "line010"
},
@@ -12895,9 +12895,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4534,
- "end": 4542,
- "start": 4534,
+ "commentStart": 4535,
+ "end": 4543,
+ "start": 4535,
"type": "TagDeclarator",
"value": "line011"
},
@@ -12908,9 +12908,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4593,
- "end": 4601,
- "start": 4593,
+ "commentStart": 4594,
+ "end": 4602,
+ "start": 4594,
"type": "TagDeclarator",
"value": "line012"
},
@@ -12921,9 +12921,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 4620,
- "end": 4628,
- "start": 4620,
+ "commentStart": 4621,
+ "end": 4629,
+ "start": 4621,
"type": "TagDeclarator",
"value": "line013"
},
@@ -12944,9 +12944,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
0.0
],
"tag": {
- "commentStart": 4455,
- "end": 4463,
- "start": 4455,
+ "commentStart": 4456,
+ "end": 4464,
+ "start": 4456,
"type": "TagDeclarator",
"value": "line010"
},
@@ -12969,9 +12969,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
0.0
],
"tag": {
- "commentStart": 4534,
- "end": 4542,
- "start": 4534,
+ "commentStart": 4535,
+ "end": 4543,
+ "start": 4535,
"type": "TagDeclarator",
"value": "line011"
},
@@ -12994,9 +12994,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
126.0
],
"tag": {
- "commentStart": 4593,
- "end": 4601,
- "start": 4593,
+ "commentStart": 4594,
+ "end": 4602,
+ "start": 4594,
"type": "TagDeclarator",
"value": "line012"
},
@@ -13019,9 +13019,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
126.0
],
"tag": {
- "commentStart": 4620,
- "end": 4628,
- "start": 4620,
+ "commentStart": 4621,
+ "end": 4629,
+ "start": 4621,
"type": "TagDeclarator",
"value": "line013"
},
@@ -14295,9 +14295,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14308,9 +14308,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14321,9 +14321,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -14334,9 +14334,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -14357,9 +14357,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14382,9 +14382,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14407,9 +14407,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -14432,9 +14432,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -14715,9 +14715,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14728,9 +14728,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14741,9 +14741,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -14754,9 +14754,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -14777,9 +14777,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -14802,9 +14802,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -14827,9 +14827,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -14852,9 +14852,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -15135,9 +15135,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15148,9 +15148,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15161,9 +15161,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -15174,9 +15174,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -15197,9 +15197,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15222,9 +15222,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15247,9 +15247,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -15272,9 +15272,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -15555,9 +15555,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15568,9 +15568,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15581,9 +15581,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -15594,9 +15594,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -15617,9 +15617,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -15642,9 +15642,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -15667,9 +15667,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -15692,9 +15692,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -16870,9 +16870,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16883,9 +16883,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16896,9 +16896,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -16909,9 +16909,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
@@ -16932,9 +16932,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2386,
- "end": 2394,
- "start": 2386,
+ "commentStart": 2387,
+ "end": 2395,
+ "start": 2387,
"type": "TagDeclarator",
"value": "line000"
},
@@ -16957,9 +16957,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
3.2
],
"tag": {
- "commentStart": 2456,
- "end": 2464,
- "start": 2456,
+ "commentStart": 2457,
+ "end": 2465,
+ "start": 2457,
"type": "TagDeclarator",
"value": "line001"
},
@@ -16982,9 +16982,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2515,
- "end": 2523,
- "start": 2515,
+ "commentStart": 2516,
+ "end": 2524,
+ "start": 2516,
"type": "TagDeclarator",
"value": "line002"
},
@@ -17007,9 +17007,9 @@ description: Variables in memory after executing gridfinity-bins.kcl
38.8
],
"tag": {
- "commentStart": 2542,
- "end": 2550,
- "start": 2542,
+ "commentStart": 2543,
+ "end": 2551,
+ "start": 2543,
"type": "TagDeclarator",
"value": "line003"
},
diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap b/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap
index 1c4d95584..aac74b806 100644
--- a/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap
@@ -1050,69 +1050,99 @@ description: Result of parsing hex-nut.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "start",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "thk",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "raw": "0",
+ "name": "thickness",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
+ "type": "Identifier"
},
- {
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "innerDia",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "raw": "0",
+ "name": "diameter",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "thickness",
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "diameter",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -1133,8 +1163,9 @@ description: Result of parsing hex-nut.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap b/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap
index 175c5cc1b..67140e3eb 100644
--- a/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap
@@ -82,7 +82,74 @@ description: Operations executed hex-nut.kcl
"name": "hexNut",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "innerDia": {
+ "value": {
+ "type": "Number",
+ "value": 0.3125,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "start": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "thk": {
+ "value": {
+ "type": "Number",
+ "value": 0.266,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md
index 9be4a16d7..f1940494d 100644
--- a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md
@@ -303,55 +303,55 @@ flowchart LR
320[Solid2d]
end
subgraph path55 [Path]
- 55["Path [4901, 4988, 0]"]
- 258["Segment [4996, 5025, 0]"]
- 259["Segment [5033, 5061, 0]"]
- 260["Segment [5069, 5147, 0]"]
- 261["Segment [5155, 5202, 0]"]
- 262["Segment [5210, 5238, 0]"]
- 263["Segment [5246, 5275, 0]"]
- 264["Segment [5283, 5312, 0]"]
- 265["Segment [5320, 5386, 0]"]
- 266["Segment [5394, 5422, 0]"]
- 267["Segment [5430, 5459, 0]"]
- 268["Segment [5467, 5529, 0]"]
- 269["Segment [5537, 5565, 0]"]
- 270["Segment [5573, 5607, 0]"]
- 271["Segment [5615, 5645, 0]"]
- 272["Segment [5653, 5721, 0]"]
- 273["Segment [5729, 5736, 0]"]
+ 55["Path [6329, 6416, 0]"]
+ 258["Segment [6424, 6453, 0]"]
+ 259["Segment [6461, 6489, 0]"]
+ 260["Segment [6497, 6575, 0]"]
+ 261["Segment [6583, 6630, 0]"]
+ 262["Segment [6638, 6666, 0]"]
+ 263["Segment [6674, 6703, 0]"]
+ 264["Segment [6711, 6740, 0]"]
+ 265["Segment [6748, 6814, 0]"]
+ 266["Segment [6822, 6850, 0]"]
+ 267["Segment [6858, 6887, 0]"]
+ 268["Segment [6895, 6957, 0]"]
+ 269["Segment [6965, 6993, 0]"]
+ 270["Segment [7001, 7035, 0]"]
+ 271["Segment [7043, 7073, 0]"]
+ 272["Segment [7081, 7149, 0]"]
+ 273["Segment [7157, 7164, 0]"]
294[Solid2d]
end
subgraph path56 [Path]
- 56["Path [5936, 6034, 0]"]
- 274["Segment [6042, 6120, 0]"]
- 276["Segment [6128, 6175, 0]"]
- 279["Segment [6183, 6263, 0]"]
- 281["Segment [6271, 6278, 0]"]
+ 56["Path [7364, 7462, 0]"]
+ 274["Segment [7470, 7548, 0]"]
+ 276["Segment [7556, 7603, 0]"]
+ 279["Segment [7611, 7691, 0]"]
+ 281["Segment [7699, 7706, 0]"]
299[Solid2d]
end
subgraph path57 [Path]
- 57["Path [5936, 6034, 0]"]
- 275["Segment [6042, 6120, 0]"]
- 277["Segment [6128, 6175, 0]"]
- 278["Segment [6183, 6263, 0]"]
- 280["Segment [6271, 6278, 0]"]
+ 57["Path [7364, 7462, 0]"]
+ 275["Segment [7470, 7548, 0]"]
+ 277["Segment [7556, 7603, 0]"]
+ 278["Segment [7611, 7691, 0]"]
+ 280["Segment [7699, 7706, 0]"]
313[Solid2d]
end
subgraph path58 [Path]
- 58["Path [6386, 6483, 0]"]
- 282["Segment [6491, 6569, 0]"]
- 285["Segment [6577, 6625, 0]"]
- 287["Segment [6633, 6713, 0]"]
- 289["Segment [6721, 6728, 0]"]
+ 58["Path [7814, 7911, 0]"]
+ 282["Segment [7919, 7997, 0]"]
+ 285["Segment [8005, 8053, 0]"]
+ 287["Segment [8061, 8141, 0]"]
+ 289["Segment [8149, 8156, 0]"]
306[Solid2d]
end
subgraph path59 [Path]
- 59["Path [6386, 6483, 0]"]
- 283["Segment [6491, 6569, 0]"]
- 284["Segment [6577, 6625, 0]"]
- 286["Segment [6633, 6713, 0]"]
- 288["Segment [6721, 6728, 0]"]
+ 59["Path [7814, 7911, 0]"]
+ 283["Segment [7919, 7997, 0]"]
+ 284["Segment [8005, 8053, 0]"]
+ 286["Segment [8061, 8141, 0]"]
+ 288["Segment [8149, 8156, 0]"]
309[Solid2d]
end
1["Plane [532, 549, 0]"]
@@ -376,11 +376,11 @@ flowchart LR
20["Plane [1946, 1969, 0]"]
21["Plane [1946, 1969, 0]"]
22["Plane [1946, 1969, 0]"]
- 23["Plane [4870, 4893, 0]"]
- 24["Plane [5905, 5928, 0]"]
- 25["Plane [5905, 5928, 0]"]
- 26["Plane [6355, 6378, 0]"]
- 27["Plane [6355, 6378, 0]"]
+ 23["Plane [6298, 6321, 0]"]
+ 24["Plane [7333, 7356, 0]"]
+ 25["Plane [7333, 7356, 0]"]
+ 26["Plane [7783, 7806, 0]"]
+ 27["Plane [7783, 7806, 0]"]
28["StartSketchOnFace [1151, 1189, 0]"]
321["Sweep Extrusion [851, 873, 0]"]
322["Sweep Extrusion [1472, 1570, 0]"]
@@ -408,11 +408,11 @@ flowchart LR
344["Sweep Extrusion [2685, 2711, 0]"]
345["Sweep Extrusion [2685, 2711, 0]"]
346["Sweep Extrusion [2685, 2711, 0]"]
- 347["Sweep Extrusion [5744, 5768, 0]"]
- 348["Sweep Extrusion [6286, 6310, 0]"]
- 349["Sweep Extrusion [6286, 6310, 0]"]
- 350["Sweep Extrusion [6736, 6760, 0]"]
- 351["Sweep Extrusion [6736, 6760, 0]"]
+ 347["Sweep Extrusion [7172, 7196, 0]"]
+ 348["Sweep Extrusion [7714, 7738, 0]"]
+ 349["Sweep Extrusion [7714, 7738, 0]"]
+ 350["Sweep Extrusion [8164, 8188, 0]"]
+ 351["Sweep Extrusion [8164, 8188, 0]"]
352[Wall]
353[Wall]
354[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap
index a25c82c2d..cafb642d5 100644
--- a/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap
@@ -4145,97 +4145,147 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.3,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
- "name": "row1",
+ "raw": "0.3",
"start": 0,
- "type": "Identifier"
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.3,
+ "suffix": "None"
+ }
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.1,
- "suffix": "None"
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.1,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor2",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -4256,8 +4306,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
@@ -4274,97 +4325,147 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.5,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.5,
+ "suffix": "None"
+ }
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor1",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -4385,8 +4486,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -4398,684 +4500,18 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 7.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3.5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.5,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "5.2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.2,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "keyHeight",
+ "name": "originStart",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
"commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 8.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "8.7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 8.7,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 8.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "9.6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 9.6,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "10.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.3,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.1,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"left": {
@@ -5101,12 +4537,669 @@ description: Result of parsing keyboard.kcl
"right": {
"commentStart": 0,
"end": 0,
- "raw": "12",
+ "raw": "7",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 12.0,
+ "value": 7.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.5,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5.2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.2,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 8.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "8.7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 8.7,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 8.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "9.6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 9.6,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
"suffix": "None"
}
},
@@ -5131,146 +5224,14 @@ description: Result of parsing keyboard.kcl
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "spacing",
+ "name": "row1",
"start": 0,
"type": "Identifier"
},
@@ -5278,101 +5239,109 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.7,
- "suffix": "None"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.1,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor2",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -5393,14 +5362,10 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
- "preComments": [
- "",
- "",
- "// Build the second row of keys"
- ],
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
@@ -5411,12 +5376,257 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "12",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 12.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10.3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.3,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "left": {
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"left": {
@@ -5439,12 +5649,12 @@ description: Result of parsing keyboard.kcl
"right": {
"commentStart": 0,
"end": 0,
- "raw": "4",
+ "raw": "3",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 4.0,
+ "value": 3.0,
"suffix": "None"
}
},
@@ -5452,100 +5662,124 @@ description: Result of parsing keyboard.kcl
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
- "right": {
+ {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "raw": "1.7",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.7,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.7,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "9",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 9.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor1",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -5566,9 +5800,15 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
+ "preComments": [
+ "",
+ "",
+ "// Build the second row of keys"
+ ],
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
@@ -5579,12 +5819,18 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"left": {
@@ -5610,12 +5856,12 @@ description: Result of parsing keyboard.kcl
"right": {
"commentStart": 0,
"end": 0,
- "raw": "14",
+ "raw": "4",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 14.0,
+ "value": 4.0,
"suffix": "None"
}
},
@@ -5640,120 +5886,124 @@ description: Result of parsing keyboard.kcl
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
- "right": {
+ {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "left": {
+ "name": {
"commentStart": 0,
"end": 0,
- "raw": "0.8",
+ "name": "row2",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
- }
+ "type": "Identifier"
},
+ "path": [],
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "2.2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.2,
- "suffix": "None"
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor2",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "9",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 9.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -5774,8 +6024,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -5787,19 +6038,121 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "14",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 14.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.7,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "spacing",
+ "name": "row2",
"start": 0,
"type": "Identifier"
},
@@ -5807,121 +6160,109 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row3",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "raw": "1.1",
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2.2",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 1.1,
+ "value": 2.2,
"suffix": "None"
}
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.1,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor1",
+ "name": "repeats",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -5942,8 +6283,228 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row3",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.1,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.1,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
@@ -5960,12 +6521,1805 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.1,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.1,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row3",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "left": {
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "11.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 11.1,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.1,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row3",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.4,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.4,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row4",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.9",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.9,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "preComments": [
+ "",
+ "",
+ "// Build the fourth row of keys"
+ ],
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.9",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.9,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row4",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "11",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 11.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "11.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 11.8,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row4",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.2,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row5",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "12",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 12.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "preComments": [
+ "",
+ "",
+ "// Build the fifth row of keys"
+ ],
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "11.7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 11.7,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row5",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.3,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "spacing",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row6",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.1,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.6,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "color",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor2",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyFn",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "preComments": [
+ "",
+ "",
+ "// Build the sixth row of keys"
+ ],
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"left": {
@@ -6021,31 +8375,71 @@ description: Result of parsing keyboard.kcl
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
- "right": {
+ {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "raw": ".1",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row6",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.1,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
+ "type": "Name",
+ "type": "Name"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.8",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.8,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "row3",
+ "name": "keyHeight",
"start": 0,
"type": "Identifier"
},
@@ -6053,68 +8447,72 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".6",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.6,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "11",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 11.0,
+ "suffix": "None"
}
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "keyHeight",
+ "name": "color",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "highlightColor1",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
}
],
"callee": {
@@ -6135,8 +8533,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -6148,12 +8547,18 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "originStart",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"left": {
@@ -6196,12 +8601,12 @@ description: Result of parsing keyboard.kcl
"right": {
"commentStart": 0,
"end": 0,
- "raw": "11.1",
+ "raw": "12",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 11.1,
+ "value": 12.0,
"suffix": "None"
}
},
@@ -6209,166 +8614,14 @@ description: Result of parsing keyboard.kcl
"type": "BinaryExpression",
"type": "BinaryExpression"
},
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.1,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row3",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "raw": "1.4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.4,
- "suffix": "None"
- }
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.4,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "spacing",
+ "name": "row6",
"start": 0,
"type": "Identifier"
},
@@ -6376,205 +8629,56 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row4",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.9",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.9,
- "suffix": "None"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "keyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
"name": "keyHeight",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
"commentStart": 0,
"end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "preComments": [
- "",
- "",
- "// Build the fourth row of keys"
- ],
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "0.9",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.9,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "row4",
+ "name": "keyHeight",
"start": 0,
"type": "Identifier"
},
@@ -6582,673 +8686,64 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "11",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 11.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "11.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 11.8,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
},
- {
- "abs_path": false,
+ "operator": "*",
+ "right": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row4",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "raw": ".6",
"start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.2,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.6,
+ "suffix": "None"
+ }
},
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row5",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "repeats",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
}
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
}
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "keyHeight",
+ "name": "color",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "12",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 12.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "preComments": [
- "",
- "",
- "// Build the fifth row of keys"
- ],
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "11.7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 11.7,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row5",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.3,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row6",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.1,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "keyHeight",
+ "name": "highlightColor2",
"start": 0,
"type": "Identifier"
},
@@ -7256,51 +8751,7 @@ description: Result of parsing keyboard.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.6,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
}
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
}
],
"callee": {
@@ -7321,389 +8772,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "preComments": [
- "",
- "",
- "// Build the sixth row of keys"
- ],
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1.1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.1,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row6",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.8",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.8,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.6,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "11",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 11.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "spacing",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "12",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 12.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row6",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".6",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.6,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "highlightColor2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "keyFn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
@@ -11608,60 +12679,90 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "2.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.3,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "origin",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2.3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.3,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.3,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1.3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.3,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": ".4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.4,
- "suffix": "None"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0.03",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.03,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.4,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.03",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.03,
+ "suffix": "None"
+ }
}
}
],
@@ -11683,8 +12784,9 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"preComments": [
"",
@@ -11701,124 +12803,18 @@ description: Result of parsing keyboard.kcl
"expression": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "8.71",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 8.71,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "row4",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".08",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.08,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.4,
- "suffix": "None"
- }
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.03",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.03,
- "suffix": "None"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "o",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- "start": 0,
- "type": "ExpressionStatement",
- "type": "ExpressionStatement"
- },
- {
- "commentStart": 0,
- "end": 0,
- "expression": {
- "arguments": [
- {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "origin",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
"commentStart": 0,
"end": 0,
"raw": "8.71",
@@ -11830,87 +12826,91 @@ description: Result of parsing keyboard.kcl
"suffix": "None"
}
},
- "operator": "+",
- "right": {
+ {
"commentStart": 0,
"end": 0,
- "raw": "0.9",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.9,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "row4",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row4",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".08",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.08,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": ".08",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.08,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0.4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.4,
- "suffix": "None"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0.03",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.03,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.4,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.03",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.03,
+ "suffix": "None"
+ }
}
}
],
@@ -11932,8 +12932,172 @@ description: Result of parsing keyboard.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
+ },
+ "start": 0,
+ "type": "ExpressionStatement",
+ "type": "ExpressionStatement"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "expression": {
+ "arguments": [
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "origin",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "8.71",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 8.71,
+ "suffix": "None"
+ }
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.9",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.9,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "row4",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": ".08",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.08,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.4,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.03",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.03,
+ "suffix": "None"
+ }
+ }
+ }
+ ],
+ "callee": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "o",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "ExpressionStatement",
diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap
index 7a5b8cadc..7da35ce75 100644
--- a/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap
@@ -6799,7 +6799,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6810,7 +6900,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 1.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6821,7 +7001,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 5.2,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 4.2,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6832,7 +7102,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 9.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6843,7 +7203,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 10.4,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6854,7 +7304,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 11.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6865,7 +7405,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 12.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6876,7 +7506,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.7,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 1.2000000000000002,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6887,7 +7607,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 2.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 1.2000000000000002,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 9.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6898,7 +7708,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 2.2,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 11.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 1.2000000000000002,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6909,7 +7809,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.2000000000000002,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 2.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6920,7 +7910,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 1.6,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 2.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6931,7 +8011,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.7999999999999998,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 11.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 2.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6942,7 +8112,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.9,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6953,7 +8213,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 1.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6964,7 +8314,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.2,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 12.100000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6975,7 +8415,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.900000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6986,7 +8516,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.900000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -6997,7 +8617,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.48,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.1,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.30000000000000004,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 4.800000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -7008,7 +8718,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#b0b0b0"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.48,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 0.8,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 1.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 4.800000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -7019,7 +8819,97 @@ description: Operations executed keyboard.kcl
"name": "keyFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "color": {
+ "value": {
+ "type": "String",
+ "value": "#23af93"
+ },
+ "sourceRange": []
+ },
+ "keyHeight": {
+ "value": {
+ "type": "Number",
+ "value": 0.48,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "keyWidth": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "originStart": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 12.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 4.800000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "repeats": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -8136,7 +10026,74 @@ description: Operations executed keyboard.kcl
"name": "z",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.03,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "origin": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 2.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 1.3,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 0.4,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -8147,7 +10104,74 @@ description: Operations executed keyboard.kcl
"name": "o",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.03,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "origin": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 8.71,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0800000000000005,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 0.4,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -8158,7 +10182,74 @@ description: Operations executed keyboard.kcl
"name": "o",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.03,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "origin": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 9.610000000000001,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0800000000000005,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 0.4,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md
index cf1e35820..8ffcf8b44 100644
--- a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md
@@ -352,60 +352,60 @@ flowchart LR
338[Solid2d]
end
subgraph path83 [Path]
- 83["Path [1506, 1562, 0]"]
- 282["Segment [1568, 1586, 0]"]
- 283["Segment [1616, 1635, 0]"]
- 284["Segment [1667, 1697, 0]"]
- 285["Segment [1719, 1737, 0]"]
- 286["Segment [1770, 1788, 0]"]
- 287["Segment [1818, 1847, 0]"]
- 288["Segment [1873, 1892, 0]"]
- 289["Segment [1925, 1943, 0]"]
- 290["Segment [1977, 2008, 0]"]
- 291["Segment [2033, 2052, 0]"]
- 292["Segment [2085, 2104, 0]"]
- 293["Segment [2137, 2193, 0]"]
- 294["Segment [2199, 2206, 0]"]
+ 83["Path [1598, 1654, 0]"]
+ 282["Segment [1660, 1678, 0]"]
+ 283["Segment [1708, 1727, 0]"]
+ 284["Segment [1759, 1789, 0]"]
+ 285["Segment [1811, 1829, 0]"]
+ 286["Segment [1862, 1880, 0]"]
+ 287["Segment [1910, 1939, 0]"]
+ 288["Segment [1965, 1984, 0]"]
+ 289["Segment [2017, 2035, 0]"]
+ 290["Segment [2069, 2100, 0]"]
+ 291["Segment [2125, 2144, 0]"]
+ 292["Segment [2177, 2196, 0]"]
+ 293["Segment [2229, 2285, 0]"]
+ 294["Segment [2291, 2298, 0]"]
318[Solid2d]
end
subgraph path84 [Path]
- 84["Path [2887, 2928, 0]"]
- 295["Segment [2941, 2959, 0]"]
- 296["Segment [2982, 3000, 0]"]
- 297["Segment [3026, 3044, 0]"]
- 298["Segment [3065, 3084, 0]"]
- 299["Segment [3109, 3127, 0]"]
- 300["Segment [3150, 3168, 0]"]
- 301["Segment [3193, 3212, 0]"]
- 302["Segment [3238, 3257, 0]"]
- 303["Segment [3283, 3302, 0]"]
- 304["Segment [3325, 3343, 0]"]
- 305["Segment [3370, 3389, 0]"]
- 306["Segment [3415, 3471, 0]"]
- 307["Segment [3477, 3484, 0]"]
+ 84["Path [3347, 3388, 0]"]
+ 295["Segment [3401, 3419, 0]"]
+ 296["Segment [3442, 3460, 0]"]
+ 297["Segment [3486, 3504, 0]"]
+ 298["Segment [3525, 3544, 0]"]
+ 299["Segment [3569, 3587, 0]"]
+ 300["Segment [3610, 3628, 0]"]
+ 301["Segment [3653, 3672, 0]"]
+ 302["Segment [3698, 3717, 0]"]
+ 303["Segment [3743, 3762, 0]"]
+ 304["Segment [3785, 3803, 0]"]
+ 305["Segment [3830, 3849, 0]"]
+ 306["Segment [3875, 3931, 0]"]
+ 307["Segment [3937, 3944, 0]"]
351[Solid2d]
end
subgraph path85 [Path]
- 85["Path [6208, 6259, 0]"]
- 309["Segment [6267, 6296, 0]"]
- 310["Segment [6304, 6335, 0]"]
- 312["Segment [6343, 6373, 0]"]
- 315["Segment [6381, 6437, 0]"]
- 316["Segment [6445, 6452, 0]"]
+ 85["Path [7864, 7915, 0]"]
+ 309["Segment [7923, 7952, 0]"]
+ 310["Segment [7960, 7991, 0]"]
+ 312["Segment [7999, 8029, 0]"]
+ 315["Segment [8037, 8093, 0]"]
+ 316["Segment [8101, 8108, 0]"]
343[Solid2d]
end
subgraph path86 [Path]
- 86["Path [6208, 6259, 0]"]
- 308["Segment [6267, 6296, 0]"]
- 311["Segment [6304, 6335, 0]"]
- 313["Segment [6343, 6373, 0]"]
- 314["Segment [6381, 6437, 0]"]
- 317["Segment [6445, 6452, 0]"]
+ 86["Path [7864, 7915, 0]"]
+ 308["Segment [7923, 7952, 0]"]
+ 311["Segment [7960, 7991, 0]"]
+ 313["Segment [7999, 8029, 0]"]
+ 314["Segment [8037, 8093, 0]"]
+ 317["Segment [8101, 8108, 0]"]
348[Solid2d]
end
1["Plane [609, 626, 0]"]
- 2["Plane [6183, 6200, 0]"]
- 3["Plane [6183, 6200, 0]"]
+ 2["Plane [7839, 7856, 0]"]
+ 3["Plane [7839, 7856, 0]"]
4["StartSketchOnFace [183, 227, 0]"]
5["StartSketchOnFace [183, 227, 0]"]
6["StartSketchOnFace [183, 227, 0]"]
@@ -429,8 +429,8 @@ flowchart LR
24["StartSketchOnFace [183, 227, 0]"]
25["StartSketchOnFace [183, 227, 0]"]
26["StartSketchOnFace [183, 227, 0]"]
- 27["StartSketchOnFace [1466, 1500, 0]"]
- 28["StartSketchOnFace [2845, 2881, 0]"]
+ 27["StartSketchOnFace [1558, 1592, 0]"]
+ 28["StartSketchOnFace [3305, 3341, 0]"]
29["StartSketchOnFace [183, 227, 0]"]
30["StartSketchOnFace [183, 227, 0]"]
31["StartSketchOnFace [183, 227, 0]"]
@@ -485,10 +485,10 @@ flowchart LR
397["Sweep Extrusion [456, 479, 0]"]
398["Sweep Extrusion [456, 479, 0]"]
399["Sweep Extrusion [905, 935, 0]"]
- 400["Sweep Extrusion [2212, 2243, 0]"]
- 401["Sweep Extrusion [3490, 3519, 0]"]
- 402["Sweep Extrusion [6466, 6511, 0]"]
- 403["Sweep Extrusion [6466, 6511, 0]"]
+ 400["Sweep Extrusion [2304, 2335, 0]"]
+ 401["Sweep Extrusion [3950, 3979, 0]"]
+ 402["Sweep Extrusion [8122, 8167, 0]"]
+ 403["Sweep Extrusion [8122, 8167, 0]"]
404[Wall]
405[Wall]
406[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap b/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap
index 2a311a73d..40a0875c8 100644
--- a/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap
@@ -1791,144 +1791,214 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": {
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitHeadWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitHeadWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitHeadElevation",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitHeadWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitHeadElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitHeadHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitHeadWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitHeadDepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitHeadHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitHeadDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -1949,8 +2019,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -3630,7 +3701,7 @@ description: Result of parsing kitt.kcl
"id": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeHeihgt",
+ "name": "kitEyeHeight",
"start": 0,
"type": "Identifier"
},
@@ -3727,46 +3798,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "START",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeOffset",
+ "name": "kitFace",
"start": 0,
"type": "Identifier"
},
@@ -3774,69 +3821,163 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEyeHeihgt",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -3857,8 +3998,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -3889,49 +4031,131 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "START",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFace",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeOffset",
+ "name": "kitEyeHeight",
"start": 0,
"type": "Identifier"
},
@@ -3940,15 +4164,56 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "operator": "-",
+ "name": "width",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"raw": "1",
@@ -3959,22 +4224,25 @@ description: Result of parsing kitt.kcl
"value": 1.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeHeihgt",
+ "name": "kitEyeDepth",
"start": 0,
"type": "Identifier"
},
@@ -3982,63 +4250,7 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEyeDepth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
}
],
"callee": {
@@ -4059,8 +4271,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -4091,136 +4304,206 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "START",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": {
+ "name": "kitFace",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitEyeOffset",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "+",
- "right": {
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "raw": "4",
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 4.0,
+ "value": 1.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEyeHeihgt",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -4241,8 +4524,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -4268,48 +4552,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "START",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeOffset",
+ "name": "kitFace",
"start": 0,
"type": "Identifier"
},
@@ -4317,35 +4575,25 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeHeihgt",
+ "name": "START",
"start": 0,
"type": "Identifier"
},
@@ -4353,63 +4601,169 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "-",
- "right": {
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "raw": "1",
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
- "value": 1.0,
+ "value": 2.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -4430,8 +4784,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -4464,7 +4819,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeHeihgt",
+ "name": "kitEyeHeight",
"start": 0,
"type": "Identifier"
},
@@ -5872,7 +6227,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeHeihgt",
+ "name": "kitEyeHeight",
"start": 0,
"type": "Identifier"
},
@@ -5922,46 +6277,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "START",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitMouthOffset",
+ "name": "kitFace",
"start": 0,
"type": "Identifier"
},
@@ -5969,69 +6300,163 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitMouthHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -6052,8 +6477,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -6079,49 +6505,131 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "START",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFace",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitMouthOffset",
+ "name": "kitMouthHeight",
"start": 0,
"type": "Identifier"
},
@@ -6130,15 +6638,34 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "operator": "-",
+ "name": "width",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"raw": "1",
@@ -6149,22 +6676,47 @@ description: Result of parsing kitt.kcl
"value": 1.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitMouthHeight",
+ "name": "kitEyeDepth",
"start": 0,
"type": "Identifier"
},
@@ -6172,63 +6724,7 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEyeDepth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
}
],
"callee": {
@@ -6249,8 +6745,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -6281,108 +6778,178 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "START",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFace",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitMouthOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitMouthHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
+ "type": "Name",
+ "type": "Name"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -6403,8 +6970,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -6430,48 +6998,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFace",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "START",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitMouthOffset",
+ "name": "kitFace",
"start": 0,
"type": "Identifier"
},
@@ -6479,9 +7021,136 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "START",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitMouthHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"raw": "1",
@@ -6492,32 +7161,18 @@ description: Result of parsing kitt.kcl
"value": 1.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitMouthHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "height",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"raw": "1",
@@ -6528,50 +7183,33 @@ description: Result of parsing kitt.kcl
"value": 1.0,
"suffix": "None"
}
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEyeDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEyeDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -6592,8 +7230,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -6836,144 +7475,214 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": {
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBellyElevation",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyDepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -6994,8 +7703,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -7182,144 +7892,214 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": {
+ "name": "kitBelly",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVHSwidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVHSwidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "/",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVHSelevation",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVHSwidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVHSelevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVHSheight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVHSwidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVHSdepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVHSheight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVHSdepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -7340,8 +8120,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -7600,46 +8381,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyOffset",
+ "name": "kitBelly",
"start": 0,
"type": "Identifier"
},
@@ -7647,71 +8404,25 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyElevation",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyDepth",
+ "name": "END",
"start": 0,
"type": "Identifier"
},
@@ -7719,13 +8430,153 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -7746,8 +8597,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -7778,46 +8630,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyOffset",
+ "name": "kitBelly",
"start": 0,
"type": "Identifier"
},
@@ -7825,25 +8653,25 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyElevation",
+ "name": "END",
"start": 0,
"type": "Identifier"
},
@@ -7851,65 +8679,105 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyWidth",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"commentStart": 0,
"end": 0,
- "name": "kitFloppyHeight",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
},
{
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyDepth",
+ "name": "kitFloppyWidth",
"start": 0,
"type": "Identifier"
},
@@ -7917,13 +8785,67 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -7944,8 +8866,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -7971,78 +8894,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyElevation",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyWidth",
+ "name": "kitBelly",
"start": 0,
"type": "Identifier"
},
@@ -8050,39 +8917,25 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyHeight",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyDepth",
+ "name": "END",
"start": 0,
"type": "Identifier"
},
@@ -8090,13 +8943,153 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -8117,8 +9110,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -8406,46 +9400,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitBellyButtonOffset",
+ "name": "kitBody",
"start": 0,
"type": "Identifier"
},
@@ -8453,77 +9423,171 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBellyButtonElevation",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyButtonWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyButtonOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
"commentStart": 0,
"end": 0,
- "name": "kitBellyButtonHeight",
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBellyButtonDepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyButtonElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyButtonWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyButtonHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBellyButtonDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -8544,8 +9608,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -8731,64 +9796,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyElevation",
+ "name": "kitBelly",
"start": 0,
"type": "Identifier"
},
@@ -8796,73 +9819,25 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "argument": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonHeight",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitButtonDepth",
+ "name": "END",
"start": 0,
"type": "Identifier"
},
@@ -8870,13 +9845,173 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -8897,8 +10032,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -8924,41 +10060,137 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBelly",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
@@ -8968,7 +10200,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyOffset",
+ "name": "kitFloppyElevation",
"start": 0,
"type": "Identifier"
},
@@ -8977,8 +10209,35 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "-",
+ "operator": "+",
"right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -8994,112 +10253,31 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "operator": "-",
- "right": {
"commentStart": 0,
"end": 0,
- "raw": "1",
+ "operator": "-",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyElevation",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitButtonDepth",
+ "name": "kitButtonHeight",
"start": 0,
"type": "Identifier"
},
@@ -9107,13 +10285,41 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -9134,8 +10340,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -9166,48 +10373,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBelly",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "END",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitFloppyOffset",
+ "name": "kitBelly",
"start": 0,
"type": "Identifier"
},
@@ -9215,12 +10396,154 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "-",
- "right": {
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitFloppyElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
"commentStart": 0,
"end": 0,
"raw": "2",
@@ -9232,136 +10555,62 @@ description: Result of parsing kitt.kcl
"suffix": "None"
}
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitFloppyElevation",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitButtonHeight",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
},
{
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitButtonDepth",
+ "name": "kitButtonHeight",
"start": 0,
"type": "Identifier"
},
@@ -9369,13 +10618,41 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitButtonDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
}
],
"callee": {
@@ -9396,8 +10673,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -10545,116 +11823,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitShoe",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitShoe",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "END",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitPantsOffsetSide",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitPantsOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitPantsOffsetFront",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitPantsOffsetFront",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitPantsFrontWidth",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitPantsFrontWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitPantsWidth",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitPantsWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitPantsHeight",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitPantsHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -10675,8 +12023,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -10860,32 +12209,52 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitLegOffset",
+ "name": "offsetFront",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitLegOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -10906,8 +12275,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -10933,29 +12303,72 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetFront",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitLegOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "-",
+ "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitLegOffset",
+ "name": "kitShoeWidth",
"start": 0,
"type": "Identifier"
},
@@ -10964,33 +12377,10 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "commentStart": 0,
- "end": 0,
- "operator": "-",
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "-",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitShoeWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -11011,8 +12401,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -11307,94 +12698,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "seg01",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetSide",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetFront",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEarWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEarDepth",
+ "name": "kitBody",
"start": 0,
"type": "Identifier"
},
@@ -11402,29 +12721,171 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarHeight",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg01",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitNewEarOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitNewEarOffsetFront",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -11445,8 +12906,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -11505,137 +12967,87 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "baseVolume",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "baseVolume",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetSide",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "positionY",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "secondOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetFront",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "0.01",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.01,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEarWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitNewEarOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -11651,39 +13063,31 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEarDepth",
+ "name": "kitNewEarOffsetFront",
"start": 0,
"type": "Identifier"
},
@@ -11692,15 +13096,34 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "commentStart": 0,
- "end": 0,
"operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.01",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.01,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
@@ -11710,7 +13133,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "secondOffset",
+ "name": "kitEarWidth",
"start": 0,
"type": "Identifier"
},
@@ -11719,42 +13142,151 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "secondOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "secondOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -11775,8 +13307,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -11835,137 +13368,87 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "secondLevel",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "secondLevel",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetSide",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "positionY",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "thirdOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetFront",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "0.02",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.02,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEarWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitNewEarOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -11981,39 +13464,31 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEarDepth",
+ "name": "kitNewEarOffsetFront",
"start": 0,
"type": "Identifier"
},
@@ -12022,15 +13497,34 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "commentStart": 0,
- "end": 0,
"operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.02",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.02,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
@@ -12040,7 +13534,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "thirdOffset",
+ "name": "kitEarWidth",
"start": 0,
"type": "Identifier"
},
@@ -12049,42 +13543,151 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "thirdOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "thirdOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -12105,8 +13708,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -12165,137 +13769,87 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "thirdLevel",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "END",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "thirdLevel",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "END",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetSide",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "positionY",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "fourthOffset",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitNewEarOffsetFront",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "0.03",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.03,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEarWidth",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "-",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitNewEarOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -12311,39 +13865,31 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEarDepth",
+ "name": "kitNewEarOffsetFront",
"start": 0,
"type": "Identifier"
},
@@ -12352,15 +13898,34 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "commentStart": 0,
- "end": 0,
"operator": "-",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0.03",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.03,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
@@ -12370,7 +13935,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "fourthOffset",
+ "name": "kitEarWidth",
"start": 0,
"type": "Identifier"
},
@@ -12379,42 +13944,151 @@ description: Result of parsing kitt.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
+ "operator": "-",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "fourthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarHeight",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "argument": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "fourthOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -12435,8 +14109,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -12642,36 +14317,56 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarOffsetFront",
+ "name": "earOffsetFront",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarOffsetFront",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarOffsetSide",
+ "name": "earOffsetSide",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -12692,8 +14387,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -12719,42 +14415,82 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitEarOffsetFront",
+ "name": "earOffsetFront",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarOffsetFront",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "earOffsetSide",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitBodyWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBodyWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "-",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitEarWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"operator": "-",
"right": {
@@ -12764,7 +14500,7 @@ description: Result of parsing kitt.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitEarWidth",
+ "name": "kitEarOffsetSide",
"start": 0,
"type": "Identifier"
},
@@ -12776,27 +14512,7 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "operator": "-",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitEarOffsetSide",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -12817,8 +14533,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -13445,116 +15162,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowA",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowA",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnB",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnB",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -13575,8 +15362,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -13602,116 +15390,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowA",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowA",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnD",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnD",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -13732,8 +15590,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -13759,116 +15618,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowB",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowB",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnA",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnA",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -13889,8 +15818,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -13916,116 +15846,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowB",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowB",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnC",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnC",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -14046,8 +16046,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -14073,116 +16074,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowB",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowB",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnE",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnE",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -14203,8 +16274,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -14230,116 +16302,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowC",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowC",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnB",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnB",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -14360,8 +16502,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -14387,116 +16530,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillRowC",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillRowC",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillColumnD",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillColumnD",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleSize",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleSize",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "grillHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "grillHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -14517,8 +16730,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -14742,116 +16956,186 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitBody",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "seg02",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentElevation",
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentOffset",
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleHeight",
+ "name": "width",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleWidth",
+ "name": "height",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleDepth",
+ "name": "depth",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -14872,8 +17156,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -14899,64 +17184,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "seg02",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitVentElevation",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitVentOffset",
+ "name": "kitBody",
"start": 0,
"type": "Identifier"
},
@@ -14964,71 +17207,183 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleHeight",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleDepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -15049,8 +17404,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -15076,64 +17432,22 @@ description: Result of parsing kitt.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitBody",
+ "name": "kitExtrude",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "seg02",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "kitVentElevation",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "kitVentOffset",
+ "name": "kitBody",
"start": 0,
"type": "Identifier"
},
@@ -15141,71 +17455,183 @@ description: Result of parsing kitt.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "4",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
},
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleHeight",
+ "name": "extrudeTag",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleWidth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "seg02",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "kitVentHoleDepth",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentElevation",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "positionZ",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentOffset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "width",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "height",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleWidth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "depth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "kitVentHoleDepth",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -15226,8 +17652,9 @@ description: Result of parsing kitt.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap b/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap
index a7e582991..685980d0e 100644
--- a/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap
@@ -2159,7 +2159,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 16.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 14.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 24.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2225,7 +2322,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 23.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2236,7 +2430,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 24.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2247,7 +2538,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 23.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2258,7 +2646,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 22.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2324,7 +2809,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2335,7 +2917,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 19.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2346,7 +3025,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2357,7 +3133,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 0.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "start"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 19.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2368,7 +3241,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 24.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2379,7 +3349,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2390,7 +3457,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2401,7 +3565,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2412,7 +3673,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": -5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2423,7 +3781,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -9.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2434,7 +3889,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": -1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2445,7 +3997,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 9.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": -1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2456,7 +4105,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": -1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2561,7 +4307,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": -10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2572,7 +4415,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -9.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": -10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2583,7 +4523,40 @@ description: Operations executed kitt.kcl
"name": "kitLeg",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "offsetFront": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offsetSide": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2594,7 +4567,40 @@ description: Operations executed kitt.kcl
"name": "kitLeg",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "offsetFront": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offsetSide": {
+ "value": {
+ "type": "Number",
+ "value": -10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2605,7 +4611,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg01",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 14.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2616,7 +4720,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg01",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 14.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 8.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2627,7 +4829,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.99,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2638,7 +4937,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.99,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2649,7 +5045,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.98,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2660,7 +5153,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.98,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2671,7 +5261,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": -9.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.97,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2682,7 +5369,104 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "String",
+ "value": "end"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.97,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2693,7 +5477,40 @@ description: Operations executed kitt.kcl
"name": "kitEar",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "earOffsetFront": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "earOffsetSide": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2704,7 +5521,40 @@ description: Operations executed kitt.kcl
"name": "kitEar",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "earOffsetFront": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "earOffsetSide": {
+ "value": {
+ "type": "Number",
+ "value": 17.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2715,7 +5565,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 27.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2726,7 +5674,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 27.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2737,7 +5783,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 14.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2748,7 +5892,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 12.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2759,7 +6001,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 25.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2770,7 +6110,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 23.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 13.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2781,7 +6219,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 23.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 11.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2792,7 +6328,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2803,7 +6437,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -2814,7 +6546,105 @@ description: Operations executed kitt.kcl
"name": "pixelBox",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "depth": {
+ "value": {
+ "type": "Number",
+ "value": -2.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "extrudeTag": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "seg02",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "height": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "kitExtrude": {
+ "value": {
+ "type": "Solid",
+ "value": {
+ "artifactId": "[uuid]"
+ }
+ },
+ "sourceRange": []
+ },
+ "positionY": {
+ "value": {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "positionZ": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "width": {
+ "value": {
+ "type": "Number",
+ "value": 4.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap
index 74bacabc7..2e66ddb34 100644
--- a/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap
+++ b/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap
@@ -6342,7 +6342,7 @@ description: Variables in memory after executing kitt.kcl
}
}
},
- "kitEyeHeihgt": {
+ "kitEyeHeight": {
"type": "Number",
"value": 23.0,
"ty": {
diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_graph_flowchart.snap.md
index 47ebd30d2..db485420b 100644
--- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_graph_flowchart.snap.md
@@ -36,27 +36,27 @@ flowchart LR
54[Solid2d]
end
subgraph path26 [Path]
- 26["Path [1228, 1283, 0]"]
- 38["Segment [1228, 1283, 0]"]
+ 26["Path [1312, 1367, 0]"]
+ 38["Segment [1312, 1367, 0]"]
47[Solid2d]
end
subgraph path27 [Path]
- 27["Path [1228, 1283, 0]"]
- 37["Segment [1228, 1283, 0]"]
+ 27["Path [1312, 1367, 0]"]
+ 37["Segment [1312, 1367, 0]"]
52[Solid2d]
end
subgraph path28 [Path]
- 28["Path [1676, 1739, 0]"]
- 39["Segment [1676, 1739, 0]"]
+ 28["Path [1816, 1879, 0]"]
+ 39["Segment [1816, 1879, 0]"]
45[Solid2d]
end
subgraph path29 [Path]
- 29["Path [1785, 1844, 0]"]
- 40["Segment [1852, 1876, 0]"]
- 41["Segment [1884, 1984, 0]"]
- 42["Segment [1992, 2016, 0]"]
- 43["Segment [2024, 2202, 0]"]
- 44["Segment [2210, 2217, 0]"]
+ 29["Path [1925, 1984, 0]"]
+ 40["Segment [1992, 2016, 0]"]
+ 41["Segment [2024, 2124, 0]"]
+ 42["Segment [2132, 2156, 0]"]
+ 43["Segment [2164, 2342, 0]"]
+ 44["Segment [2350, 2357, 0]"]
55[Solid2d]
end
1["Plane [547, 574, 0]"]
@@ -66,10 +66,10 @@ flowchart LR
5["Plane [547, 574, 0]"]
6["Plane [547, 574, 0]"]
7["Plane [547, 574, 0]"]
- 8["Plane [1200, 1220, 0]"]
- 9["Plane [1200, 1220, 0]"]
- 10["Plane [1612, 1662, 0]"]
- 11["StartSketchOnPlane [1596, 1663, 0]"]
+ 8["Plane [1284, 1304, 0]"]
+ 9["Plane [1284, 1304, 0]"]
+ 10["Plane [1752, 1802, 0]"]
+ 11["StartSketchOnPlane [1736, 1803, 0]"]
12["StartSketchOnPlane [533, 575, 0]"]
13["StartSketchOnPlane [533, 575, 0]"]
14["StartSketchOnPlane [533, 575, 0]"]
@@ -84,10 +84,10 @@ flowchart LR
60["Sweep Extrusion [636, 665, 0]"]
61["Sweep Extrusion [636, 665, 0]"]
62["Sweep Extrusion [636, 665, 0]"]
- 63["Sweep Extrusion [1291, 1318, 0]"]
- 64["Sweep Extrusion [1291, 1318, 0]"]
- 65["Sweep Extrusion [1747, 1770, 0]"]
- 66["Sweep Extrusion [2225, 2248, 0]"]
+ 63["Sweep Extrusion [1375, 1402, 0]"]
+ 64["Sweep Extrusion [1375, 1402, 0]"]
+ 65["Sweep Extrusion [1887, 1910, 0]"]
+ 66["Sweep Extrusion [2365, 2388, 0]"]
67[Wall]
68[Wall]
69[Wall]
diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap
index b488d5676..2da0e6f84 100644
--- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap
@@ -804,39 +804,69 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "x",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
}
],
@@ -858,8 +888,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -885,68 +916,98 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "x",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "z",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "abs_path": false,
+ "arg": {
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeGap",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -967,8 +1028,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -994,108 +1056,138 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "x",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeGap",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1116,8 +1208,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -1143,72 +1236,102 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "armLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeHeight",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "y",
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
- "abs_path": false,
+ "arg": {
"commentStart": 0,
"end": 0,
- "name": {
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeGap",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "+",
+ "right": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1229,8 +1352,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -1256,112 +1380,142 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "armLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeGap",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1382,8 +1536,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -1409,23 +1564,15 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -1440,28 +1587,26 @@ description: Result of parsing makeup-mirror.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": "armLength",
"start": 0,
"type": "Identifier"
},
@@ -1470,63 +1615,103 @@ description: Result of parsing makeup-mirror.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeGap",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1547,8 +1732,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -1574,23 +1760,15 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "argument": {
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -1605,28 +1783,26 @@ description: Result of parsing makeup-mirror.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "left": {
+ "name": "y",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "argument": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": "armLength",
"start": 0,
"type": "Identifier"
},
@@ -1635,63 +1811,103 @@ description: Result of parsing makeup-mirror.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "z",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeGap",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "3",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -1712,8 +1928,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -2057,47 +2274,110 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "YZ",
+ "name": "plane",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "YZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
}
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offset",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "altitude",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
+ "commentStart": 0,
+ "end": 0,
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "1.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 1.5,
+ "suffix": "None"
+ }
+ },
+ "start": 0,
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
+ },
+ "operator": "+",
+ "right": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": "hingeGap",
"start": 0,
"type": "Identifier"
},
@@ -2106,43 +2386,10 @@ description: Result of parsing makeup-mirror.kcl
"type": "Name",
"type": "Name"
},
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "1.5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.5,
- "suffix": "None"
- }
- },
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeGap",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -2163,8 +2410,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -2190,116 +2438,146 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "XZ",
+ "name": "plane",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "XZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offset",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "armLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "altitude",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2.5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.5,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "2.5",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "2",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 2.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.5,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
- },
- "operator": "+",
- "right": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeGap",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ }
}
],
"callee": {
@@ -2320,8 +2598,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -3562,57 +3841,93 @@ description: Result of parsing makeup-mirror.kcl
"init": {
"arguments": [
{
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "XZ",
+ "name": "plane",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "XZ",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetX",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "arg": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "armLength",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "armLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "offsetY",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "armLength",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "left": {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "altitude",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"commentStart": 0,
"end": 0,
"left": {
@@ -3625,33 +3940,77 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"left": {
- "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": {
+ "left": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "hingeHeight",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeHeight",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "4",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 4.0,
+ "suffix": "None"
+ }
},
- "path": [],
"start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
- "operator": "*",
+ "operator": "+",
"right": {
"commentStart": 0,
"end": 0,
- "raw": "4",
+ "left": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "hingeGap",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ },
+ "operator": "*",
+ "right": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
+ },
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 4.0,
- "suffix": "None"
- }
+ "type": "BinaryExpression",
+ "type": "BinaryExpression"
},
"start": 0,
"type": "BinaryExpression",
@@ -3659,40 +4018,20 @@ description: Result of parsing makeup-mirror.kcl
},
"operator": "+",
"right": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "left": {
- "abs_path": false,
+ "name": {
"commentStart": 0,
"end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "hingeGap",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
+ "name": "mirrorRadius",
"start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "*",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
+ "type": "Identifier"
},
+ "path": [],
"start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
+ "type": "Name",
+ "type": "Name"
},
"start": 0,
"type": "BinaryExpression",
@@ -3706,7 +4045,7 @@ description: Result of parsing makeup-mirror.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "mirrorRadius",
+ "name": "archToMirrorGap",
"start": 0,
"type": "Identifier"
},
@@ -3727,7 +4066,7 @@ description: Result of parsing makeup-mirror.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "archToMirrorGap",
+ "name": "archThickness",
"start": 0,
"type": "Identifier"
},
@@ -3739,9 +4078,96 @@ description: Result of parsing makeup-mirror.kcl
"start": 0,
"type": "BinaryExpression",
"type": "BinaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "radius",
+ "start": 0,
+ "type": "Identifier"
},
- "operator": "+",
- "right": {
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "mirrorRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "tiefe",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "mirrorThickness",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "gestellR",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "archRadius",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "gestellD",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
"abs_path": false,
"commentStart": 0,
"end": 0,
@@ -3756,74 +4182,7 @@ description: Result of parsing makeup-mirror.kcl
"start": 0,
"type": "Name",
"type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "mirrorRadius",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "mirrorThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "archRadius",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "archThickness",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ }
}
],
"callee": {
@@ -3844,8 +4203,9 @@ description: Result of parsing makeup-mirror.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap
index 4f9393450..6e3b98f48 100644
--- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap
@@ -549,7 +549,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -560,7 +609,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 24.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -571,7 +669,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 49.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -582,7 +729,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 24.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -593,7 +789,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 49.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -604,7 +849,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": -170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 49.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -615,7 +909,56 @@ description: Operations executed makeup-mirror.kcl
"name": "hingeFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "y": {
+ "value": {
+ "type": "Number",
+ "value": -170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "z": {
+ "value": {
+ "type": "Number",
+ "value": 73.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -720,7 +1063,47 @@ description: Operations executed makeup-mirror.kcl
"name": "armFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "altitude": {
+ "value": {
+ "type": "Number",
+ "value": 36.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "plane": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -731,7 +1114,47 @@ description: Operations executed makeup-mirror.kcl
"name": "armFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "altitude": {
+ "value": {
+ "type": "Number",
+ "value": 61.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offset": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "plane": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -851,7 +1274,127 @@ description: Operations executed makeup-mirror.kcl
"name": "mirrorFn",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "altitude": {
+ "value": {
+ "type": "Number",
+ "value": 188.5,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "gestellD": {
+ "value": {
+ "type": "Number",
+ "value": 1.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "gestellR": {
+ "value": {
+ "type": "Number",
+ "value": 90.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offsetX": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "offsetY": {
+ "value": {
+ "type": "Number",
+ "value": 170.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "plane": {
+ "value": {
+ "type": "Plane",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "radius": {
+ "value": {
+ "type": "Number",
+ "value": 85.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "tiefe": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_graph_flowchart.snap.md
index d02a033bf..d2bf428b2 100644
--- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_graph_flowchart.snap.md
@@ -9,32 +9,32 @@ flowchart LR
20[Solid2d]
end
subgraph path3 [Path]
- 3["Path [1118, 1263, 0]"]
- 12["Segment [1118, 1263, 0]"]
+ 3["Path [1132, 1277, 0]"]
+ 12["Segment [1132, 1277, 0]"]
19[Solid2d]
end
subgraph path4 [Path]
- 4["Path [1288, 1432, 0]"]
- 13["Segment [1288, 1432, 0]"]
+ 4["Path [1302, 1446, 0]"]
+ 13["Segment [1302, 1446, 0]"]
22[Solid2d]
end
subgraph path5 [Path]
- 5["Path [1457, 1603, 0]"]
- 14["Segment [1457, 1603, 0]"]
+ 5["Path [1471, 1617, 0]"]
+ 14["Segment [1471, 1617, 0]"]
21[Solid2d]
end
subgraph path6 [Path]
- 6["Path [1628, 1773, 0]"]
- 15["Segment [1628, 1773, 0]"]
+ 6["Path [1642, 1787, 0]"]
+ 15["Segment [1642, 1787, 0]"]
17[Solid2d]
end
subgraph path7 [Path]
- 7["Path [1798, 1850, 0]"]
- 16["Segment [1798, 1850, 0]"]
+ 7["Path [1812, 1864, 0]"]
+ 16["Segment [1812, 1864, 0]"]
18[Solid2d]
end
1["Plane [541, 558, 0]"]
- 23["Sweep Extrusion [1857, 1889, 0]"]
+ 23["Sweep Extrusion [1871, 1903, 0]"]
24[Wall]
25[Wall]
26[Wall]
@@ -49,10 +49,10 @@ flowchart LR
35["SweepEdge Adjacent"]
36["SweepEdge Adjacent"]
37["SweepEdge Adjacent"]
- 38["EdgeCut Fillet [1895, 2160, 0]"]
- 39["EdgeCut Fillet [1895, 2160, 0]"]
- 40["EdgeCut Fillet [1895, 2160, 0]"]
- 41["EdgeCut Fillet [1895, 2160, 0]"]
+ 38["EdgeCut Fillet [1909, 2174, 0]"]
+ 39["EdgeCut Fillet [1909, 2174, 0]"]
+ 40["EdgeCut Fillet [1909, 2174, 0]"]
+ 41["EdgeCut Fillet [1909, 2174, 0]"]
1 --- 2
1 --- 3
1 --- 4
diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap
index dbca783eb..30cdd4bbc 100644
--- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap
+++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap
@@ -1273,69 +1273,99 @@ description: Result of parsing mounting-plate.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ }
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "w",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "raw": "0",
+ "name": "plateWidth",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
+ "type": "Identifier"
},
- {
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "l",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
"commentStart": 0,
"end": 0,
- "raw": "0",
+ "name": "plateLength",
"start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "plateWidth",
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "plateLength",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -1356,8 +1386,9 @@ description: Result of parsing mounting-plate.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap
index 535e5383c..30085d16c 100644
--- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap
+++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap
@@ -25,7 +25,74 @@ description: Operations executed mounting-plate.kcl
"name": "rectShape",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "l": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ },
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "w": {
+ "value": {
+ "type": "Number",
+ "value": 6.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Inches"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md
index 3a04bc2ff..c939454cd 100644
--- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md
@@ -183,11 +183,11 @@ flowchart LR
2["Plane [455, 472, 10]"]
3["Plane [957, 974, 10]"]
4["Plane [1418, 1435, 10]"]
- 5["Plane [2557, 2574, 10]"]
- 6["Plane [2627, 2644, 10]"]
- 7["Plane [2699, 2716, 10]"]
- 8["Plane [2770, 2787, 10]"]
- 9["Plane [2841, 2858, 10]"]
+ 5["Plane [2567, 2584, 10]"]
+ 6["Plane [2664, 2681, 10]"]
+ 7["Plane [2763, 2780, 10]"]
+ 8["Plane [2861, 2878, 10]"]
+ 9["Plane [2959, 2976, 10]"]
10["Plane [307, 324, 12]"]
11["Plane [535, 574, 12]"]
12["Plane [238, 255, 13]"]
@@ -200,7 +200,7 @@ flowchart LR
158["Sweep Extrusion [1749, 1792, 9]"]
159["Sweep Extrusion [2151, 2194, 9]"]
160["Sweep Extrusion [2446, 2479, 9]"]
- 161["Sweep Extrusion [2882, 2913, 10]"]
+ 161["Sweep Extrusion [3017, 3048, 10]"]
162["Sweep Loft [914, 957, 12]"]
163["Sweep Extrusion [591, 643, 13]"]
164["Sweep Revolve [522, 539, 14]"]
diff --git a/rust/kcl-lib/tests/loop_tag/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/loop_tag/artifact_graph_flowchart.snap.md
index 70d8a10d4..9e1bec20f 100644
--- a/rust/kcl-lib/tests/loop_tag/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/loop_tag/artifact_graph_flowchart.snap.md
@@ -1,61 +1,61 @@
```mermaid
flowchart LR
subgraph path2 [Path]
- 2["Path [732, 768, 0]"]
- 3["Segment [922, 986, 0]"]
- 4["Segment [922, 986, 0]"]
- 5["Segment [922, 986, 0]"]
- 6["Segment [922, 986, 0]"]
- 7["Segment [922, 986, 0]"]
- 8["Segment [922, 986, 0]"]
- 9["Segment [922, 986, 0]"]
- 10["Segment [922, 986, 0]"]
- 11["Segment [922, 986, 0]"]
- 12["Segment [922, 986, 0]"]
- 13["Segment [922, 986, 0]"]
- 14["Segment [922, 986, 0]"]
- 15["Segment [922, 986, 0]"]
- 16["Segment [922, 986, 0]"]
- 17["Segment [922, 986, 0]"]
- 18["Segment [922, 986, 0]"]
- 19["Segment [922, 986, 0]"]
- 20["Segment [922, 986, 0]"]
- 21["Segment [922, 986, 0]"]
- 22["Segment [922, 986, 0]"]
- 23["Segment [922, 986, 0]"]
- 24["Segment [922, 986, 0]"]
- 25["Segment [922, 986, 0]"]
- 26["Segment [922, 986, 0]"]
- 27["Segment [922, 986, 0]"]
- 28["Segment [922, 986, 0]"]
- 29["Segment [922, 986, 0]"]
- 30["Segment [922, 986, 0]"]
- 31["Segment [922, 986, 0]"]
- 32["Segment [922, 986, 0]"]
- 33["Segment [922, 986, 0]"]
- 34["Segment [922, 986, 0]"]
- 35["Segment [922, 986, 0]"]
- 36["Segment [922, 986, 0]"]
- 37["Segment [922, 986, 0]"]
- 38["Segment [922, 986, 0]"]
- 39["Segment [922, 986, 0]"]
- 40["Segment [922, 986, 0]"]
- 41["Segment [922, 986, 0]"]
- 42["Segment [922, 986, 0]"]
- 43["Segment [922, 986, 0]"]
- 44["Segment [922, 986, 0]"]
- 45["Segment [922, 986, 0]"]
- 46["Segment [922, 986, 0]"]
- 47["Segment [922, 986, 0]"]
- 48["Segment [922, 986, 0]"]
- 49["Segment [922, 986, 0]"]
- 50["Segment [922, 986, 0]"]
- 51["Segment [922, 986, 0]"]
- 52["Segment [1050, 1068, 0]"]
+ 2["Path [733, 769, 0]"]
+ 3["Segment [923, 987, 0]"]
+ 4["Segment [923, 987, 0]"]
+ 5["Segment [923, 987, 0]"]
+ 6["Segment [923, 987, 0]"]
+ 7["Segment [923, 987, 0]"]
+ 8["Segment [923, 987, 0]"]
+ 9["Segment [923, 987, 0]"]
+ 10["Segment [923, 987, 0]"]
+ 11["Segment [923, 987, 0]"]
+ 12["Segment [923, 987, 0]"]
+ 13["Segment [923, 987, 0]"]
+ 14["Segment [923, 987, 0]"]
+ 15["Segment [923, 987, 0]"]
+ 16["Segment [923, 987, 0]"]
+ 17["Segment [923, 987, 0]"]
+ 18["Segment [923, 987, 0]"]
+ 19["Segment [923, 987, 0]"]
+ 20["Segment [923, 987, 0]"]
+ 21["Segment [923, 987, 0]"]
+ 22["Segment [923, 987, 0]"]
+ 23["Segment [923, 987, 0]"]
+ 24["Segment [923, 987, 0]"]
+ 25["Segment [923, 987, 0]"]
+ 26["Segment [923, 987, 0]"]
+ 27["Segment [923, 987, 0]"]
+ 28["Segment [923, 987, 0]"]
+ 29["Segment [923, 987, 0]"]
+ 30["Segment [923, 987, 0]"]
+ 31["Segment [923, 987, 0]"]
+ 32["Segment [923, 987, 0]"]
+ 33["Segment [923, 987, 0]"]
+ 34["Segment [923, 987, 0]"]
+ 35["Segment [923, 987, 0]"]
+ 36["Segment [923, 987, 0]"]
+ 37["Segment [923, 987, 0]"]
+ 38["Segment [923, 987, 0]"]
+ 39["Segment [923, 987, 0]"]
+ 40["Segment [923, 987, 0]"]
+ 41["Segment [923, 987, 0]"]
+ 42["Segment [923, 987, 0]"]
+ 43["Segment [923, 987, 0]"]
+ 44["Segment [923, 987, 0]"]
+ 45["Segment [923, 987, 0]"]
+ 46["Segment [923, 987, 0]"]
+ 47["Segment [923, 987, 0]"]
+ 48["Segment [923, 987, 0]"]
+ 49["Segment [923, 987, 0]"]
+ 50["Segment [923, 987, 0]"]
+ 51["Segment [923, 987, 0]"]
+ 52["Segment [1051, 1069, 0]"]
53[Solid2d]
end
- 1["Plane [709, 726, 0]"]
- 54["Sweep Extrusion [1122, 1160, 0]"]
+ 1["Plane [710, 727, 0]"]
+ 54["Sweep Extrusion [1123, 1161, 0]"]
55[Wall]
56[Wall]
57[Wall]
diff --git a/rust/kcl-lib/tests/loop_tag/ast.snap b/rust/kcl-lib/tests/loop_tag/ast.snap
index 0e850230b..5b0641237 100644
--- a/rust/kcl-lib/tests/loop_tag/ast.snap
+++ b/rust/kcl-lib/tests/loop_tag/ast.snap
@@ -474,7 +474,8 @@ description: Result of parsing loop_tag.kcl
"name": "index",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/loop_tag/input.kcl b/rust/kcl-lib/tests/loop_tag/input.kcl
index 4e7af6ee5..c7e1f9f0c 100644
--- a/rust/kcl-lib/tests/loop_tag/input.kcl
+++ b/rust/kcl-lib/tests/loop_tag/input.kcl
@@ -12,7 +12,7 @@ numSides = 50
angleIncrement = 360 / numSides
// Function to calculate the coordinates of a point on the circle
-fn calculatePoint(index) {
+fn calculatePoint(@index) {
angle = index * angleIncrement
x = radius * cos(angle)
y = radius * sin(angle)
diff --git a/rust/kcl-lib/tests/loop_tag/program_memory.snap b/rust/kcl-lib/tests/loop_tag/program_memory.snap
index a7e15b8f4..8d588bce1 100644
--- a/rust/kcl-lib/tests/loop_tag/program_memory.snap
+++ b/rust/kcl-lib/tests/loop_tag/program_memory.snap
@@ -35,9 +35,9 @@ description: Variables in memory after executing loop_tag.kcl
0.0
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -60,9 +60,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -85,9 +85,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -110,9 +110,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -135,9 +135,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -160,9 +160,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -185,9 +185,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -210,9 +210,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -235,9 +235,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -260,9 +260,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -285,9 +285,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -310,9 +310,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -335,9 +335,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -360,9 +360,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -385,9 +385,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -410,9 +410,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -435,9 +435,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -460,9 +460,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -485,9 +485,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -510,9 +510,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -535,9 +535,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -560,9 +560,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -585,9 +585,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -610,9 +610,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -635,9 +635,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -660,9 +660,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -685,9 +685,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -710,9 +710,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -735,9 +735,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -760,9 +760,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -785,9 +785,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -810,9 +810,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -835,9 +835,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -860,9 +860,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -885,9 +885,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -910,9 +910,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -935,9 +935,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -960,9 +960,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -985,9 +985,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1010,9 +1010,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1035,9 +1035,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1060,9 +1060,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1085,9 +1085,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1110,9 +1110,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1135,9 +1135,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1160,9 +1160,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1185,9 +1185,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1210,9 +1210,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1235,9 +1235,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1343,9 +1343,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1356,9 +1356,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1369,9 +1369,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1382,9 +1382,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1395,9 +1395,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1408,9 +1408,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1421,9 +1421,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1434,9 +1434,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1447,9 +1447,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1460,9 +1460,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1473,9 +1473,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1486,9 +1486,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1499,9 +1499,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1512,9 +1512,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1525,9 +1525,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1538,9 +1538,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1551,9 +1551,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1564,9 +1564,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1577,9 +1577,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1590,9 +1590,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1603,9 +1603,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1616,9 +1616,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1629,9 +1629,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1642,9 +1642,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1655,9 +1655,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1668,9 +1668,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1681,9 +1681,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1694,9 +1694,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1707,9 +1707,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1720,9 +1720,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1733,9 +1733,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1746,9 +1746,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1759,9 +1759,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1772,9 +1772,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1785,9 +1785,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1798,9 +1798,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1811,9 +1811,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1824,9 +1824,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1837,9 +1837,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1850,9 +1850,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1863,9 +1863,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1876,9 +1876,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1889,9 +1889,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1902,9 +1902,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1915,9 +1915,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1928,9 +1928,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1941,9 +1941,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1954,9 +1954,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1967,9 +1967,9 @@ description: Variables in memory after executing loop_tag.kcl
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -1997,9 +1997,9 @@ description: Variables in memory after executing loop_tag.kcl
0.0
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2022,9 +2022,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2047,9 +2047,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2072,9 +2072,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2097,9 +2097,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2122,9 +2122,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2147,9 +2147,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2172,9 +2172,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2197,9 +2197,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2222,9 +2222,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2247,9 +2247,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2272,9 +2272,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2297,9 +2297,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2322,9 +2322,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2347,9 +2347,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2372,9 +2372,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2397,9 +2397,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2422,9 +2422,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2447,9 +2447,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2472,9 +2472,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2497,9 +2497,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2522,9 +2522,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2547,9 +2547,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2572,9 +2572,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2597,9 +2597,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2622,9 +2622,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2647,9 +2647,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2672,9 +2672,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2697,9 +2697,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2722,9 +2722,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2747,9 +2747,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2772,9 +2772,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2797,9 +2797,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2822,9 +2822,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2847,9 +2847,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2872,9 +2872,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2897,9 +2897,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2922,9 +2922,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2947,9 +2947,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2972,9 +2972,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -2997,9 +2997,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3022,9 +3022,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3047,9 +3047,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3072,9 +3072,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3097,9 +3097,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3122,9 +3122,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3147,9 +3147,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3172,9 +3172,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3197,9 +3197,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3317,9 +3317,9 @@ description: Variables in memory after executing loop_tag.kcl
0.0
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3342,9 +3342,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3367,9 +3367,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3392,9 +3392,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3417,9 +3417,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3442,9 +3442,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3467,9 +3467,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3492,9 +3492,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3517,9 +3517,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3542,9 +3542,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3567,9 +3567,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3592,9 +3592,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3617,9 +3617,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3642,9 +3642,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3667,9 +3667,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3692,9 +3692,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3717,9 +3717,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3742,9 +3742,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3767,9 +3767,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3792,9 +3792,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3817,9 +3817,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3842,9 +3842,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3867,9 +3867,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3892,9 +3892,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3917,9 +3917,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3942,9 +3942,9 @@ description: Variables in memory after executing loop_tag.kcl
158.9454
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3967,9 +3967,9 @@ description: Variables in memory after executing loop_tag.kcl
157.6921
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -3992,9 +3992,9 @@ description: Variables in memory after executing loop_tag.kcl
155.2052
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4017,9 +4017,9 @@ description: Variables in memory after executing loop_tag.kcl
151.524
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4042,9 +4042,9 @@ description: Variables in memory after executing loop_tag.kcl
146.7064
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4067,9 +4067,9 @@ description: Variables in memory after executing loop_tag.kcl
140.8286
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4092,9 +4092,9 @@ description: Variables in memory after executing loop_tag.kcl
133.9831
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4117,9 +4117,9 @@ description: Variables in memory after executing loop_tag.kcl
126.278
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4142,9 +4142,9 @@ description: Variables in memory after executing loop_tag.kcl
117.8347
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4167,9 +4167,9 @@ description: Variables in memory after executing loop_tag.kcl
108.7864
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4192,9 +4192,9 @@ description: Variables in memory after executing loop_tag.kcl
99.2759
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4217,9 +4217,9 @@ description: Variables in memory after executing loop_tag.kcl
89.453
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4242,9 +4242,9 @@ description: Variables in memory after executing loop_tag.kcl
79.4727
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4267,9 +4267,9 @@ description: Variables in memory after executing loop_tag.kcl
69.4925
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4292,9 +4292,9 @@ description: Variables in memory after executing loop_tag.kcl
59.6696
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4317,9 +4317,9 @@ description: Variables in memory after executing loop_tag.kcl
50.159
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4342,9 +4342,9 @@ description: Variables in memory after executing loop_tag.kcl
41.1107
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4367,9 +4367,9 @@ description: Variables in memory after executing loop_tag.kcl
32.6675
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4392,9 +4392,9 @@ description: Variables in memory after executing loop_tag.kcl
24.9623
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4417,9 +4417,9 @@ description: Variables in memory after executing loop_tag.kcl
18.1169
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4442,9 +4442,9 @@ description: Variables in memory after executing loop_tag.kcl
12.239
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4467,9 +4467,9 @@ description: Variables in memory after executing loop_tag.kcl
7.4215
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4492,9 +4492,9 @@ description: Variables in memory after executing loop_tag.kcl
3.7402
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
@@ -4517,9 +4517,9 @@ description: Variables in memory after executing loop_tag.kcl
1.2533
],
"tag": {
- "commentStart": 970,
- "end": 985,
- "start": 970,
+ "commentStart": 971,
+ "end": 986,
+ "start": 971,
"type": "TagDeclarator",
"value": "problematicTag"
},
diff --git a/rust/kcl-lib/tests/loop_tag/unparsed.snap b/rust/kcl-lib/tests/loop_tag/unparsed.snap
index 369b68bae..f85f36e00 100644
--- a/rust/kcl-lib/tests/loop_tag/unparsed.snap
+++ b/rust/kcl-lib/tests/loop_tag/unparsed.snap
@@ -19,7 +19,7 @@ numSides = 50
angleIncrement = 360 / numSides
// Function to calculate the coordinates of a point on the circle
-fn calculatePoint(index) {
+fn calculatePoint(@index) {
angle = index * angleIncrement
x = radius * cos(angle)
y = radius * sin(angle)
diff --git a/rust/kcl-lib/tests/misc/cube.kcl b/rust/kcl-lib/tests/misc/cube.kcl
new file mode 100644
index 000000000..af78b233d
--- /dev/null
+++ b/rust/kcl-lib/tests/misc/cube.kcl
@@ -0,0 +1,22 @@
+@settings(defaultLengthUnit = mm)
+
+fn cube(sideLength, center) {
+ l = sideLength / 2
+ x = center[0]
+ y = center[1]
+ p0 = [-l + x, -l + y]
+ p1 = [-l + x, l + y]
+ p2 = [l + x, l + y]
+ p3 = [l + x, -l + y]
+
+ return startSketchOn(XY)
+ |> startProfile(at = p0)
+ |> line(endAbsolute = p1)
+ |> line(endAbsolute = p2)
+ |> line(endAbsolute = p3)
+ |> line(endAbsolute = p0)
+ |> close()
+ |> extrude(length = sideLength)
+}
+
+myCube = cube(sideLength = 40, center = [0, 0])
diff --git a/rust/kcl-lib/tests/multi_transform/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/multi_transform/artifact_graph_flowchart.snap.md
index c2e0ce920..9f89ac3ca 100644
--- a/rust/kcl-lib/tests/multi_transform/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/multi_transform/artifact_graph_flowchart.snap.md
@@ -1,19 +1,19 @@
```mermaid
flowchart LR
subgraph path2 [Path]
- 2["Path [132, 157, 0]"]
+ 2["Path [133, 158, 0]"]
end
subgraph path3 [Path]
- 3["Path [163, 269, 0]"]
- 4["Segment [163, 269, 0]"]
- 5["Segment [163, 269, 0]"]
- 6["Segment [163, 269, 0]"]
- 7["Segment [163, 269, 0]"]
- 8["Segment [163, 269, 0]"]
+ 3["Path [164, 270, 0]"]
+ 4["Segment [164, 270, 0]"]
+ 5["Segment [164, 270, 0]"]
+ 6["Segment [164, 270, 0]"]
+ 7["Segment [164, 270, 0]"]
+ 8["Segment [164, 270, 0]"]
9[Solid2d]
end
- 1["Plane [109, 126, 0]"]
- 10["Sweep Extrusion [275, 294, 0]"]
+ 1["Plane [110, 127, 0]"]
+ 10["Sweep Extrusion [276, 295, 0]"]
11[Wall]
12[Wall]
13[Wall]
diff --git a/rust/kcl-lib/tests/multi_transform/ast.snap b/rust/kcl-lib/tests/multi_transform/ast.snap
index 2f5183e48..1763a21a7 100644
--- a/rust/kcl-lib/tests/multi_transform/ast.snap
+++ b/rust/kcl-lib/tests/multi_transform/ast.snap
@@ -223,7 +223,8 @@ description: Result of parsing multi_transform.kcl
"name": "i",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/multi_transform/input.kcl b/rust/kcl-lib/tests/multi_transform/input.kcl
index 351d57b37..d3b4679ac 100644
--- a/rust/kcl-lib/tests/multi_transform/input.kcl
+++ b/rust/kcl-lib/tests/multi_transform/input.kcl
@@ -1,4 +1,4 @@
-fn transform(i) {
+fn transform(@i) {
return [
{ translate = [30 * i, 0, 0] },
{ rotation = { angle = 45 * i } }
diff --git a/rust/kcl-lib/tests/multi_transform/unparsed.snap b/rust/kcl-lib/tests/multi_transform/unparsed.snap
index acc908239..68881b7f6 100644
--- a/rust/kcl-lib/tests/multi_transform/unparsed.snap
+++ b/rust/kcl-lib/tests/multi_transform/unparsed.snap
@@ -2,7 +2,7 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing multi_transform.kcl
---
-fn transform(i) {
+fn transform(@i) {
return [
{ translate = [30 * i, 0, 0] },
{ rotation = { angle = 45 * i } }
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_x0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_x0.png
deleted file mode 100644
index 5e10b3a04..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_x0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_y0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_y0.png
deleted file mode 100644
index 01ba6d038..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angle_to_match_length_y0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_x_length0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_x_length0.png
deleted file mode 100644
index c9a36c911..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_x_length0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_y_length0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_y_length0.png
deleted file mode 100644
index 7fe8900e6..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_of_y_length0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_x0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_x0.png
deleted file mode 100644
index 5c056bc06..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_x0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_y0.png b/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_y0.png
deleted file mode 100644
index c6d65c6bd..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_angled_line_to_y0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_gt0.png b/rust/kcl-lib/tests/outputs/serial_test_example_assert_gt0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_assert_gt0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_gte0.png b/rust/kcl-lib/tests/outputs/serial_test_example_assert_gte0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_assert_gte0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_lt0.png b/rust/kcl-lib/tests/outputs/serial_test_example_assert_lt0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_assert_lt0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_lte0.png b/rust/kcl-lib/tests/outputs/serial_test_example_assert_lte0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_assert_lte0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_order0.png b/rust/kcl-lib/tests/outputs/serial_test_example_assert_order0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_assert_order0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_atan0.png b/rust/kcl-lib/tests/outputs/serial_test_example_atan0.png
deleted file mode 100644
index b6db63cd5..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_atan0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_e0.png b/rust/kcl-lib/tests/outputs/serial_test_example_e0.png
deleted file mode 100644
index 5c79e062e..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_e0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-helix0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-helix0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-helix1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-helix1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-helix2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-helix2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-helix3.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix3.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-helix3.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-helix3.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-abs0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-abs0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-abs0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-abs0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-acos0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-acos0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-acos0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-acos0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-asin0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-asin0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-asin0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-asin0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-atan20.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-atan20.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-atan20.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-atan20.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-ceil0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-ceil0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-ceil0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-ceil0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-cos0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-cos0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-cos0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-cos0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-floor0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-floor0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-floor0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-floor0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-ln0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-ln0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-ln0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-ln0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-log0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-log0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-log100.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log100.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-log100.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log100.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-log20.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log20.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-log20.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-log20.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-max0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-max0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-max0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-max0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-min0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-min0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-min0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-min0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-polar0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-polar0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-polar0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-polar0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-pow0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-pow0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-pow0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-pow0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_Sketch1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-rem0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_Sketch1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-rem0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-round0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-round0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-round0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-round0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-sin0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-sin0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sqrt0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-sqrt0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-sqrt0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-sqrt0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-tan0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-tan0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-math-tan0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-math-tan0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane3.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane3.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane3.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane3.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane4.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane4.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-offsetPlane4.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-offsetPlane4.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve10.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve10.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve10.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve10.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve11.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve11.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve11.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve11.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve12.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve12.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve12.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve12.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve3.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve3.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve3.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve3.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve4.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve4.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve4.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve4.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve5.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve5.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve5.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve5.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve6.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve6.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve6.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve6.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve7.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve7.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve7.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve7.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve8.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve8.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve8.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve8.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve9.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve9.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-revolve9.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-revolve9.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_circle0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-circle0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_circle0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-circle0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_circle1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-circle1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_circle1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-circle1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d3.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d3.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d3.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d3.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d4.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d4.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-mirror2d4.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-sketch-mirror2d4.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-chamfer0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-chamfer0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-chamfer0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-chamfer0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-chamfer1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-chamfer1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-chamfer1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-chamfer1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-fillet0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-fillet0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-fillet0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-fillet0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-fillet1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-fillet1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-fillet1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-fillet1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_Solid0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_Solid0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-hollow2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell1.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell2.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell2.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell2.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell2.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell3.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell3.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell3.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell3.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell4.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell4.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell4.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell4.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell5.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell5.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell5.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell5.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell6.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell6.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-shell6.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-solid-shell6.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-units-toDegrees0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-units-toDegrees0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-units-toDegrees0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-units-toDegrees0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-units-toRadians0.png b/rust/kcl-lib/tests/outputs/serial_test_example_fn_std-units-toRadians0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-units-toRadians0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_fn_std-units-toRadians0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_cm0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_cm0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_cm0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_ft0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_ft0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_ft0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_inches0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_inches0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_inches0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_m0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_m0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_m0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_mm0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_mm0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_mm0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_from_yd0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_yd0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_from_yd0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_get_edge0.png b/rust/kcl-lib/tests/outputs/serial_test_example_get_edge0.png
deleted file mode 100644
index 314ce69ad..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_get_edge0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_get_extrude_wall_transform0.png b/rust/kcl-lib/tests/outputs/serial_test_example_get_extrude_wall_transform0.png
deleted file mode 100644
index ba35d22dc..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_get_extrude_wall_transform0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_hole0.png b/rust/kcl-lib/tests/outputs/serial_test_example_hole0.png
deleted file mode 100644
index 29c490844..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_hole0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_hole1.png b/rust/kcl-lib/tests/outputs/serial_test_example_hole1.png
deleted file mode 100644
index 399c5e7c4..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_hole1.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import0.png b/rust/kcl-lib/tests/outputs/serial_test_example_import0.png
deleted file mode 100644
index c38b6868d..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import1.png b/rust/kcl-lib/tests/outputs/serial_test_example_import1.png
deleted file mode 100644
index 74b7216c1..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import1.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import2.png b/rust/kcl-lib/tests/outputs/serial_test_example_import2.png
deleted file mode 100644
index 9a8ab9c3c..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import2.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import3.png b/rust/kcl-lib/tests/outputs/serial_test_example_import3.png
deleted file mode 100644
index fdb439990..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import3.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import4.png b/rust/kcl-lib/tests/outputs/serial_test_example_import4.png
deleted file mode 100644
index 987fba8e6..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import4.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_import5.png b/rust/kcl-lib/tests/outputs/serial_test_example_import5.png
deleted file mode 100644
index 4e87e466c..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_import5.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_int0.png b/rust/kcl-lib/tests/outputs/serial_test_example_int0.png
deleted file mode 100644
index c566903b3..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_int0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_line1.png b/rust/kcl-lib/tests/outputs/serial_test_example_line1.png
deleted file mode 100644
index 77183632e..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_line1.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_line_to0.png b/rust/kcl-lib/tests/outputs/serial_test_example_line_to0.png
deleted file mode 100644
index b7311cc65..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_line_to0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_pi0.png b/rust/kcl-lib/tests/outputs/serial_test_example_pi0.png
deleted file mode 100644
index 971c03c9d..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_pi0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at0.png b/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at0.png
deleted file mode 100644
index a7cbc75e1..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at1.png b/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at1.png
deleted file mode 100644
index d6e57761f..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at1.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at2.png b/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at2.png
deleted file mode 100644
index 6362e805d..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_start_profile_at2.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-rem0.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-math-rem0.png
deleted file mode 100644
index 6148ae432..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-rem0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle0.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle0.png
deleted file mode 100644
index 5bd912447..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle1.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle1.png
deleted file mode 100644
index b085a4fc5..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_std-sketch-circle1.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_tau0.png b/rust/kcl-lib/tests/outputs/serial_test_example_tau0.png
deleted file mode 100644
index de171cb67..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_tau0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_Sketch0.png b/rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Sketch0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_Sketch0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Sketch0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_Solid1.png b/rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Sketch1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_Solid1.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Sketch1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow0.png b/rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Solid0.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_std-solid-hollow0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Solid0.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_assert_equal0.png b/rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Solid1.png
similarity index 100%
rename from rust/kcl-lib/tests/outputs/serial_test_example_assert_equal0.png
rename to rust/kcl-lib/tests/outputs/serial_test_example_ty_std-types-Solid1.png
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_x_line_to0.png b/rust/kcl-lib/tests/outputs/serial_test_example_x_line_to0.png
deleted file mode 100644
index 0494b56e1..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_x_line_to0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_y_line_to0.png b/rust/kcl-lib/tests/outputs/serial_test_example_y_line_to0.png
deleted file mode 100644
index 9282b8117..000000000
Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_y_line_to0.png and /dev/null differ
diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md
index ed49e32e2..3aab9389e 100644
--- a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md
@@ -9,21 +9,21 @@ flowchart LR
subgraph path5 [Path]
5["Path [409, 460, 0]"]
10["Segment [468, 582, 0]"]
- 13["Segment [590, 598, 0]"]
+ 13["Segment [590, 597, 0]"]
14[Solid2d]
end
subgraph path6 [Path]
6["Path [409, 460, 0]"]
11["Segment [468, 582, 0]"]
- 12["Segment [590, 598, 0]"]
+ 12["Segment [590, 597, 0]"]
15[Solid2d]
end
1["Plane [73, 90, 0]"]
2["StartSketchOnFace [372, 401, 0]"]
3["StartSketchOnFace [372, 401, 0]"]
16["Sweep Extrusion [309, 341, 0]"]
- 17["Sweep Extrusion [641, 669, 0]"]
- 18["Sweep Extrusion [841, 869, 0]"]
+ 17["Sweep Extrusion [651, 679, 0]"]
+ 18["Sweep Extrusion [862, 890, 0]"]
19[Wall]
20[Wall]
21[Wall]
@@ -43,10 +43,10 @@ flowchart LR
35["SweepEdge Adjacent"]
36["SweepEdge Adjacent"]
37["SweepEdge Adjacent"]
- 38["EdgeCut Fillet [675, 802, 0]"]
- 39["EdgeCut Fillet [675, 802, 0]"]
- 40["EdgeCut Fillet [875, 1002, 0]"]
- 41["EdgeCut Fillet [875, 1002, 0]"]
+ 38["EdgeCut Fillet [685, 812, 0]"]
+ 39["EdgeCut Fillet [685, 812, 0]"]
+ 40["EdgeCut Fillet [896, 1023, 0]"]
+ 41["EdgeCut Fillet [896, 1023, 0]"]
1 --- 4
22 x--> 2
23 x--> 3
diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap
index b865ec7ed..d929e89a9 100644
--- a/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap
+++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap
@@ -917,15 +917,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl
"unlabeled": null
},
{
- "arguments": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
- }
- ],
+ "arguments": [],
"callee": {
"abs_path": false,
"commentStart": 0,
@@ -1017,40 +1009,60 @@ description: Result of parsing pentagon_fillet_sugar.kcl
"init": {
"arguments": [
{
- "argument": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "raw": "200",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 200.0,
- "suffix": "None"
- }
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "c",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "argument": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "200",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 200.0,
+ "suffix": "None"
+ }
+ },
+ "commentStart": 0,
+ "end": 0,
+ "operator": "-",
+ "start": 0,
+ "type": "UnaryExpression",
+ "type": "UnaryExpression"
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "face",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "c",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -1071,8 +1083,9 @@ description: Result of parsing pentagon_fillet_sugar.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -1365,32 +1378,52 @@ description: Result of parsing pentagon_fillet_sugar.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "end": 0,
- "raw": "200",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 200.0,
- "suffix": "None"
- }
- },
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
+ "type": "LabeledArg",
+ "label": {
"commentStart": 0,
"end": 0,
- "name": "a",
+ "name": "x",
"start": 0,
"type": "Identifier"
},
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "200",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 200.0,
+ "suffix": "None"
+ }
+ }
+ },
+ {
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "face",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "abs_path": false,
+ "commentStart": 0,
+ "end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "a",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
+ "start": 0,
+ "type": "Name",
+ "type": "Name"
+ }
}
],
"callee": {
@@ -1411,8 +1444,9 @@ description: Result of parsing pentagon_fillet_sugar.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl b/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl
index 720347125..dad2bc07e 100644
--- a/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl
+++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl
@@ -19,10 +19,10 @@ fn circl(x, face) {
radius = radius,
tag = $arc_tag,
)
- |> close(%)
+ |> close()
}
-c1 = circl(-200, c)
+c1 = circl(x = -200, face = c)
plumbus1 = c1
|> extrude(length = plumbusLen)
|> fillet(
@@ -32,7 +32,7 @@ plumbus1 = c1
getOppositeEdge(c1.tags.arc_tag)
],
)
-c2 = circl(200, a)
+c2 = circl(x = 200, face = a)
plumbus0 = c2
|> extrude(length = plumbusLen)
|> fillet(
diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap
index 9317b7b70..47015bc73 100644
--- a/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap
+++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap
@@ -105,7 +105,32 @@ description: Operations executed pentagon_fillet_sugar.kcl
"name": "circl",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "face": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "c",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": -200.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -197,7 +222,32 @@ description: Operations executed pentagon_fillet_sugar.kcl
"name": "circl",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "face": {
+ "value": {
+ "type": "TagIdentifier",
+ "value": "a",
+ "artifact_id": "[uuid]"
+ },
+ "sourceRange": []
+ },
+ "x": {
+ "value": {
+ "type": "Number",
+ "value": 200.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap
index ad50e8395..fc3e30d85 100644
--- a/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap
+++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap
@@ -23,10 +23,10 @@ fn circl(x, face) {
radius = radius,
tag = $arc_tag,
)
- |> close(%)
+ |> close()
}
-c1 = circl(-200, c)
+c1 = circl(x = -200, face = c)
plumbus1 = c1
|> extrude(length = plumbusLen)
|> fillet(
@@ -36,7 +36,7 @@ plumbus1 = c1
getOppositeEdge(c1.tags.arc_tag)
],
)
-c2 = circl(200, a)
+c2 = circl(x = 200, face = a)
plumbus0 = c2
|> extrude(length = plumbusLen)
|> fillet(
diff --git a/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap b/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap
index 58df7301f..52128f84d 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap
+++ b/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap
@@ -28,388 +28,5 @@ description: Artifact commands pipe_as_arg.kcl
"object_id": "[uuid]",
"hidden": true
}
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "make_plane",
- "origin": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "x_axis": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0
- },
- "y_axis": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0
- },
- "size": 60.0,
- "clobber": false,
- "hide": true
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "enable_sketch_mode",
- "entity_id": "[uuid]",
- "ortho": false,
- "animated": false,
- "adjust_camera": false,
- "planar_normal": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "move_path_pen",
- "path": "[uuid]",
- "to": {
- "x": -200.0,
- "y": -200.0,
- "z": 0.0
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "sketch_mode_disable"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "start_path"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "extend_path",
- "path": "[uuid]",
- "segment": {
- "type": "line",
- "end": {
- "x": -200.0,
- "y": 200.0,
- "z": 0.0
- },
- "relative": false
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "extend_path",
- "path": "[uuid]",
- "segment": {
- "type": "line",
- "end": {
- "x": 200.0,
- "y": 200.0,
- "z": 0.0
- },
- "relative": false
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "extend_path",
- "path": "[uuid]",
- "segment": {
- "type": "line",
- "end": {
- "x": 200.0,
- "y": -200.0,
- "z": 0.0
- },
- "relative": false
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "extend_path",
- "path": "[uuid]",
- "segment": {
- "type": "line",
- "end": {
- "x": -200.0,
- "y": -200.0,
- "z": 0.0
- },
- "relative": false
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "close_path",
- "path_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "enable_sketch_mode",
- "entity_id": "[uuid]",
- "ortho": false,
- "animated": false,
- "adjust_camera": false,
- "planar_normal": {
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- }
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "extrude",
- "target": "[uuid]",
- "distance": 400.0,
- "faces": null,
- "opposite": "None"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "object_bring_to_front",
- "object_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "sketch_mode_disable"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_all_edge_faces",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_extrusion_face_info",
- "object_id": "[uuid]",
- "edge_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_next_adjacent_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_next_adjacent_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_next_adjacent_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_next_adjacent_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_opposite_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_opposite_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_opposite_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
- },
- {
- "cmdId": "[uuid]",
- "range": [],
- "command": {
- "type": "solid3d_get_opposite_edge",
- "object_id": "[uuid]",
- "edge_id": "[uuid]",
- "face_id": "[uuid]"
- }
}
]
diff --git a/rust/kcl-lib/tests/pipe_as_arg/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/pipe_as_arg/artifact_graph_flowchart.snap.md
index 745561a19..13e533509 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/pipe_as_arg/artifact_graph_flowchart.snap.md
@@ -1,82 +1,3 @@
```mermaid
flowchart LR
- subgraph path2 [Path]
- 2["Path [202, 223, 0]"]
- 3["Segment [231, 253, 0]"]
- 4["Segment [261, 283, 0]"]
- 5["Segment [291, 313, 0]"]
- 6["Segment [321, 343, 0]"]
- 7["Segment [351, 359, 0]"]
- 8[Solid2d]
- end
- 1["Plane [177, 194, 0]"]
- 9["Sweep Extrusion [367, 391, 0]"]
- 10[Wall]
- 11[Wall]
- 12[Wall]
- 13[Wall]
- 14["Cap Start"]
- 15["Cap End"]
- 16["SweepEdge Opposite"]
- 17["SweepEdge Opposite"]
- 18["SweepEdge Opposite"]
- 19["SweepEdge Opposite"]
- 20["SweepEdge Adjacent"]
- 21["SweepEdge Adjacent"]
- 22["SweepEdge Adjacent"]
- 23["SweepEdge Adjacent"]
- 1 --- 2
- 2 --- 3
- 2 --- 4
- 2 --- 5
- 2 --- 6
- 2 --- 7
- 2 --- 8
- 2 ---- 9
- 3 --- 13
- 3 x--> 14
- 3 --- 17
- 3 --- 20
- 4 --- 11
- 4 x--> 14
- 4 --- 18
- 4 --- 22
- 5 --- 10
- 5 x--> 14
- 5 --- 19
- 5 --- 21
- 6 --- 12
- 6 x--> 14
- 6 --- 16
- 6 --- 23
- 9 --- 10
- 9 --- 11
- 9 --- 12
- 9 --- 13
- 9 --- 14
- 9 --- 15
- 9 --- 16
- 9 --- 17
- 9 --- 18
- 9 --- 19
- 9 --- 20
- 9 --- 21
- 9 --- 22
- 9 --- 23
- 19 <--x 10
- 21 <--x 10
- 22 <--x 10
- 18 <--x 11
- 20 <--x 11
- 22 <--x 11
- 16 <--x 12
- 21 <--x 12
- 23 <--x 12
- 17 <--x 13
- 20 <--x 13
- 23 <--x 13
- 16 <--x 15
- 17 <--x 15
- 18 <--x 15
- 19 <--x 15
```
diff --git a/rust/kcl-lib/tests/pipe_as_arg/ast.snap b/rust/kcl-lib/tests/pipe_as_arg/ast.snap
index 06d8a6239..5f979a357 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/ast.snap
+++ b/rust/kcl-lib/tests/pipe_as_arg/ast.snap
@@ -20,1019 +20,22 @@ description: Result of parsing pipe_as_arg.kcl
"init": {
"body": {
"body": [
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "length",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "/",
- "right": {
- "commentStart": 0,
- "end": 0,
- "raw": "2",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 2.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "x",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "center",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "y",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "computed": false,
- "end": 0,
- "object": {
- "commentStart": 0,
- "end": 0,
- "name": "center",
- "start": 0,
- "type": "Identifier",
- "type": "Identifier"
- },
- "property": {
- "commentStart": 0,
- "end": 0,
- "raw": "1",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 1.0,
- "suffix": "None"
- }
- },
- "start": 0,
- "type": "MemberExpression",
- "type": "MemberExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "p0",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "x",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "y",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "p1",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "x",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "y",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "p2",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "x",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "y",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
- {
- "commentStart": 0,
- "declaration": {
- "commentStart": 0,
- "end": 0,
- "id": {
- "commentStart": 0,
- "end": 0,
- "name": "p3",
- "start": 0,
- "type": "Identifier"
- },
- "init": {
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "x",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- },
- {
- "commentStart": 0,
- "end": 0,
- "left": {
- "argument": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "l",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "operator": "-",
- "start": 0,
- "type": "UnaryExpression",
- "type": "UnaryExpression"
- },
- "operator": "+",
- "right": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "y",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- },
- "start": 0,
- "type": "BinaryExpression",
- "type": "BinaryExpression"
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
- },
- "start": 0,
- "type": "VariableDeclarator"
- },
- "end": 0,
- "kind": "const",
- "start": 0,
- "type": "VariableDeclaration",
- "type": "VariableDeclaration"
- },
{
"argument": {
- "body": [
- {
- "arguments": [
- {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "XY",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "startSketchOn",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "at",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "p0",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "startProfile",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "p1",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "p2",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "p3",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "endAbsolute",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "p0",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "line",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- },
- {
- "arguments": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "close",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- },
- {
- "arguments": [
- {
- "type": "LabeledArg",
- "label": {
- "commentStart": 0,
- "end": 0,
- "name": "length",
- "start": 0,
- "type": "Identifier"
- },
- "arg": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "length",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name",
- "type": "Name"
- }
- }
- ],
- "callee": {
- "abs_path": false,
- "commentStart": 0,
- "end": 0,
- "name": {
- "commentStart": 0,
- "end": 0,
- "name": "extrude",
- "start": 0,
- "type": "Identifier"
- },
- "path": [],
- "start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpressionKw",
- "type": "CallExpressionKw",
- "unlabeled": null
- }
- ],
+ "abs_path": false,
"commentStart": 0,
"end": 0,
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "PipeExpression",
- "type": "PipeExpression"
+ "type": "Name",
+ "type": "Name"
},
"commentStart": 0,
"end": 0,
@@ -1043,22 +46,6 @@ description: Result of parsing pipe_as_arg.kcl
],
"commentStart": 0,
"end": 0,
- "nonCodeMeta": {
- "nonCodeNodes": {
- "6": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "NonCodeNode",
- "value": {
- "type": "newLine"
- }
- }
- ]
- },
- "startNodes": []
- },
"start": 0
},
"commentStart": 0,
@@ -1172,7 +159,8 @@ description: Result of parsing pipe_as_arg.kcl
"name": "x",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
@@ -1258,89 +246,109 @@ description: Result of parsing pipe_as_arg.kcl
"init": {
"arguments": [
{
- "body": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "200",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 200.0,
- "suffix": "None"
- }
- },
- {
- "arguments": [
- {
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "PipeSubstitution",
- "type": "PipeSubstitution"
- }
- ],
- "callee": {
- "abs_path": false,
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "length",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "body": [
+ {
"commentStart": 0,
"end": 0,
- "name": {
+ "raw": "200",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 200.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "arguments": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "PipeSubstitution",
+ "type": "PipeSubstitution"
+ }
+ ],
+ "callee": {
+ "abs_path": false,
"commentStart": 0,
"end": 0,
- "name": "double",
+ "name": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "double",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "path": [],
"start": 0,
- "type": "Identifier"
+ "type": "Name"
},
- "path": [],
+ "commentStart": 0,
+ "end": 0,
"start": 0,
- "type": "Name"
- },
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
- }
- ],
- "commentStart": 0,
- "end": 0,
- "start": 0,
- "type": "PipeExpression",
- "type": "PipeExpression"
+ "type": "CallExpression",
+ "type": "CallExpression"
+ }
+ ],
+ "commentStart": 0,
+ "end": 0,
+ "start": 0,
+ "type": "PipeExpression",
+ "type": "PipeExpression"
+ }
},
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
@@ -1361,8 +369,9 @@ description: Result of parsing pipe_as_arg.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/pipe_as_arg/input.kcl b/rust/kcl-lib/tests/pipe_as_arg/input.kcl
index 5cbd93152..c5b42be62 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/input.kcl
+++ b/rust/kcl-lib/tests/pipe_as_arg/input.kcl
@@ -1,28 +1,12 @@
fn cube(length, center) {
- l = length / 2
- x = center[0]
- y = center[1]
- p0 = [-l + x, -l + y]
- p1 = [-l + x, l + y]
- p2 = [l + x, l + y]
- p3 = [l + x, -l + y]
-
- return startSketchOn(XY)
- |> startProfile(at = p0)
- |> line(endAbsolute = p1)
- |> line(endAbsolute = p2)
- |> line(endAbsolute = p3)
- |> line(endAbsolute = p0)
- |> close(%)
- |> extrude(length = length)
+ return length
}
-fn double(x) {
+fn double(@x) {
return x * 2
}
fn width() {
return 200
}
-myCube = cube(200
- |> double(%), [0, 0])
+myCube = cube(length = 200 |> double(%), center = [0, 0])
diff --git a/rust/kcl-lib/tests/pipe_as_arg/ops.snap b/rust/kcl-lib/tests/pipe_as_arg/ops.snap
index 732e831e2..20141fb5a 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/ops.snap
+++ b/rust/kcl-lib/tests/pipe_as_arg/ops.snap
@@ -3,53 +3,6 @@ source: kcl-lib/src/simulation_tests.rs
description: Operations executed pipe_as_arg.kcl
---
[
- {
- "labeledArgs": {
- "planeOrSolid": {
- "value": {
- "type": "Plane",
- "artifact_id": "[uuid]"
- },
- "sourceRange": []
- }
- },
- "name": "startSketchOn",
- "sourceRange": [],
- "type": "StdLibCall",
- "unlabeledArg": null
- },
- {
- "labeledArgs": {
- "length": {
- "value": {
- "type": "Number",
- "value": 400.0,
- "ty": {
- "type": "Default",
- "len": {
- "type": "Mm"
- },
- "angle": {
- "type": "Degrees"
- }
- }
- },
- "sourceRange": []
- }
- },
- "name": "extrude",
- "sourceRange": [],
- "type": "StdLibCall",
- "unlabeledArg": {
- "value": {
- "type": "Sketch",
- "value": {
- "artifactId": "[uuid]"
- }
- },
- "sourceRange": []
- }
- },
{
"type": "GroupBegin",
"group": {
@@ -57,7 +10,58 @@ description: Operations executed pipe_as_arg.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "center": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "length": {
+ "value": {
+ "type": "Number",
+ "value": 400.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap b/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap
index 03a287531..4aba2f8a9 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap
+++ b/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap
@@ -10,202 +10,16 @@ description: Variables in memory after executing pipe_as_arg.kcl
"type": "Function"
},
"myCube": {
- "type": "Solid",
- "value": {
- "type": "Solid",
- "id": "[uuid]",
- "artifactId": "[uuid]",
- "value": [
- {
- "faceId": "[uuid]",
- "id": "[uuid]",
- "sourceRange": [],
- "tag": null,
- "type": "extrudePlane"
- },
- {
- "faceId": "[uuid]",
- "id": "[uuid]",
- "sourceRange": [],
- "tag": null,
- "type": "extrudePlane"
- },
- {
- "faceId": "[uuid]",
- "id": "[uuid]",
- "sourceRange": [],
- "tag": null,
- "type": "extrudePlane"
- },
- {
- "faceId": "[uuid]",
- "id": "[uuid]",
- "sourceRange": [],
- "tag": null,
- "type": "extrudePlane"
- }
- ],
- "sketch": {
- "type": "Sketch",
- "id": "[uuid]",
- "paths": [
- {
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- },
- "from": [
- -200.0,
- -200.0
- ],
- "tag": null,
- "to": [
- -200.0,
- 200.0
- ],
- "type": "ToPoint",
- "units": {
- "type": "Mm"
- }
- },
- {
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- },
- "from": [
- -200.0,
- 200.0
- ],
- "tag": null,
- "to": [
- 200.0,
- 200.0
- ],
- "type": "ToPoint",
- "units": {
- "type": "Mm"
- }
- },
- {
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- },
- "from": [
- 200.0,
- 200.0
- ],
- "tag": null,
- "to": [
- 200.0,
- -200.0
- ],
- "type": "ToPoint",
- "units": {
- "type": "Mm"
- }
- },
- {
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- },
- "from": [
- 200.0,
- -200.0
- ],
- "tag": null,
- "to": [
- -200.0,
- -200.0
- ],
- "type": "ToPoint",
- "units": {
- "type": "Mm"
- }
- },
- {
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- },
- "from": [
- -200.0,
- -200.0
- ],
- "tag": null,
- "to": [
- -200.0,
- -200.0
- ],
- "type": "ToPoint",
- "units": {
- "type": "Mm"
- }
- }
- ],
- "on": {
- "artifactId": "[uuid]",
- "id": "[uuid]",
- "origin": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0,
- "units": {
- "type": "Mm"
- }
- },
- "type": "plane",
- "value": "XY",
- "xAxis": {
- "x": 1.0,
- "y": 0.0,
- "z": 0.0,
- "units": {
- "type": "Unknown"
- }
- },
- "yAxis": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0,
- "units": {
- "type": "Unknown"
- }
- }
- },
- "start": {
- "from": [
- -200.0,
- -200.0
- ],
- "to": [
- -200.0,
- -200.0
- ],
- "units": {
- "type": "Mm"
- },
- "tag": null,
- "__geoMeta": {
- "id": "[uuid]",
- "sourceRange": []
- }
- },
- "artifactId": "[uuid]",
- "originalId": "[uuid]",
- "units": {
- "type": "Mm"
- }
- },
- "height": 400.0,
- "startCapId": "[uuid]",
- "endCapId": "[uuid]",
- "units": {
+ "type": "Number",
+ "value": 400.0,
+ "ty": {
+ "type": "Default",
+ "len": {
"type": "Mm"
},
- "sectional": false
+ "angle": {
+ "type": "Degrees"
+ }
}
},
"width": {
diff --git a/rust/kcl-lib/tests/pipe_as_arg/rendered_model.png b/rust/kcl-lib/tests/pipe_as_arg/rendered_model.png
index 0a12783a0..6148ae432 100644
Binary files a/rust/kcl-lib/tests/pipe_as_arg/rendered_model.png and b/rust/kcl-lib/tests/pipe_as_arg/rendered_model.png differ
diff --git a/rust/kcl-lib/tests/pipe_as_arg/unparsed.snap b/rust/kcl-lib/tests/pipe_as_arg/unparsed.snap
index 750543f10..f8dc9d574 100644
--- a/rust/kcl-lib/tests/pipe_as_arg/unparsed.snap
+++ b/rust/kcl-lib/tests/pipe_as_arg/unparsed.snap
@@ -3,30 +3,18 @@ source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing pipe_as_arg.kcl
---
fn cube(length, center) {
- l = length / 2
- x = center[0]
- y = center[1]
- p0 = [-l + x, -l + y]
- p1 = [-l + x, l + y]
- p2 = [l + x, l + y]
- p3 = [l + x, -l + y]
-
- return startSketchOn(XY)
- |> startProfile(at = p0)
- |> line(endAbsolute = p1)
- |> line(endAbsolute = p2)
- |> line(endAbsolute = p3)
- |> line(endAbsolute = p0)
- |> close(%)
- |> extrude(length = length)
+ return length
}
-fn double(x) {
+fn double(@x) {
return x * 2
}
fn width() {
return 200
}
-myCube = cube(200
- |> double(%), [0, 0])
+myCube = cube(
+ length = 200
+ |> double(%),
+ center = [0, 0],
+)
diff --git a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap
index dc6339e0d..95d4a68f6 100644
--- a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap
+++ b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap
@@ -50,7 +50,8 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip
"name": "ignored",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/input.kcl b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/input.kcl
index b56efda1f..5b31ef8db 100644
--- a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/input.kcl
+++ b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/input.kcl
@@ -1,5 +1,5 @@
// Make sure pipe value doesn't leak into the function call.
-fn f(ignored) {
+fn f(@ignored) {
return %
}
diff --git a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/unparsed.snap b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/unparsed.snap
index 0aaa2fa15..b0ff74f85 100644
--- a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/unparsed.snap
+++ b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/unparsed.snap
@@ -3,7 +3,7 @@ source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing pipe_substitution_inside_function_called_from_pipeline.kcl
---
// Make sure pipe value doesn't leak into the function call.
-fn f(ignored) {
+fn f(@ignored) {
return %
}
diff --git a/rust/kcl-lib/tests/riddle_small/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/riddle_small/artifact_graph_flowchart.snap.md
index b248f75f4..296b2c9e9 100644
--- a/rust/kcl-lib/tests/riddle_small/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/riddle_small/artifact_graph_flowchart.snap.md
@@ -1,15 +1,15 @@
```mermaid
flowchart LR
subgraph path2 [Path]
- 2["Path [164, 191, 0]"]
- 3["Segment [197, 215, 0]"]
- 4["Segment [221, 240, 0]"]
- 5["Segment [246, 265, 0]"]
- 6["Segment [271, 279, 0]"]
+ 2["Path [165, 192, 0]"]
+ 3["Segment [198, 216, 0]"]
+ 4["Segment [222, 241, 0]"]
+ 5["Segment [247, 266, 0]"]
+ 6["Segment [272, 280, 0]"]
7[Solid2d]
end
- 1["Plane [141, 158, 0]"]
- 8["Sweep Extrusion [285, 304, 0]"]
+ 1["Plane [142, 159, 0]"]
+ 8["Sweep Extrusion [286, 305, 0]"]
9[Wall]
10[Wall]
11[Wall]
diff --git a/rust/kcl-lib/tests/riddle_small/ast.snap b/rust/kcl-lib/tests/riddle_small/ast.snap
index 29c7ad0f3..1c953c41b 100644
--- a/rust/kcl-lib/tests/riddle_small/ast.snap
+++ b/rust/kcl-lib/tests/riddle_small/ast.snap
@@ -156,7 +156,8 @@ description: Result of parsing riddle_small.kcl
"name": "s",
"start": 0,
"type": "Identifier"
- }
+ },
+ "labeled": false
}
],
"start": 0,
diff --git a/rust/kcl-lib/tests/riddle_small/input.kcl b/rust/kcl-lib/tests/riddle_small/input.kcl
index eb583ecf8..5cea48d30 100644
--- a/rust/kcl-lib/tests/riddle_small/input.kcl
+++ b/rust/kcl-lib/tests/riddle_small/input.kcl
@@ -1,6 +1,6 @@
ANSWER = 41803
-fn t(s) {
+fn t(@s) {
return (ANSWER * s + 12345) % 214748
}
diff --git a/rust/kcl-lib/tests/riddle_small/unparsed.snap b/rust/kcl-lib/tests/riddle_small/unparsed.snap
index 961ad1c39..5f6b74abd 100644
--- a/rust/kcl-lib/tests/riddle_small/unparsed.snap
+++ b/rust/kcl-lib/tests/riddle_small/unparsed.snap
@@ -4,7 +4,7 @@ description: Result of unparsing riddle_small.kcl
---
ANSWER = 41803
-fn t(s) {
+fn t(@s) {
return (ANSWER * s + 12345) % 214748
}
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md
index 88f9fc92b..a7e8e0d35 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md
@@ -5,18 +5,18 @@ flowchart LR
5["Segment [84, 106, 0]"]
6["Segment [114, 136, 0]"]
7["Segment [144, 167, 0]"]
- 8["Segment [215, 223, 0]"]
+ 8["Segment [229, 237, 0]"]
11[Solid2d]
end
subgraph path4 [Path]
- 4["Path [303, 355, 0]"]
- 9["Segment [303, 355, 0]"]
+ 4["Path [317, 369, 0]"]
+ 9["Segment [317, 369, 0]"]
10[Solid2d]
end
1["Plane [29, 46, 0]"]
- 2["StartSketchOnFace [261, 297, 0]"]
- 12["Sweep Extrusion [229, 249, 0]"]
- 13["Sweep Extrusion [361, 380, 0]"]
+ 2["StartSketchOnFace [275, 311, 0]"]
+ 12["Sweep Extrusion [243, 263, 0]"]
+ 13["Sweep Extrusion [375, 394, 0]"]
14[Wall]
15[Wall]
16[Wall]
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap
index 6b2ff86d1..aa6d387f5 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap
@@ -463,48 +463,68 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "20",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 20.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "20",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 20.0,
+ "suffix": "None"
+ }
}
}
],
@@ -526,8 +546,9 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl
index faac37e54..ac8c9089a 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap
index b70f3e7c6..66ecbd489 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap
@@ -25,7 +25,58 @@ description: Operations executed sketch_on_face_circle_tagged.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap
index 2a979002b..1db537253 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap
@@ -203,9 +203,9 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc
"id": "[uuid]",
"sourceRange": [],
"tag": {
- "commentStart": 345,
- "end": 354,
- "start": 345,
+ "commentStart": 359,
+ "end": 368,
+ "start": 359,
"type": "TagDeclarator",
"value": "myCircle"
},
@@ -232,9 +232,9 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc
],
"radius": 5.0,
"tag": {
- "commentStart": 345,
- "end": 354,
- "start": 345,
+ "commentStart": 359,
+ "end": 368,
+ "start": 359,
"type": "TagDeclarator",
"value": "myCircle"
},
diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap
index a96849a0e..6511b57ef 100644
--- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap
@@ -11,7 +11,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md
index d083432d7..a0d64a832 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md
@@ -5,21 +5,21 @@ flowchart LR
5["Segment [84, 106, 0]"]
6["Segment [114, 136, 0]"]
7["Segment [144, 167, 0]"]
- 8["Segment [215, 223, 0]"]
+ 8["Segment [229, 237, 0]"]
14[Solid2d]
end
subgraph path4 [Path]
- 4["Path [303, 328, 0]"]
- 9["Segment [334, 353, 0]"]
- 10["Segment [359, 378, 0]"]
- 11["Segment [384, 404, 0]"]
- 12["Segment [410, 418, 0]"]
+ 4["Path [317, 342, 0]"]
+ 9["Segment [348, 367, 0]"]
+ 10["Segment [373, 392, 0]"]
+ 11["Segment [398, 418, 0]"]
+ 12["Segment [424, 432, 0]"]
13[Solid2d]
end
1["Plane [29, 46, 0]"]
- 2["StartSketchOnFace [261, 297, 0]"]
- 15["Sweep Extrusion [229, 249, 0]"]
- 16["Sweep Extrusion [424, 443, 0]"]
+ 2["StartSketchOnFace [275, 311, 0]"]
+ 15["Sweep Extrusion [243, 263, 0]"]
+ 16["Sweep Extrusion [438, 457, 0]"]
17[Wall]
18[Wall]
19[Wall]
diff --git a/rust/kcl-lib/tests/sketch_on_face_end/ast.snap b/rust/kcl-lib/tests/sketch_on_face_end/ast.snap
index f544205fc..5f3d4b503 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end/ast.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end/ast.snap
@@ -463,48 +463,68 @@ description: Result of parsing sketch_on_face_end.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "20",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 20.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "20",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 20.0,
+ "suffix": "None"
+ }
}
}
],
@@ -526,8 +546,9 @@ description: Result of parsing sketch_on_face_end.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/sketch_on_face_end/input.kcl b/rust/kcl-lib/tests/sketch_on_face_end/input.kcl
index 7668af2fe..dc28207b2 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end/input.kcl
+++ b/rust/kcl-lib/tests/sketch_on_face_end/input.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_end/ops.snap b/rust/kcl-lib/tests/sketch_on_face_end/ops.snap
index e9a2e49cb..9a0e63dae 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end/ops.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end/ops.snap
@@ -25,7 +25,58 @@ description: Operations executed sketch_on_face_end.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap
index 9c2d589b1..f3e49167d 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap
@@ -11,7 +11,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md
index 0d88a7afb..c69af9076 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md
@@ -5,21 +5,21 @@ flowchart LR
5["Segment [84, 106, 0]"]
6["Segment [114, 136, 0]"]
7["Segment [144, 167, 0]"]
- 8["Segment [215, 223, 0]"]
+ 8["Segment [229, 237, 0]"]
14[Solid2d]
end
subgraph path4 [Path]
- 4["Path [303, 328, 0]"]
- 9["Segment [334, 353, 0]"]
- 10["Segment [359, 378, 0]"]
- 11["Segment [384, 404, 0]"]
- 12["Segment [410, 418, 0]"]
+ 4["Path [317, 342, 0]"]
+ 9["Segment [348, 367, 0]"]
+ 10["Segment [373, 392, 0]"]
+ 11["Segment [398, 418, 0]"]
+ 12["Segment [424, 432, 0]"]
13[Solid2d]
end
1["Plane [29, 46, 0]"]
- 2["StartSketchOnFace [261, 297, 0]"]
- 15["Sweep Extrusion [229, 249, 0]"]
- 16["Sweep Extrusion [424, 444, 0]"]
+ 2["StartSketchOnFace [275, 311, 0]"]
+ 15["Sweep Extrusion [243, 263, 0]"]
+ 16["Sweep Extrusion [438, 458, 0]"]
17[Wall]
18[Wall]
19[Wall]
diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap
index 56d327e69..79320517d 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap
@@ -463,48 +463,68 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "20",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 20.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "20",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 20.0,
+ "suffix": "None"
+ }
}
}
],
@@ -526,8 +546,9 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl
index a33dc453b..1eb6136ab 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl
+++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap
index ef2abb2d4..26238fd94 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap
@@ -25,7 +25,58 @@ description: Operations executed sketch_on_face_end_negative_extrude.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap
index 3b968e94d..ecc4c4825 100644
--- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap
@@ -11,7 +11,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20)
diff --git a/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md
index 7ffc24767..5c9b96399 100644
--- a/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md
@@ -5,21 +5,21 @@ flowchart LR
5["Segment [84, 106, 0]"]
6["Segment [114, 136, 0]"]
7["Segment [144, 167, 0]"]
- 8["Segment [215, 223, 0]"]
+ 8["Segment [229, 237, 0]"]
14[Solid2d]
end
subgraph path4 [Path]
- 4["Path [308, 333, 0]"]
- 9["Segment [339, 358, 0]"]
- 10["Segment [364, 383, 0]"]
- 11["Segment [389, 409, 0]"]
- 12["Segment [415, 423, 0]"]
+ 4["Path [322, 347, 0]"]
+ 9["Segment [353, 372, 0]"]
+ 10["Segment [378, 397, 0]"]
+ 11["Segment [403, 423, 0]"]
+ 12["Segment [429, 437, 0]"]
13[Solid2d]
end
1["Plane [29, 46, 0]"]
- 2["StartSketchOnFace [268, 302, 0]"]
- 15["Sweep Extrusion [229, 249, 0]"]
- 16["Sweep Extrusion [429, 448, 0]"]
+ 2["StartSketchOnFace [282, 316, 0]"]
+ 15["Sweep Extrusion [243, 263, 0]"]
+ 16["Sweep Extrusion [443, 462, 0]"]
17[Wall]
18[Wall]
19[Wall]
diff --git a/rust/kcl-lib/tests/sketch_on_face_start/ast.snap b/rust/kcl-lib/tests/sketch_on_face_start/ast.snap
index 767543dc2..e01341546 100644
--- a/rust/kcl-lib/tests/sketch_on_face_start/ast.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_start/ast.snap
@@ -463,48 +463,68 @@ description: Result of parsing sketch_on_face_start.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "20",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 20.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "20",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 20.0,
+ "suffix": "None"
+ }
}
}
],
@@ -526,8 +546,9 @@ description: Result of parsing sketch_on_face_start.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/sketch_on_face_start/input.kcl b/rust/kcl-lib/tests/sketch_on_face_start/input.kcl
index 93df3c8f0..fb5b9f9aa 100644
--- a/rust/kcl-lib/tests/sketch_on_face_start/input.kcl
+++ b/rust/kcl-lib/tests/sketch_on_face_start/input.kcl
@@ -7,7 +7,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20) as foo
diff --git a/rust/kcl-lib/tests/sketch_on_face_start/ops.snap b/rust/kcl-lib/tests/sketch_on_face_start/ops.snap
index 1ae907dde..714253506 100644
--- a/rust/kcl-lib/tests/sketch_on_face_start/ops.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_start/ops.snap
@@ -25,7 +25,58 @@ description: Operations executed sketch_on_face_start.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 20.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap
index 6dd658d1b..eab366a6f 100644
--- a/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap
+++ b/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap
@@ -11,7 +11,7 @@ fn cube(pos, scale) {
return sg
}
-part001 = cube([0, 0], 20)
+part001 = cube(pos = [0, 0], scale = 20)
|> close(%)
|> extrude(length = 20) as foo
diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md
index 0d7009b03..d9deddde4 100644
--- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md
@@ -9,15 +9,15 @@ flowchart LR
11[Solid2d]
end
subgraph path4 [Path]
- 4["Path [386, 421, 0]"]
- 9["Segment [386, 421, 0]"]
+ 4["Path [395, 430, 0]"]
+ 9["Segment [395, 430, 0]"]
10[Solid2d]
end
1["Plane [27, 44, 0]"]
- 2["Plane [363, 380, 0]"]
+ 2["Plane [372, 389, 0]"]
12["Sweep Extrusion [306, 326, 0]"]
- 13["Sweep Extrusion [427, 446, 0]"]
- 14["CompositeSolid Subtract [459, 495, 0]"]
+ 13["Sweep Extrusion [436, 455, 0]"]
+ 14["CompositeSolid Subtract [468, 504, 0]"]
15[Wall]
16[Wall]
17[Wall]
diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap
index e6d0b7825..0503fffa8 100644
--- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap
+++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap
@@ -753,37 +753,47 @@ description: Result of parsing subtract_cylinder_from_cube.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "center",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
}
],
"callee": {
@@ -804,8 +814,9 @@ description: Result of parsing subtract_cylinder_from_cube.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl b/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl
index d0f24117d..9b9af9fff 100644
--- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl
+++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl
@@ -8,7 +8,7 @@ fn cube(center) {
|> extrude(length = 10)
}
-part001 = cube([0, 0])
+part001 = cube(center = [0, 0])
part002 = startSketchOn(XY)
|> circle(center = [2, 2], radius = 2)
|> extrude(length = 5)
diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap
index 66b969814..0c5f00166 100644
--- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap
+++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap
@@ -57,7 +57,42 @@ description: Operations executed subtract_cylinder_from_cube.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "center": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap
index 0f276364d..9ad56d457 100644
--- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap
+++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap
@@ -12,7 +12,7 @@ fn cube(center) {
|> extrude(length = 10)
}
-part001 = cube([0, 0])
+part001 = cube(center = [0, 0])
part002 = startSketchOn(XY)
|> circle(center = [2, 2], radius = 2)
|> extrude(length = 5)
diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md
index 890fd1a3d..15802af18 100644
--- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md
@@ -1,26 +1,26 @@
```mermaid
flowchart LR
subgraph path3 [Path]
- 3["Path [58, 113, 0]"]
- 5["Segment [121, 177, 0]"]
- 8["Segment [185, 241, 0]"]
- 10["Segment [249, 305, 0]"]
- 11["Segment [313, 320, 0]"]
+ 3["Path [56, 107, 0]"]
+ 5["Segment [115, 167, 0]"]
+ 8["Segment [175, 227, 0]"]
+ 10["Segment [235, 287, 0]"]
+ 11["Segment [295, 302, 0]"]
13[Solid2d]
end
subgraph path4 [Path]
- 4["Path [58, 113, 0]"]
- 6["Segment [121, 177, 0]"]
- 7["Segment [185, 241, 0]"]
- 9["Segment [249, 305, 0]"]
- 12["Segment [313, 320, 0]"]
+ 4["Path [56, 107, 0]"]
+ 6["Segment [115, 167, 0]"]
+ 7["Segment [175, 227, 0]"]
+ 9["Segment [235, 287, 0]"]
+ 12["Segment [295, 302, 0]"]
14[Solid2d]
end
- 1["Plane [33, 50, 0]"]
- 2["Plane [33, 50, 0]"]
- 15["Sweep Extrusion [328, 348, 0]"]
- 16["Sweep Extrusion [328, 348, 0]"]
- 17["CompositeSolid Subtract [445, 479, 0]"]
+ 1["Plane [31, 48, 0]"]
+ 2["Plane [31, 48, 0]"]
+ 15["Sweep Extrusion [310, 330, 0]"]
+ 16["Sweep Extrusion [310, 330, 0]"]
+ 17["CompositeSolid Subtract [455, 489, 0]"]
18[Wall]
19[Wall]
20[Wall]
diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap
index b36956f19..7c64169f4 100644
--- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap
+++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap
@@ -87,7 +87,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -116,7 +116,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -139,7 +139,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -168,7 +168,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -235,7 +235,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -264,7 +264,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -287,7 +287,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -316,7 +316,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -383,7 +383,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -412,7 +412,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -435,7 +435,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -464,7 +464,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -531,7 +531,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -560,7 +560,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -583,7 +583,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -612,7 +612,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -751,7 +751,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"identifier": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier"
}
@@ -761,7 +761,7 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"identifier": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
}
@@ -795,48 +795,68 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
}
],
@@ -858,8 +878,9 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -887,48 +908,68 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 7.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 7.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -950,8 +991,9 @@ description: Result of parsing subtract_doesnt_need_brackets.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl
index 262b67e32..37230ba7b 100644
--- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl
+++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl
@@ -1,15 +1,15 @@
-fn cube(center, size) {
+fn cube(pos, scale) {
return startSketchOn(XY)
- |> startProfile(at = [center[0] - size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] + size])
- |> line(endAbsolute = [center[0] - size, center[1] + size])
+ |> startProfile(at = [pos[0] - scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] + scale])
+ |> line(endAbsolute = [pos[0] - scale, pos[1] + scale])
|> close()
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(pos = [0, 0], scale = 10)
+part002 = cube(pos = [7, 3], scale = 5)
|> translate(z = 1)
subtractedPart = subtract(part001, tools = part002)
diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap
index cd52af6cb..fc28c1834 100644
--- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap
+++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap
@@ -104,7 +104,58 @@ description: Operations executed subtract_doesnt_need_brackets.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -115,7 +166,58 @@ description: Operations executed subtract_doesnt_need_brackets.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap
index 0c2094a45..102b03474 100644
--- a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap
+++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap
@@ -2,18 +2,18 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing subtract_doesnt_need_brackets.kcl
---
-fn cube(center, size) {
+fn cube(pos, scale) {
return startSketchOn(XY)
- |> startProfile(at = [center[0] - size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] + size])
- |> line(endAbsolute = [center[0] - size, center[1] + size])
+ |> startProfile(at = [pos[0] - scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] + scale])
+ |> line(endAbsolute = [pos[0] - scale, pos[1] + scale])
|> close()
|> extrude(length = 10)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(pos = [0, 0], scale = 10)
+part002 = cube(pos = [7, 3], scale = 5)
|> translate(z = 1)
subtractedPart = subtract(part001, tools = part002)
diff --git a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md
index 72922f5d5..e99ad4c23 100644
--- a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md
+++ b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md
@@ -1,26 +1,26 @@
```mermaid
flowchart LR
subgraph path3 [Path]
- 3["Path [58, 113, 0]"]
- 5["Segment [121, 177, 0]"]
- 8["Segment [185, 241, 0]"]
- 10["Segment [249, 305, 0]"]
- 11["Segment [313, 320, 0]"]
+ 3["Path [56, 107, 0]"]
+ 5["Segment [115, 167, 0]"]
+ 8["Segment [175, 227, 0]"]
+ 10["Segment [235, 287, 0]"]
+ 11["Segment [295, 302, 0]"]
13[Solid2d]
end
subgraph path4 [Path]
- 4["Path [58, 113, 0]"]
- 6["Segment [121, 177, 0]"]
- 7["Segment [185, 241, 0]"]
- 9["Segment [249, 305, 0]"]
- 12["Segment [313, 320, 0]"]
+ 4["Path [56, 107, 0]"]
+ 6["Segment [115, 167, 0]"]
+ 7["Segment [175, 227, 0]"]
+ 9["Segment [235, 287, 0]"]
+ 12["Segment [295, 302, 0]"]
14[Solid2d]
end
- 1["Plane [33, 50, 0]"]
- 2["Plane [33, 50, 0]"]
- 15["Sweep Extrusion [328, 354, 0]"]
- 16["Sweep Extrusion [328, 354, 0]"]
- 17["CompositeSolid Union [448, 473, 0]"]
+ 1["Plane [31, 48, 0]"]
+ 2["Plane [31, 48, 0]"]
+ 15["Sweep Extrusion [310, 337, 0]"]
+ 16["Sweep Extrusion [310, 337, 0]"]
+ 17["CompositeSolid Union [459, 484, 0]"]
18[Wall]
19[Wall]
20[Wall]
diff --git a/rust/kcl-lib/tests/union_cubes/ast.snap b/rust/kcl-lib/tests/union_cubes/ast.snap
index 2d7ba3777..72433b6c6 100644
--- a/rust/kcl-lib/tests/union_cubes/ast.snap
+++ b/rust/kcl-lib/tests/union_cubes/ast.snap
@@ -87,7 +87,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -116,7 +116,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -139,7 +139,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -168,7 +168,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -235,7 +235,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -264,7 +264,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -287,7 +287,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -316,7 +316,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -383,7 +383,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -412,7 +412,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -435,7 +435,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -464,7 +464,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -531,7 +531,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -560,7 +560,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -583,7 +583,7 @@ description: Result of parsing union_cubes.kcl
"object": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier",
"type": "Identifier"
@@ -612,7 +612,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -712,7 +712,7 @@ description: Result of parsing union_cubes.kcl
"name": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
},
@@ -775,7 +775,7 @@ description: Result of parsing union_cubes.kcl
"identifier": {
"commentStart": 0,
"end": 0,
- "name": "center",
+ "name": "pos",
"start": 0,
"type": "Identifier"
}
@@ -785,7 +785,7 @@ description: Result of parsing union_cubes.kcl
"identifier": {
"commentStart": 0,
"end": 0,
- "name": "size",
+ "name": "scale",
"start": 0,
"type": "Identifier"
}
@@ -819,48 +819,68 @@ description: Result of parsing union_cubes.kcl
"init": {
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "0",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 0.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "0",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 0.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "10",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 10.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "10",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 10.0,
+ "suffix": "None"
+ }
}
}
],
@@ -882,8 +902,9 @@ description: Result of parsing union_cubes.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
"start": 0,
"type": "VariableDeclarator"
@@ -911,48 +932,68 @@ description: Result of parsing union_cubes.kcl
{
"arguments": [
{
- "commentStart": 0,
- "elements": [
- {
- "commentStart": 0,
- "end": 0,
- "raw": "7",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 7.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "pos",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "elements": [
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "7",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 7.0,
+ "suffix": "None"
+ }
+ },
+ {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "3",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 3.0,
+ "suffix": "None"
+ }
}
- },
- {
- "commentStart": 0,
- "end": 0,
- "raw": "3",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 3.0,
- "suffix": "None"
- }
- }
- ],
- "end": 0,
- "start": 0,
- "type": "ArrayExpression",
- "type": "ArrayExpression"
+ ],
+ "end": 0,
+ "start": 0,
+ "type": "ArrayExpression",
+ "type": "ArrayExpression"
+ }
},
{
- "commentStart": 0,
- "end": 0,
- "raw": "5",
- "start": 0,
- "type": "Literal",
- "type": "Literal",
- "value": {
- "value": 5.0,
- "suffix": "None"
+ "type": "LabeledArg",
+ "label": {
+ "commentStart": 0,
+ "end": 0,
+ "name": "scale",
+ "start": 0,
+ "type": "Identifier"
+ },
+ "arg": {
+ "commentStart": 0,
+ "end": 0,
+ "raw": "5",
+ "start": 0,
+ "type": "Literal",
+ "type": "Literal",
+ "value": {
+ "value": 5.0,
+ "suffix": "None"
+ }
}
}
],
@@ -974,8 +1015,9 @@ description: Result of parsing union_cubes.kcl
"commentStart": 0,
"end": 0,
"start": 0,
- "type": "CallExpression",
- "type": "CallExpression"
+ "type": "CallExpressionKw",
+ "type": "CallExpressionKw",
+ "unlabeled": null
},
{
"arguments": [
diff --git a/rust/kcl-lib/tests/union_cubes/input.kcl b/rust/kcl-lib/tests/union_cubes/input.kcl
index 483681a95..8d1864797 100644
--- a/rust/kcl-lib/tests/union_cubes/input.kcl
+++ b/rust/kcl-lib/tests/union_cubes/input.kcl
@@ -1,15 +1,15 @@
-fn cube(center, size) {
+fn cube(pos, scale) {
return startSketchOn(XY)
- |> startProfile(at = [center[0] - size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] + size])
- |> line(endAbsolute = [center[0] - size, center[1] + size])
+ |> startProfile(at = [pos[0] - scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] + scale])
+ |> line(endAbsolute = [pos[0] - scale, pos[1] + scale])
|> close()
- |> extrude(length = 2 * size)
+ |> extrude(length = 2 * scale)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(pos = [0, 0], scale = 10)
+part002 = cube(pos = [7, 3], scale = 5)
|> translate(z = 1)
fullPart = union([part001, part002])
diff --git a/rust/kcl-lib/tests/union_cubes/ops.snap b/rust/kcl-lib/tests/union_cubes/ops.snap
index e6a7fba8a..f7691e42e 100644
--- a/rust/kcl-lib/tests/union_cubes/ops.snap
+++ b/rust/kcl-lib/tests/union_cubes/ops.snap
@@ -104,7 +104,58 @@ description: Operations executed union_cubes.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 0.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 10.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
@@ -115,7 +166,58 @@ description: Operations executed union_cubes.kcl
"name": "cube",
"functionSourceRange": [],
"unlabeledArg": null,
- "labeledArgs": {}
+ "labeledArgs": {
+ "pos": {
+ "value": {
+ "type": "Array",
+ "value": [
+ {
+ "type": "Number",
+ "value": 7.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ {
+ "type": "Number",
+ "value": 3.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ }
+ ]
+ },
+ "sourceRange": []
+ },
+ "scale": {
+ "value": {
+ "type": "Number",
+ "value": 5.0,
+ "ty": {
+ "type": "Default",
+ "len": {
+ "type": "Mm"
+ },
+ "angle": {
+ "type": "Degrees"
+ }
+ }
+ },
+ "sourceRange": []
+ }
+ }
},
"sourceRange": []
},
diff --git a/rust/kcl-lib/tests/union_cubes/unparsed.snap b/rust/kcl-lib/tests/union_cubes/unparsed.snap
index d32d14cec..e880eb802 100644
--- a/rust/kcl-lib/tests/union_cubes/unparsed.snap
+++ b/rust/kcl-lib/tests/union_cubes/unparsed.snap
@@ -2,18 +2,18 @@
source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing union_cubes.kcl
---
-fn cube(center, size) {
+fn cube(pos, scale) {
return startSketchOn(XY)
- |> startProfile(at = [center[0] - size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] - size])
- |> line(endAbsolute = [center[0] + size, center[1] + size])
- |> line(endAbsolute = [center[0] - size, center[1] + size])
+ |> startProfile(at = [pos[0] - scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] - scale])
+ |> line(endAbsolute = [pos[0] + scale, pos[1] + scale])
+ |> line(endAbsolute = [pos[0] - scale, pos[1] + scale])
|> close()
- |> extrude(length = 2 * size)
+ |> extrude(length = 2 * scale)
}
-part001 = cube([0, 0], 10)
-part002 = cube([7, 3], 5)
+part001 = cube(pos = [0, 0], scale = 10)
+part002 = cube(pos = [7, 3], scale = 5)
|> translate(z = 1)
fullPart = union([part001, part002])
diff --git a/rust/kcl-wasm-lib/src/wasm.rs b/rust/kcl-wasm-lib/src/wasm.rs
index 7beaa921b..c3fb21c43 100644
--- a/rust/kcl-wasm-lib/src/wasm.rs
+++ b/rust/kcl-wasm-lib/src/wasm.rs
@@ -1,10 +1,10 @@
//! Wasm bindings for `kcl`.
use gloo_utils::format::JsValueSerdeExt;
-use kcl_lib::{pretty::NumericSuffix, CoreDump, Program};
+use kcl_lib::{pretty::NumericSuffix, CoreDump, Program, SourceRange};
use wasm_bindgen::prelude::*;
-// wasm_bindgen wrapper for execute
+// wasm_bindgen wrapper for lint
#[wasm_bindgen]
pub async fn kcl_lint(program_ast_json: &str) -> Result {
console_error_panic_hook::set_once();
@@ -18,6 +18,17 @@ pub async fn kcl_lint(program_ast_json: &str) -> Result {
Ok(JsValue::from_serde(&findings).map_err(|e| e.to_string())?)
}
+#[wasm_bindgen]
+pub async fn node_path_from_range(program_ast_json: &str, range_json: &str) -> Result {
+ console_error_panic_hook::set_once();
+
+ let program: Program = serde_json::from_str(program_ast_json).map_err(|e| e.to_string())?;
+ let range: SourceRange = serde_json::from_str(range_json).map_err(|e| e.to_string())?;
+ let node_path = program.node_path_from_range(range);
+
+ JsValue::from_serde(&node_path).map_err(|e| e.to_string())
+}
+
#[wasm_bindgen]
pub fn parse_wasm(kcl_program_source: &str) -> Result {
console_error_panic_hook::set_once();
diff --git a/src/App.tsx b/src/App.tsx
index e087d074e..4e501a20e 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -4,7 +4,6 @@ import { useHotkeys } from 'react-hotkeys-hook'
import ModalContainer from 'react-modal-promise'
import {
useLoaderData,
- useLocation,
useNavigate,
useRouteLoaderData,
useSearchParams,
@@ -27,20 +26,15 @@ import useHotkeyWrapper from '@src/lib/hotkeyWrapper'
import { isDesktop } from '@src/lib/isDesktop'
import { PATHS } from '@src/lib/paths'
import { takeScreenshotOfVideoStreamCanvas } from '@src/lib/screenshot'
-import { sceneInfra, codeManager, kclManager } from '@src/lib/singletons'
+import { sceneInfra } from '@src/lib/singletons'
import { maybeWriteToDisk } from '@src/lib/telemetry'
-import type { IndexLoaderData } from '@src/lib/types'
+import { type IndexLoaderData } from '@src/lib/types'
import { engineStreamActor, useSettings, useToken } from '@src/lib/singletons'
import { commandBarActor } from '@src/lib/singletons'
import { EngineStreamTransition } from '@src/machines/engineStreamMachine'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
import { CommandBarOpenButton } from '@src/components/CommandBarOpenButton'
import { ShareButton } from '@src/components/ShareButton'
-import {
- needsToOnboard,
- ONBOARDING_TOAST_ID,
- TutorialRequestToast,
-} from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
// CYCLIC REF
sceneInfra.camControls.engineStreamActor = engineStreamActor
@@ -64,7 +58,6 @@ export function App() {
})
})
- const location = useLocation()
const navigate = useNavigate()
const filePath = useAbsoluteFilePath()
const { onProjectOpen } = useLspContext()
@@ -73,7 +66,7 @@ export function App() {
const ref = useRef(null)
// Stream related refs and data
- const [searchParams] = useSearchParams()
+ let [searchParams] = useSearchParams()
const pool = searchParams.get('pool')
const projectName = project?.name || null
@@ -83,10 +76,9 @@ export function App() {
const loaderData = useRouteLoaderData(PATHS.FILE) as IndexLoaderData
const lastCommandType = commands[commands.length - 1]?.type
- // Run LSP file open hook when navigating between projects or files
useEffect(() => {
onProjectOpen({ name: projectName, path: projectPath }, file || null)
- }, [onProjectOpen, projectName, projectPath, file])
+ }, [projectName, projectPath])
useHotKeyListener()
@@ -112,10 +104,9 @@ export function App() {
toast.success('Your work is auto-saved in real-time')
})
- const paneOpacity = [
- ONBOARDING_SUBPATHS.CAMERA,
- ONBOARDING_SUBPATHS.STREAMING,
- ].some((p) => p === onboardingStatus.current)
+ const paneOpacity = [onboardingPaths.CAMERA, onboardingPaths.STREAMING].some(
+ (p) => p === onboardingStatus.current
+ )
? 'opacity-20'
: ''
@@ -141,7 +132,7 @@ export function App() {
})
}, 500)
}
- }, [lastCommandType, loaderData?.project?.path])
+ }, [lastCommandType])
useEffect(() => {
// When leaving the modeling scene, cut the engine stream.
@@ -150,32 +141,6 @@ export function App() {
}
}, [])
- // Show a custom toast to users if they haven't done the onboarding
- // and they're on the web
- useEffect(() => {
- const onboardingStatus =
- settings.app.onboardingStatus.current ||
- settings.app.onboardingStatus.default
- const needsOnboarded = needsToOnboard(location, onboardingStatus)
-
- if (!isDesktop() && needsOnboarded) {
- toast.success(
- () =>
- TutorialRequestToast({
- onboardingStatus: settings.app.onboardingStatus.current,
- navigate,
- codeManager,
- kclManager,
- }),
- {
- id: ONBOARDING_TOAST_ID,
- duration: Number.POSITIVE_INFINITY,
- icon: null,
- }
- )
- }
- }, [location, settings.app.onboardingStatus, navigate])
-
return (
{/*
*/}
-
+
diff --git a/src/Auth.tsx b/src/Auth.tsx
index 1e2c6477e..e7ea14fd4 100644
--- a/src/Auth.tsx
+++ b/src/Auth.tsx
@@ -7,7 +7,7 @@ export const Auth = ({ children }: React.PropsWithChildren) => {
const isLoggingIn = authState.matches('checkIfLoggedIn')
return isLoggingIn ? (
-
+
Loading Design Studio...
) : (
diff --git a/src/Router.tsx b/src/Router.tsx
index e457870f2..f592783de 100644
--- a/src/Router.tsx
+++ b/src/Router.tsx
@@ -28,7 +28,7 @@ import useHotkeyWrapper from '@src/lib/hotkeyWrapper'
import { isDesktop } from '@src/lib/isDesktop'
import makeUrlPathRelative from '@src/lib/makeUrlPathRelative'
import { PATHS } from '@src/lib/paths'
-import { fileLoader, homeLoader } from '@src/lib/routeLoaders'
+import { fileLoader, homeLoader, telemetryLoader } from '@src/lib/routeLoaders'
import {
codeManager,
engineCommandManager,
@@ -110,6 +110,7 @@ const router = createRouter([
},
{
id: PATHS.FILE + 'TELEMETRY',
+ loader: telemetryLoader,
children: [
{
path: makeUrlPathRelative(PATHS.TELEMETRY),
@@ -143,6 +144,7 @@ const router = createRouter([
},
{
path: makeUrlPathRelative(PATHS.TELEMETRY),
+ loader: telemetryLoader,
element: ,
},
],
diff --git a/src/components/CustomIcon.tsx b/src/components/CustomIcon.tsx
index 0d918aef3..c69f7fe4c 100644
--- a/src/components/CustomIcon.tsx
+++ b/src/components/CustomIcon.tsx
@@ -854,14 +854,6 @@ const CustomIconMap = {
/>
),
- play: (
-
-
-
- ),
rotate: (
- // It makes sense to also call zoom to fit here, when a new file is
- // loaded for the first time, but not overtaking the work kevin did
- // so the camera isn't moving all the time.
- engineCommandManager.sendSceneCommand({
- type: 'modeling_cmd_req',
- cmd_id: uuidv4(),
- cmd: {
- type: 'zoom_to_fit',
- object_ids: [], // leave empty to zoom to all objects
- padding: 0.1, // padding around the objects
- animated: false, // don't animate the zoom for now
- },
- })
- )
+ .then(async () => {
+ // Gotcha: Playwright E2E tests will be zoom_to_fit, when you try to recreate the e2e test manually
+ // your localhost will do view_isometric. Turn this boolean on to have the same experience when manually
+ // debugging e2e tests
+
+ // We need a padding of 0.1 for zoom_to_fit for all E2E tests since they were originally
+ // written with zoom_to_fit with padding 0.1
+ const padding = 0.1
+ if (isPlaywright()) {
+ await engineStreamZoomToFit({ engineCommandManager, padding })
+ } else {
+ // If the scene is empty you cannot use view_isometric, it will not move the camera
+ if (kclManager.isAstBodyEmpty(kclManager.ast)) {
+ await engineViewIsometricWithoutGeometryPresent({
+ engineCommandManager,
+ unit:
+ kclManager.fileSettings.defaultLengthUnit ||
+ DEFAULT_DEFAULT_LENGTH_UNIT,
+ })
+ } else {
+ await engineViewIsometricWithGeometryPresent({
+ engineCommandManager,
+ padding,
+ })
+ }
+ }
+ })
.catch(trap)
}
diff --git a/src/components/FileTree.tsx b/src/components/FileTree.tsx
index 09d86b5e5..ef0a616a5 100644
--- a/src/components/FileTree.tsx
+++ b/src/components/FileTree.tsx
@@ -558,14 +558,6 @@ function FileTreeContextMenu({
)
}
-interface FileTreeProps {
- className?: string
- file?: IndexLoaderData['file']
- onNavigateToFile: (
- focusableElement?: HTMLElement | React.MutableRefObject
- ) => void
-}
-
export const FileTreeMenu = ({
onCreateFile,
onCreateFolder,
@@ -682,39 +674,6 @@ export const useFileTreeOperations = () => {
}
}
-export const FileTree = ({
- className = '',
- onNavigateToFile: closePanel,
-}: FileTreeProps) => {
- const {
- createFile,
- createFolder,
- cloneFileOrDir,
- openInNewWindow,
- newTreeEntry,
- } = useFileTreeOperations()
-
- return (
-
-
-
Files
- createFile({ dryRun: true })}
- onCreateFolder={() => createFolder({ dryRun: true })}
- />
-
-
createFile({ dryRun: false, name })}
- onCreateFolder={(name: string) => createFolder({ dryRun: false, name })}
- onCloneFileOrFolder={(path: string) => cloneFileOrDir({ path })}
- onOpenInNewWindow={(path: string) => openInNewWindow({ path })}
- />
-
- )
-}
-
export const FileTreeInner = ({
onNavigateToFile,
onCreateFile,
diff --git a/src/components/HelpMenu.tsx b/src/components/HelpMenu.tsx
index c76fd4f16..7274658a4 100644
--- a/src/components/HelpMenu.tsx
+++ b/src/components/HelpMenu.tsx
@@ -1,46 +1,49 @@
import { Popover } from '@headlessui/react'
-import { type NavigateFunction, useLocation } from 'react-router-dom'
+import { useLocation, useNavigate } from 'react-router-dom'
import { CustomIcon } from '@src/components/CustomIcon'
+import { useLspContext } from '@src/components/LspProvider'
import Tooltip from '@src/components/Tooltip'
import { useAbsoluteFilePath } from '@src/hooks/useAbsoluteFilePath'
import { useMenuListener } from '@src/hooks/useMenu'
+import { createAndOpenNewTutorialProject } from '@src/lib/desktopFS'
import { openExternalBrowserIfDesktop } from '@src/lib/openWindow'
import { PATHS } from '@src/lib/paths'
-import { codeManager, kclManager } from '@src/lib/singletons'
+import { reportRejection } from '@src/lib/trap'
+import { settingsActor } from '@src/lib/singletons'
import type { WebContentSendPayload } from '@src/menu/channels'
-import {
- acceptOnboarding,
- catchOnboardingWarnError,
-} from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
const HelpMenuDivider = () => (
)
-export function HelpMenu({
- navigate = () => {},
-}: {
- navigate?: NavigateFunction
-}) {
+export function HelpMenu(props: React.PropsWithChildren) {
const location = useLocation()
+ const { onProjectOpen } = useLspContext()
const filePath = useAbsoluteFilePath()
+ const isInProject = location.pathname.includes(PATHS.FILE)
+ const navigate = useNavigate()
const resetOnboardingWorkflow = () => {
- const props = {
- onboardingStatus: ONBOARDING_SUBPATHS.INDEX,
- navigate,
- codeManager,
- kclManager,
+ settingsActor.send({
+ type: 'set.app.onboardingStatus',
+ data: {
+ value: '',
+ level: 'user',
+ },
+ })
+ if (isInProject) {
+ navigate(filePath + PATHS.ONBOARDING.INDEX)
+ } else {
+ createAndOpenNewTutorialProject({
+ onProjectOpen,
+ navigate,
+ }).catch(reportRejection)
}
- acceptOnboarding(props).catch((reason) =>
- catchOnboardingWarnError(reason, props)
- )
}
const cb = (data: WebContentSendPayload) => {
- if (data.menuLabel === 'Help.Replay onboarding tutorial') {
+ if (data.menuLabel === 'Help.Reset onboarding') {
resetOnboardingWorkflow()
}
}
@@ -65,81 +68,71 @@ export function HelpMenu({
as="ul"
className="absolute right-0 left-auto flex flex-col w-64 gap-1 p-0 py-2 m-0 mb-1 text-sm border border-solid rounded shadow-lg bottom-full align-stretch text-chalkboard-10 dark:text-inherit bg-chalkboard-110 dark:bg-chalkboard-100 border-chalkboard-110 dark:border-chalkboard-80"
>
- {({ close }) => (
- <>
-
- Report a bug
-
-
- Request a feature
-
-
- Ask the community
-
-
-
- KCL code samples
-
-
- KCL docs
-
-
-
- Release notes
-
- {
- const targetPath = location.pathname.includes(PATHS.FILE)
- ? filePath + PATHS.SETTINGS_KEYBINDINGS
- : PATHS.HOME + PATHS.SETTINGS_KEYBINDINGS
- navigate(targetPath)
- }}
- data-testid="keybindings-button"
- >
- Keyboard shortcuts
-
- {
- close()
- resetOnboardingWorkflow()
- }}
- >
- Replay onboarding tutorial
-
- >
- )}
+
+ Report a bug
+
+
+ Request a feature
+
+
+ Ask the community
+
+
+
+ KCL code samples
+
+
+ KCL docs
+
+
+
+ Release notes
+
+ {
+ const targetPath = location.pathname.includes(PATHS.FILE)
+ ? filePath + PATHS.SETTINGS_KEYBINDINGS
+ : PATHS.HOME + PATHS.SETTINGS_KEYBINDINGS
+ navigate(targetPath)
+ }}
+ data-testid="keybindings-button"
+ >
+ Keyboard shortcuts
+
+
+ Reset onboarding
+
)
diff --git a/src/components/LowerRightControls.tsx b/src/components/LowerRightControls.tsx
index 219ae2334..42d539e8d 100644
--- a/src/components/LowerRightControls.tsx
+++ b/src/components/LowerRightControls.tsx
@@ -1,4 +1,5 @@
-import { Link, type NavigateFunction, useLocation } from 'react-router-dom'
+import { Link, useLocation } from 'react-router-dom'
+
import { CustomIcon } from '@src/components/CustomIcon'
import { HelpMenu } from '@src/components/HelpMenu'
import { NetworkHealthIndicator } from '@src/components/NetworkHealthIndicator'
@@ -11,10 +12,8 @@ import { APP_VERSION, getReleaseUrl } from '@src/routes/utils'
export function LowerRightControls({
children,
- navigate = () => {},
}: {
children?: React.ReactNode
- navigate?: NavigateFunction
}) {
const location = useLocation()
const filePath = useAbsoluteFilePath()
@@ -73,7 +72,7 @@ export function LowerRightControls({
{!location.pathname.startsWith(PATHS.HOME) && (
)}
-
+
)
diff --git a/src/components/ModelingMachineProvider.tsx b/src/components/ModelingMachineProvider.tsx
index 9473124c2..a945d7b4b 100644
--- a/src/components/ModelingMachineProvider.tsx
+++ b/src/components/ModelingMachineProvider.tsx
@@ -1807,7 +1807,7 @@ export const ModelingMachineProvider = ({
const MB20 = 2 ** 20 * 20
if (uploadSize > MB20) {
toast.error(
- "Your project exceeds 20Mb, this will slow down Text-to-CAD\nPlease remove any unnecessary files"
+ 'Your project exceeds 20Mb, this will slow down Text-to-CAD\nPlease remove any unnecessary files'
)
}
}
@@ -1818,7 +1818,6 @@ export const ModelingMachineProvider = ({
token,
artifactGraph: kclManager.artifactGraph,
projectName: context.project.name,
- basePath,
})
}),
},
diff --git a/src/components/ModelingSidebar/ModelingPane.tsx b/src/components/ModelingSidebar/ModelingPane.tsx
index 264da072a..b919b8ff0 100644
--- a/src/components/ModelingSidebar/ModelingPane.tsx
+++ b/src/components/ModelingSidebar/ModelingPane.tsx
@@ -6,7 +6,7 @@ import { ActionIcon } from '@src/components/ActionIcon'
import type { CustomIconName } from '@src/components/CustomIcon'
import Tooltip from '@src/components/Tooltip'
import { useSettings } from '@src/lib/singletons'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
import styles from './ModelingPane.module.css'
@@ -71,7 +71,7 @@ export const ModelingPane = ({
const settings = useSettings()
const onboardingStatus = settings.app.onboardingStatus
const pointerEventsCssClass =
- onboardingStatus.current === ONBOARDING_SUBPATHS.CAMERA
+ onboardingStatus.current === onboardingPaths.CAMERA
? 'pointer-events-none '
: 'pointer-events-auto '
return (
diff --git a/src/components/ModelingSidebar/ModelingSidebar.tsx b/src/components/ModelingSidebar/ModelingSidebar.tsx
index 7e4d18450..6e5eb2f68 100644
--- a/src/components/ModelingSidebar/ModelingSidebar.tsx
+++ b/src/components/ModelingSidebar/ModelingSidebar.tsx
@@ -24,7 +24,7 @@ import { SIDEBAR_BUTTON_SUFFIX } from '@src/lib/constants'
import { isDesktop } from '@src/lib/isDesktop'
import { useSettings } from '@src/lib/singletons'
import { commandBarActor } from '@src/lib/singletons'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
import { reportRejection } from '@src/lib/trap'
import { refreshPage } from '@src/lib/utils'
import { hotkeyDisplay } from '@src/lib/hotkeyWrapper'
@@ -53,7 +53,7 @@ export function ModelingSidebar({ paneOpacity }: ModelingSidebarProps) {
const onboardingStatus = settings.app.onboardingStatus
const { send, context } = useModelingContext()
const pointerEventsCssClass =
- onboardingStatus.current === ONBOARDING_SUBPATHS.CAMERA ||
+ onboardingStatus.current === onboardingPaths.CAMERA ||
context.store?.openPanes.length === 0
? 'pointer-events-none '
: 'pointer-events-auto '
diff --git a/src/components/Providers/SystemIOProviderDesktop.tsx b/src/components/Providers/SystemIOProviderDesktop.tsx
index 5dc4a8261..a20b6a25e 100644
--- a/src/components/Providers/SystemIOProviderDesktop.tsx
+++ b/src/components/Providers/SystemIOProviderDesktop.tsx
@@ -1,10 +1,5 @@
import { useFileSystemWatcher } from '@src/hooks/useFileSystemWatcher'
-import {
- PATHS,
- joinRouterPaths,
- joinOSPaths,
- safeEncodeForRouterPaths,
-} from '@src/lib/paths'
+import { PATHS } from '@src/lib/paths'
import { systemIOActor, useSettings, useToken } from '@src/lib/singletons'
import {
useHasListedProjects,
@@ -40,14 +35,14 @@ export function SystemIOMachineLogicListenerDesktop() {
if (!requestedProjectName.name) {
return
}
- const projectPathWithoutSpecificKCLFile = joinOSPaths(
- projectDirectoryPath,
+ let projectPathWithoutSpecificKCLFile =
+ projectDirectoryPath +
+ window.electron.path.sep +
requestedProjectName.name
- )
- const requestedPath = joinRouterPaths(
- PATHS.FILE,
- safeEncodeForRouterPaths(projectPathWithoutSpecificKCLFile)
- )
+
+ const requestedPath = `${PATHS.FILE}/${encodeURIComponent(
+ projectPathWithoutSpecificKCLFile
+ )}`
navigate(requestedPath)
}, [requestedProjectName])
}
@@ -57,16 +52,12 @@ export function SystemIOMachineLogicListenerDesktop() {
if (!requestedFileName.file || !requestedFileName.project) {
return
}
- const filePath = joinOSPaths(
+ const projectPath = window.electron.join(
projectDirectoryPath,
- requestedFileName.project,
- requestedFileName.file
- )
- const requestedPath = joinRouterPaths(
- PATHS.FILE,
- safeEncodeForRouterPaths(filePath),
- requestedFileName.subRoute || ''
+ requestedFileName.project
)
+ const filePath = window.electron.join(projectPath, requestedFileName.file)
+ const requestedPath = `${PATHS.FILE}/${encodeURIComponent(filePath)}`
navigate(requestedPath)
}, [requestedFileName])
}
diff --git a/src/components/RouteProvider.tsx b/src/components/RouteProvider.tsx
index 3cb61cfc4..b18f55743 100644
--- a/src/components/RouteProvider.tsx
+++ b/src/components/RouteProvider.tsx
@@ -7,6 +7,8 @@ import {
useRouteLoaderData,
} from 'react-router-dom'
+import type { OnboardingStatus } from '@rust/kcl-lib/bindings/OnboardingStatus'
+
import { useAuthNavigation } from '@src/hooks/useAuthNavigation'
import { useFileSystemWatcher } from '@src/hooks/useFileSystemWatcher'
import { getAppSettingsFilePath } from '@src/lib/desktop'
@@ -16,7 +18,7 @@ import { markOnce } from '@src/lib/performance'
import { loadAndValidateSettings } from '@src/lib/settings/settingsUtils'
import { trap } from '@src/lib/trap'
import type { IndexLoaderData } from '@src/lib/types'
-import { settingsActor } from '@src/lib/singletons'
+import { settingsActor, useSettings } from '@src/lib/singletons'
export const RouteProviderContext = createContext({})
@@ -30,6 +32,7 @@ export function RouteProvider({ children }: { children: ReactNode }) {
const navigation = useNavigation()
const navigate = useNavigate()
const location = useLocation()
+ const settings = useSettings()
useEffect(() => {
// On initialization, the react-router-dom does not send a 'loading' state event.
@@ -43,9 +46,35 @@ export function RouteProvider({ children }: { children: ReactNode }) {
markOnce('code/willLoadHome')
} else if (isFile) {
markOnce('code/willLoadFile')
+
+ /**
+ * TODO: Move to XState. This block has been moved from routerLoaders
+ * and is borrowing the `isFile` logic from the rest of this
+ * telemetry-focused `useEffect`. Once `appMachine` knows about
+ * the current route and navigation, this can be moved into settingsMachine
+ * to fire as soon as the user settings have been read.
+ */
+ const onboardingStatus: OnboardingStatus =
+ settings.app.onboardingStatus.current || ''
+ // '' is the initial state, 'completed' and 'dismissed' are the final states
+ const needsToOnboard =
+ onboardingStatus.length === 0 ||
+ !(onboardingStatus === 'completed' || onboardingStatus === 'dismissed')
+ const shouldRedirectToOnboarding = isFile && needsToOnboard
+
+ if (
+ shouldRedirectToOnboarding &&
+ settingsActor.getSnapshot().matches('idle')
+ ) {
+ navigate(
+ (first ? location.pathname : navigation.location?.pathname) +
+ PATHS.ONBOARDING.INDEX +
+ onboardingStatus.slice(1)
+ )
+ }
}
setFirstState(false)
- }, [first, navigation, location.pathname])
+ }, [navigation])
useEffect(() => {
if (!isDesktop()) return
diff --git a/src/components/Settings/AllSettingsFields.tsx b/src/components/Settings/AllSettingsFields.tsx
index ec39dc220..9e50f2e8e 100644
--- a/src/components/Settings/AllSettingsFields.tsx
+++ b/src/components/Settings/AllSettingsFields.tsx
@@ -6,12 +6,16 @@ import { useLocation, useNavigate } from 'react-router-dom'
import { Fragment } from 'react/jsx-runtime'
import { ActionButton } from '@src/components/ActionButton'
+import { useLspContext } from '@src/components/LspProvider'
import { SettingsFieldInput } from '@src/components/Settings/SettingsFieldInput'
import { SettingsSection } from '@src/components/Settings/SettingsSection'
-import { getSettingsFolderPaths } from '@src/lib/desktopFS'
+import { useDotDotSlash } from '@src/hooks/useDotDotSlash'
+import {
+ createAndOpenNewTutorialProject,
+ getSettingsFolderPaths,
+} from '@src/lib/desktopFS'
import { isDesktop } from '@src/lib/isDesktop'
import { openExternalBrowserIfDesktop } from '@src/lib/openWindow'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
import { PATHS } from '@src/lib/paths'
import type { Setting } from '@src/lib/settings/initialSettings'
import type {
@@ -24,17 +28,9 @@ import {
} from '@src/lib/settings/settingsUtils'
import { reportRejection } from '@src/lib/trap'
import { toSync } from '@src/lib/utils'
-import {
- codeManager,
- kclManager,
- settingsActor,
- useSettings,
-} from '@src/lib/singletons'
+import { settingsActor, useSettings } from '@src/lib/singletons'
import { APP_VERSION, IS_NIGHTLY, getReleaseUrl } from '@src/routes/utils'
-import {
- acceptOnboarding,
- catchOnboardingWarnError,
-} from '@src/routes/Onboarding/utils'
+import { waitFor } from 'xstate'
interface AllSettingsFieldsProps {
searchParamTab: SettingsLevel
@@ -48,6 +44,8 @@ export const AllSettingsFields = forwardRef(
) => {
const location = useLocation()
const navigate = useNavigate()
+ const { onProjectOpen } = useLspContext()
+ const dotDotSlash = useDotDotSlash()
const context = useSettings()
const projectPath = useMemo(() => {
@@ -65,18 +63,26 @@ export const AllSettingsFields = forwardRef(
: undefined
return projectPath
- }, [location.pathname, isFileSettings])
+ }, [location.pathname])
async function restartOnboarding() {
- const props = {
- onboardingStatus: ONBOARDING_SUBPATHS.INDEX,
- navigate,
- codeManager,
- kclManager,
+ settingsActor.send({
+ type: `set.app.onboardingStatus`,
+ data: { level: 'user', value: '' },
+ })
+ await waitFor(settingsActor, (s) => s.matches('idle'), {
+ timeout: 10_000,
+ }).catch(reportRejection)
+
+ if (isFileSettings) {
+ // If we're in a project, first navigate to the onboarding start here
+ // so we can trigger the warning screen if necessary
+ navigate(dotDotSlash(1) + PATHS.ONBOARDING.INDEX)
+ } else {
+ // If we're in the global settings, create a new project and navigate
+ // to the onboarding start in that project
+ await createAndOpenNewTutorialProject({ onProjectOpen, navigate })
}
- acceptOnboarding(props).catch((reason) =>
- catchOnboardingWarnError(reason, props)
- )
}
return (
diff --git a/src/components/ShareButton.tsx b/src/components/ShareButton.tsx
index 92bfe08a6..35f93dfce 100644
--- a/src/components/ShareButton.tsx
+++ b/src/components/ShareButton.tsx
@@ -4,6 +4,7 @@ import usePlatform from '@src/hooks/usePlatform'
import { hotkeyDisplay } from '@src/lib/hotkeyWrapper'
import { commandBarActor } from '@src/lib/singletons'
import { useHotkeys } from 'react-hotkeys-hook'
+import { useKclContext } from '@src/lang/KclProvider'
const shareHotkey = 'mod+alt+s'
const onShareClick = () =>
@@ -19,11 +20,16 @@ export const ShareButton = () => {
scopes: ['modeling'],
})
+ const kclContext = useKclContext()
+ const disabled = kclContext.ast.body.some((n) => n.type === 'ImportStatement')
+
return (
Share
@@ -31,10 +37,16 @@ export const ShareButton = () => {
position="bottom-right"
contentClassName="max-w-none flex items-center gap-4"
>
- Share part via Zoo link
-
- {hotkeyDisplay(shareHotkey, platform)}
-
+
+ {disabled
+ ? `Share links are not currently supported for multi-file assemblies`
+ : `Share part via Zoo link`}
+
+ {!disabled && (
+
+ {hotkeyDisplay(shareHotkey, platform)}
+
+ )}
)
diff --git a/src/components/ToastTextToCad.tsx b/src/components/ToastTextToCad.tsx
index 4fc97e0dc..ef45357c5 100644
--- a/src/components/ToastTextToCad.tsx
+++ b/src/components/ToastTextToCad.tsx
@@ -29,10 +29,18 @@ import { PATHS } from '@src/lib/paths'
import { codeManager, kclManager, systemIOActor } from '@src/lib/singletons'
import { sendTelemetry } from '@src/lib/textToCadTelemetry'
import { reportRejection } from '@src/lib/trap'
-import { SystemIOMachineEvents } from '@src/machines/systemIO/utils'
-import { useProjectDirectoryPath } from '@src/machines/systemIO/hooks'
+import {
+ SystemIOMachineEvents,
+ SystemIOMachineStates,
+ NAVIGATION_COMPLETE_EVENT,
+} from '@src/machines/systemIO/utils'
+import {
+ useProjectDirectoryPath,
+ useRequestedProjectName,
+} from '@src/machines/systemIO/hooks'
import { commandBarActor } from '@src/lib/singletons'
import type { FileMeta } from '@src/lib/types'
+import type { RequestedKCLFile } from '@src/machines/systemIO/utils'
const CANVAS_SIZE = 128
const PROMPT_TRUNCATE_LENGTH = 128
@@ -490,6 +498,7 @@ export function ToastPromptToEditCadSuccess({
token?: string
}) {
const modelId = data.id
+ const requestedProjectName = useRequestedProjectName()
return (
@@ -518,22 +527,34 @@ export function ToastPromptToEditCadSuccess({
data-negative-button={'reject'}
name={'Reject'}
onClick={() => {
- sendTelemetry(modelId, 'rejected', token).catch(reportRejection)
- // revert to before the prompt-to-edit
- if (isDesktop()) {
- for (const file of oldFiles) {
- if (file.type !== 'kcl') {
- // only need to write the kcl files
- // as the endpoint would have never overwritten other file types
- continue
+ void (async () => {
+ sendTelemetry(modelId, 'rejected', token).catch(reportRejection)
+ // revert to before the prompt-to-edit
+ if (isDesktop()) {
+ const requestedFiles: RequestedKCLFile[] = []
+ for (const file of oldFiles) {
+ if (file.type !== 'kcl') {
+ // only need to write the kcl files
+ // as the endpoint would have never overwritten other file types
+ continue
+ }
+ requestedFiles.push({
+ requestedCode: file.fileContents,
+ requestedFileName: file.relPath,
+ requestedProjectName: requestedProjectName.name,
+ })
}
- window.electron.writeFile(file.absPath, file.fileContents)
+ toast.dismiss(toastId)
+ await writeOverFilesAndExecute({
+ requestedFiles: requestedFiles,
+ projectName: requestedProjectName.name,
+ })
+ } else {
+ codeManager.updateCodeEditor(oldCode)
+ kclManager.executeCode().catch(reportRejection)
+ toast.dismiss(toastId)
}
- } else {
- codeManager.updateCodeEditor(oldCode)
- kclManager.executeCode().catch(reportRejection)
- }
- toast.dismiss(toastId)
+ })()
}}
>
{'Reject'}
@@ -568,3 +589,50 @@ export function ToastPromptToEditCadSuccess({
)
}
+
+export const writeOverFilesAndExecute = async ({
+ requestedFiles,
+ projectName,
+}: {
+ requestedFiles: RequestedKCLFile[]
+ projectName: string
+}) => {
+ // Create a promise that resolves when the bulk create operation completes
+ const bulkCreatePromise = new Promise((resolve) => {
+ const subscription = systemIOActor.subscribe((state) => {
+ if (state.matches(SystemIOMachineStates.idle)) {
+ subscription.unsubscribe()
+ resolve(undefined)
+ }
+ })
+ })
+
+ // Create a promise that resolves when navigation completes
+ const navigationPromise = new Promise((resolve) => {
+ const handleNavigationComplete = (event: CustomEvent) => {
+ window.removeEventListener(
+ NAVIGATION_COMPLETE_EVENT,
+ handleNavigationComplete as EventListener
+ )
+ resolve()
+ }
+ window.addEventListener(
+ NAVIGATION_COMPLETE_EVENT,
+ handleNavigationComplete as EventListener
+ )
+ })
+
+ systemIOActor.send({
+ type: SystemIOMachineEvents.bulkCreateKCLFilesAndNavigateToProject,
+ data: {
+ files: requestedFiles,
+ requestedProjectName: projectName,
+ override: true,
+ },
+ })
+
+ // Wait for both the bulk create operation and navigation to complete
+ await Promise.all([bulkCreatePromise, navigationPromise])
+
+ await kclManager.executeCode()
+}
diff --git a/src/lang/KclSingleton.ts b/src/lang/KclSingleton.ts
index 86ee4377b..2a8480e93 100644
--- a/src/lang/KclSingleton.ts
+++ b/src/lang/KclSingleton.ts
@@ -738,6 +738,18 @@ export class KclManager {
return ast.start === 0 && ast.end === 0 && ast.body.length === 0
}
+ /**
+ * Determines if there is no code to execute. If there is a @settings annotation
+ * that adds to the overall ast.start and ast.end but not the body which is the program
+ *
+ *
+ * If you need to know if there is any program code or not, use this function otherwise
+ * use _isAstEmpty
+ */
+ isAstBodyEmpty(ast: Node) {
+ return ast.body.length === 0
+ }
+
get fileSettings() {
return this._fileSettings
}
diff --git a/src/lang/queryAstNodePathUtils.ts b/src/lang/queryAstNodePathUtils.ts
index 6c1b9000d..c1d393ee2 100644
--- a/src/lang/queryAstNodePathUtils.ts
+++ b/src/lang/queryAstNodePathUtils.ts
@@ -2,7 +2,11 @@ import type { ImportStatement } from '@rust/kcl-lib/bindings/ImportStatement'
import type { Node } from '@rust/kcl-lib/bindings/Node'
import type { TypeDeclaration } from '@rust/kcl-lib/bindings/TypeDeclaration'
-import { ARG_INDEX_FIELD, LABELED_ARG_FIELD } from '@src/lang/queryAstConstants'
+import {
+ ARG_INDEX_FIELD,
+ LABELED_ARG_FIELD,
+ UNLABELED_ARG,
+} from '@src/lang/queryAstConstants'
import type {
Expr,
ExpressionStatement,
@@ -38,6 +42,7 @@ function moreNodePathFromSourceRange(
if (
(_node.type === 'Name' ||
_node.type === 'Literal' ||
+ _node.type === 'Identifier' ||
_node.type === 'TagDeclarator') &&
isInRange
) {
@@ -64,12 +69,20 @@ function moreNodePathFromSourceRange(
}
if (_node.type === 'CallExpressionKw' && isInRange) {
- const { callee, arguments: args } = _node
+ const { callee, arguments: args, unlabeled } = _node
if (callee.type === 'Name' && callee.start <= start && callee.end >= end) {
path.push(['callee', 'CallExpressionKw'])
return path
}
- if (args.length > 0) {
+ if (
+ unlabeled !== null &&
+ unlabeled.start <= start &&
+ unlabeled.end >= end
+ ) {
+ path.push(['unlabeled', UNLABELED_ARG])
+ return moreNodePathFromSourceRange(unlabeled, sourceRange, path)
+ }
+ if (args && args.length > 0) {
for (let argIndex = 0; argIndex < args.length; argIndex++) {
const arg = args[argIndex].arg
if (arg.start <= start && arg.end >= end) {
@@ -156,19 +169,6 @@ function moreNodePathFromSourceRange(
}
}
}
- if (_node.type === 'VariableDeclaration' && isInRange) {
- const declaration = _node.declaration
-
- if (declaration.start <= start && declaration.end >= end) {
- const init = declaration.init
- if (init.start <= start && init.end >= end) {
- path.push(['declaration', 'VariableDeclaration'])
- path.push(['init', ''])
- return moreNodePathFromSourceRange(init, sourceRange, path)
- }
- }
- return path
- }
if (_node.type === 'UnaryExpression' && isInRange) {
const { argument } = _node
if (argument.start <= start && argument.end >= end) {
@@ -257,6 +257,29 @@ function moreNodePathFromSourceRange(
return path
}
+ if (_node.type === 'LabelledExpression' && isInRange) {
+ const { expr, label } = _node
+ if (expr.start <= start && expr.end >= end) {
+ path.push(['expr', 'LabelledExpression'])
+ return moreNodePathFromSourceRange(expr, sourceRange, path)
+ }
+ if (label.start <= start && label.end >= end) {
+ path.push(['label', 'LabelledExpression'])
+ return moreNodePathFromSourceRange(label, sourceRange, path)
+ }
+ return path
+ }
+
+ if (_node.type === 'AscribedExpression' && isInRange) {
+ const { expr } = _node
+ if (expr.start <= start && expr.end >= end) {
+ path.push(['expr', 'AscribedExpression'])
+ return moreNodePathFromSourceRange(expr, sourceRange, path)
+ }
+ // TODO: Check the type annotation.
+ return path
+ }
+
if (_node.type === 'ImportStatement' && isInRange) {
if (_node.selector && _node.selector.type === 'List') {
path.push(['selector', 'ImportStatement'])
diff --git a/src/lang/wasm.test.ts b/src/lang/wasm.test.ts
index c47ec4591..bfef3e9f3 100644
--- a/src/lang/wasm.test.ts
+++ b/src/lang/wasm.test.ts
@@ -2,10 +2,18 @@ import type { Node } from '@rust/kcl-lib/bindings/Node'
import type { Program } from '@rust/kcl-lib/bindings/Program'
import type { ParseResult } from '@src/lang/wasm'
-import { formatNumber, parse, errFromErrWithOutputs } from '@src/lang/wasm'
+import {
+ formatNumber,
+ parse,
+ errFromErrWithOutputs,
+ rustImplPathToNode,
+ assertParse,
+} from '@src/lang/wasm'
import { initPromise } from '@src/lang/wasmUtils'
import { enginelessExecutor } from '@src/lib/testHelpers'
import { err } from '@src/lib/trap'
+import { topLevelRange } from '@src/lang/util'
+import { getNodePathFromSourceRange } from '@src/lang/queryAstNodePathUtils'
beforeEach(async () => {
await initPromise
@@ -44,3 +52,17 @@ describe('test errFromErrWithOutputs', () => {
)
})
})
+
+it('converts Rust NodePath to PathToNode', async () => {
+ // Convenience for making a SourceRange.
+ const sr = topLevelRange
+
+ const ast = assertParse(`x = 1 + 2
+y = foo(center = [3, 4])`)
+ expect(await rustImplPathToNode(ast, sr(4, 5))).toStrictEqual(
+ getNodePathFromSourceRange(ast, sr(4, 5))
+ )
+ expect(await rustImplPathToNode(ast, sr(31, 32))).toStrictEqual(
+ getNodePathFromSourceRange(ast, sr(31, 32))
+ )
+})
diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts
index d0fabe904..223dcae97 100644
--- a/src/lang/wasm.ts
+++ b/src/lang/wasm.ts
@@ -16,6 +16,7 @@ import type { MetaSettings } from '@rust/kcl-lib/bindings/MetaSettings'
import type { UnitAngle, UnitLength } from '@rust/kcl-lib/bindings/ModelingCmd'
import type { ModulePath } from '@rust/kcl-lib/bindings/ModulePath'
import type { Node } from '@rust/kcl-lib/bindings/Node'
+import type { NodePath } from '@rust/kcl-lib/bindings/NodePath'
import type { NumericSuffix } from '@rust/kcl-lib/bindings/NumericSuffix'
import type { Operation } from '@rust/kcl-lib/bindings/Operation'
import type { Program } from '@rust/kcl-lib/bindings/Program'
@@ -26,7 +27,6 @@ import type { UnitAngle as UnitAng } from '@rust/kcl-lib/bindings/UnitAngle'
import type { UnitLen } from '@rust/kcl-lib/bindings/UnitLen'
import { KCLError } from '@src/lang/errors'
-import { getNodePathFromSourceRange } from '@src/lang/queryAstNodePathUtils'
import {
type Artifact,
defaultArtifactGraph,
@@ -54,6 +54,7 @@ import {
is_points_ccw,
kcl_lint,
kcl_settings,
+ node_path_from_range,
parse_app_settings,
parse_project_settings,
parse_wasm,
@@ -61,6 +62,11 @@ import {
serialize_configuration,
serialize_project_configuration,
} from '@src/lib/wasm_lib_wrapper'
+import {
+ ARG_INDEX_FIELD,
+ LABELED_ARG_FIELD,
+ UNLABELED_ARG,
+} from '@src/lang/queryAstConstants'
export type { ArrayExpression } from '@rust/kcl-lib/bindings/ArrayExpression'
export type {
@@ -294,19 +300,13 @@ export function emptyExecState(): ExecState {
}
}
-export function execStateFromRust(
- execOutcome: RustExecOutcome,
- program: Node
-): ExecState {
+export function execStateFromRust(execOutcome: RustExecOutcome): ExecState {
const artifactGraph = rustArtifactGraphToMap(execOutcome.artifactGraph)
- // We haven't ported pathToNode logic to Rust yet, so we need to fill it in.
+ // Translate NodePath to PathToNode.
for (const [_id, artifact] of artifactGraph) {
if (!artifact) continue
if (!('codeRef' in artifact)) continue
- const pathToNode = getNodePathFromSourceRange(
- program,
- sourceRangeFromRust(artifact.codeRef.range)
- )
+ const pathToNode = pathToNodeFromRustNodePath(artifact.codeRef.nodePath)
artifact.codeRef.pathToNode = pathToNode
}
@@ -406,6 +406,35 @@ export const kclLint = async (ast: Program): Promise> => {
}
}
+export async function rustImplPathToNode(
+ ast: Program,
+ range: SourceRange
+): Promise {
+ const nodePath = await nodePathFromRange(ast, range)
+ if (!nodePath) {
+ // When a NodePath can't be found, we use an empty PathToNode.
+ return []
+ }
+ return pathToNodeFromRustNodePath(nodePath)
+}
+
+async function nodePathFromRange(
+ ast: Program,
+ range: SourceRange
+): Promise {
+ try {
+ const nodePath: NodePath | null = await node_path_from_range(
+ JSON.stringify(ast),
+ JSON.stringify(range)
+ )
+ return nodePath
+ } catch (e: any) {
+ return Promise.reject(
+ new Error('Caught error getting node path from range', { cause: e })
+ )
+ }
+}
+
export const recast = (ast: Program): string | Error => {
return recast_wasm(JSON.stringify(ast))
}
@@ -490,6 +519,143 @@ export async function coreDump(
}
}
+function pathToNodeFromRustNodePath(nodePath: NodePath): PathToNode {
+ const pathToNode: PathToNode = []
+ for (const step of nodePath.steps) {
+ switch (step.type) {
+ case 'ProgramBodyItem':
+ pathToNode.push(['body', ''])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'CallCallee':
+ pathToNode.push(['callee', 'CallExpression'])
+ break
+ case 'CallArg':
+ pathToNode.push(['arguments', 'CallExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'CallKwCallee':
+ pathToNode.push(['callee', 'CallExpressionKw'])
+ break
+ case 'CallKwUnlabeledArg':
+ pathToNode.push(['unlabeled', UNLABELED_ARG])
+ break
+ case 'CallKwArg':
+ pathToNode.push(['arguments', 'CallExpressionKw'])
+ pathToNode.push([step.index, ARG_INDEX_FIELD])
+ pathToNode.push(['arg', LABELED_ARG_FIELD])
+ break
+ case 'BinaryLeft':
+ pathToNode.push(['left', 'BinaryExpression'])
+ break
+ case 'BinaryRight':
+ pathToNode.push(['right', 'BinaryExpression'])
+ break
+ case 'UnaryArg':
+ pathToNode.push(['argument', 'UnaryExpression'])
+ break
+ case 'PipeBodyItem':
+ pathToNode.push(['body', 'PipeExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'ArrayElement':
+ pathToNode.push(['elements', 'ArrayExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'ArrayRangeStart':
+ pathToNode.push(['startElement', 'ArrayRangeExpression'])
+ break
+ case 'ArrayRangeEnd':
+ pathToNode.push(['endElement', 'ArrayRangeExpression'])
+ break
+ case 'ObjectProperty':
+ pathToNode.push(['properties', 'ObjectExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'ObjectPropertyKey':
+ pathToNode.push(['key', 'Property'])
+ break
+ case 'ObjectPropertyValue':
+ pathToNode.push(['value', 'Property'])
+ break
+ case 'ExpressionStatementExpr':
+ pathToNode.push(['expression', 'ExpressionStatement'])
+ break
+ case 'VariableDeclarationDeclaration':
+ pathToNode.push(['declaration', 'VariableDeclaration'])
+ break
+ case 'VariableDeclarationInit':
+ pathToNode.push(['init', ''])
+ break
+ case 'FunctionExpressionParam':
+ pathToNode.push(['params', 'FunctionExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'FunctionExpressionBody':
+ pathToNode.push(['body', 'FunctionExpression'])
+ break
+ case 'FunctionExpressionBodyItem':
+ pathToNode.push(['body', 'FunctionExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'ReturnStatementArg':
+ pathToNode.push(['argument', 'ReturnStatement'])
+ break
+ case 'MemberExpressionObject':
+ pathToNode.push(['object', 'MemberExpression'])
+ break
+ case 'MemberExpressionProperty':
+ pathToNode.push(['property', 'MemberExpression'])
+ break
+ case 'IfExpressionCondition':
+ pathToNode.push(['cond', 'IfExpression'])
+ break
+ case 'IfExpressionThen':
+ pathToNode.push(['then_val', 'IfExpression'])
+ pathToNode.push(['body', 'IfExpression'])
+ break
+ case 'IfExpressionElseIf':
+ pathToNode.push(['else_ifs', 'IfExpression'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'IfExpressionElseIfCond':
+ pathToNode.push(['cond', 'IfExpression'])
+ break
+ case 'IfExpressionElseIfBody':
+ pathToNode.push(['then_val', 'IfExpression'])
+ pathToNode.push(['body', 'IfExpression'])
+ break
+ case 'IfExpressionElse':
+ pathToNode.push(['final_else', 'IfExpression'])
+ pathToNode.push(['body', 'IfExpression'])
+ break
+ case 'ImportStatementItem':
+ pathToNode.push(['selector', 'ImportStatement'])
+ pathToNode.push(['items', 'ImportSelector'])
+ pathToNode.push([step.index, 'index'])
+ break
+ case 'ImportStatementItemName':
+ pathToNode.push(['name', 'ImportItem'])
+ break
+ case 'ImportStatementItemAlias':
+ pathToNode.push(['alias', 'ImportItem'])
+ break
+ case 'LabeledExpressionExpr':
+ pathToNode.push(['expr', 'LabeledExpression'])
+ break
+ case 'LabeledExpressionLabel':
+ pathToNode.push(['label', 'LabeledExpression'])
+ break
+ case 'AscribedExpressionExpr':
+ pathToNode.push(['expr', 'AscribedExpression'])
+ break
+ default:
+ const _exhaustiveCheck: never = step
+ }
+ }
+ return pathToNode
+}
+
export function defaultAppSettings(): DeepPartial | Error {
return default_app_settings()
}
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index adbdb6950..b438fd9dd 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -2,7 +2,6 @@ import type { Models } from '@kittycad/lib/dist/types/src'
import type { UnitAngle, UnitLength } from '@rust/kcl-lib/bindings/ModelingCmd'
-export const IS_PLAYWRIGHT_KEY = 'playwright'
export const APP_NAME = 'Design Studio'
/** Search string in new project names to increment as an index */
export const INDEX_IDENTIFIER = '$n'
@@ -188,3 +187,6 @@ export type ExecutionType =
| typeof EXECUTION_TYPE_REAL
| typeof EXECUTION_TYPE_MOCK
| typeof EXECUTION_TYPE_NONE
+
+/** Key for setting window.localStorage.setItem and .getItem to determine if the runtime is playwright for browsers */
+export const IS_PLAYWRIGHT_KEY = 'playwright'
diff --git a/src/lib/desktopFS.ts b/src/lib/desktopFS.ts
index e12225129..29bb9d8ef 100644
--- a/src/lib/desktopFS.ts
+++ b/src/lib/desktopFS.ts
@@ -1,6 +1,18 @@
import { relevantFileExtensions } from '@src/lang/wasmUtils'
-import { FILE_EXT, INDEX_IDENTIFIER, MAX_PADDING } from '@src/lib/constants'
+import {
+ FILE_EXT,
+ INDEX_IDENTIFIER,
+ MAX_PADDING,
+ ONBOARDING_PROJECT_NAME,
+} from '@src/lib/constants'
+import {
+ createNewProjectDirectory,
+ listProjects,
+ readAppSettingsFile,
+} from '@src/lib/desktop'
+import { bracket } from '@src/lib/exampleKcl'
import { isDesktop } from '@src/lib/isDesktop'
+import { PATHS } from '@src/lib/paths'
import type { FileEntry } from '@src/lib/project'
export const isHidden = (fileOrDir: FileEntry) =>
@@ -120,6 +132,65 @@ export async function getSettingsFolderPaths(projectPath?: string) {
}
}
+export async function createAndOpenNewTutorialProject({
+ onProjectOpen,
+ navigate,
+}: {
+ onProjectOpen: (
+ project: {
+ name: string | null
+ path: string | null
+ } | null,
+ file: FileEntry | null
+ ) => void
+ navigate: (path: string) => void
+}) {
+ // Create a new project with the onboarding project name
+ const configuration = await readAppSettingsFile()
+ const projects = await listProjects(configuration)
+ const nextIndex = getNextProjectIndex(ONBOARDING_PROJECT_NAME, projects)
+ const name = interpolateProjectNameWithIndex(
+ ONBOARDING_PROJECT_NAME,
+ nextIndex
+ )
+
+ // Delete the tutorial project if it already exists.
+ if (isDesktop()) {
+ if (configuration.settings?.project?.directory === undefined) {
+ return Promise.reject(new Error('configuration settings are undefined'))
+ }
+
+ const fullPath = window.electron.join(
+ configuration.settings.project.directory,
+ name
+ )
+ if (window.electron.exists(fullPath)) {
+ await window.electron.rm(fullPath)
+ }
+ }
+
+ const newProject = await createNewProjectDirectory(
+ name,
+ bracket,
+ configuration
+ )
+
+ // Prep the LSP and navigate to the onboarding start
+ onProjectOpen(
+ {
+ name: newProject.name,
+ path: newProject.path,
+ },
+ null
+ )
+ navigate(
+ `${PATHS.FILE}/${encodeURIComponent(newProject.default_file)}${
+ PATHS.ONBOARDING.INDEX
+ }`
+ )
+ return newProject
+}
+
/**
* Get the next available file name by appending a hyphen and number to the end of the name
*/
diff --git a/src/lib/isPlaywright.ts b/src/lib/isPlaywright.ts
new file mode 100644
index 000000000..7828c5e97
--- /dev/null
+++ b/src/lib/isPlaywright.ts
@@ -0,0 +1,10 @@
+import { IS_PLAYWRIGHT_KEY } from '@src/lib/constants'
+
+export function isPlaywright(): boolean {
+ // ? checks for browser
+ const electronRunTimePlaywright =
+ window?.electron?.process?.env.IS_PLAYWRIGHT == 'true'
+ const browserRuntimePlaywright =
+ localStorage.getItem(IS_PLAYWRIGHT_KEY) === 'true'
+ return electronRunTimePlaywright || browserRuntimePlaywright
+}
diff --git a/src/lib/paths.ts b/src/lib/paths.ts
index 7d921d6a4..45bb8d096 100644
--- a/src/lib/paths.ts
+++ b/src/lib/paths.ts
@@ -1,7 +1,5 @@
import type { PlatformPath } from 'path'
-
import type { Configuration } from '@rust/kcl-lib/bindings/Configuration'
-
import { IS_PLAYWRIGHT_KEY } from '@src/lib/constants'
import {
@@ -14,7 +12,7 @@ import { isDesktop } from '@src/lib/isDesktop'
import { readLocalStorageAppSettingsFile } from '@src/lib/settings/settingsUtils'
import { err } from '@src/lib/trap'
import type { DeepPartial } from '@src/lib/types'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
const prependRoutes =
(routesObject: Record) => (prepend: string) => {
@@ -27,7 +25,7 @@ const prependRoutes =
}
type OnboardingPaths = {
- [K in keyof typeof ONBOARDING_SUBPATHS]: `/onboarding${(typeof ONBOARDING_SUBPATHS)[K]}`
+ [K in keyof typeof onboardingPaths]: `/onboarding${(typeof onboardingPaths)[K]}`
}
const SETTINGS = '/settings'
@@ -48,9 +46,7 @@ export const PATHS = {
SETTINGS_PROJECT: `${SETTINGS}?tab=project` as const,
SETTINGS_KEYBINDINGS: `${SETTINGS}?tab=keybindings` as const,
SIGN_IN: '/signin',
- ONBOARDING: prependRoutes(ONBOARDING_SUBPATHS)(
- '/onboarding'
- ) as OnboardingPaths,
+ ONBOARDING: prependRoutes(onboardingPaths)('/onboarding') as OnboardingPaths,
TELEMETRY: '/telemetry',
} as const
export const BROWSER_PATH = `%2F${BROWSER_PROJECT_NAME}%2F${BROWSER_FILE_NAME}${FILE_EXT}`
@@ -138,56 +134,3 @@ export function parseProjectRoute(
currentFilePath: currentFilePath,
}
}
-
-/**
- * Joins any number of arguments of strings to create a Router level path that is safe
- * A path will be created of the format /value/value1/value2
- * Filters out '/', ''
- * Removes all leading and ending slashes, this allows you to pass '//dog//','//cat//' it will resolve to
- * /dog/cat
- */
-export function joinRouterPaths(...parts: string[]): string {
- return (
- '/' +
- parts
- .map((part) => part.replace(/^\/+|\/+$/g, '')) // Remove leading/trailing slashes
- .filter((part) => part.length > 0) // Remove empty segments
- .join('/')
- )
-}
-
-/**
- * Joins any number of arguments of strings to create a OS level path that is safe
- * A path will be created of the format /value/value1/value2
- * or \value\value1\value2 for POSIX OSes like Windows
- * Filters out the separator slashes
- * Removes all leading and ending slashes, this allows you to pass '//dog//','//cat//' it will resolve to
- * /dog/cat
- * or \dog\cat on POSIX
- */
-export function joinOSPaths(...parts: string[]): string {
- const sep = window.electron?.sep || '/'
- const regexSep = sep === '/' ? '/' : '\\'
- return (
- (sep === '\\' ? '' : sep) + // Windows absolute paths should not be prepended with a separator, they start with the drive name
- parts
- .map((part) =>
- part.replace(new RegExp(`^${regexSep}+|${regexSep}+$`, 'g'), '')
- ) // Remove leading/trailing slashes
- .filter((part) => part.length > 0) // Remove empty segments
- .join(sep)
- )
-}
-
-export function safeEncodeForRouterPaths(dynamicValue: string): string {
- return `${encodeURIComponent(dynamicValue)}`
-}
-
-/**
- * /dog/cat/house.kcl gives you house.kcl
- * \dog\cat\house.kcl gives you house.kcl
- * Works on all OS!
- */
-export function getStringAfterLastSeparator(path: string): string {
- return path.split(window.electron.sep).pop() || ''
-}
diff --git a/src/lib/promptToEdit.tsx b/src/lib/promptToEdit.tsx
index 90be2f561..67cee69c8 100644
--- a/src/lib/promptToEdit.tsx
+++ b/src/lib/promptToEdit.tsx
@@ -4,8 +4,6 @@ import type { Models } from '@kittycad/lib'
import { VITE_KC_API_BASE_URL } from '@src/env'
import { diffLines } from 'diff'
import toast from 'react-hot-toast'
-import { Client } from '@kittycad/lib'
-import { ml } from '@kittycad/lib'
import type { TextToCadMultiFileIteration_type } from '@kittycad/lib/dist/types/src/models'
import { getCookie, TOKEN_PERSIST_KEY } from '@src/machines/authMachine'
import { COOKIE_NAME } from '@src/lib/constants'
@@ -14,7 +12,10 @@ import { openExternalBrowserIfDesktop } from '@src/lib/openWindow'
import { ActionButton } from '@src/components/ActionButton'
import { CustomIcon } from '@src/components/CustomIcon'
-import { ToastPromptToEditCadSuccess } from '@src/components/ToastTextToCad'
+import {
+ ToastPromptToEditCadSuccess,
+ writeOverFilesAndExecute,
+} from '@src/components/ToastTextToCad'
import { modelingMachineEvent } from '@src/editor/manager'
import { getArtifactOfTypes } from '@src/lang/std/artifactGraph'
import { topLevelRange } from '@src/lang/util'
@@ -26,6 +27,7 @@ import { err, reportRejection } from '@src/lib/trap'
import { uuidv4 } from '@src/lib/utils'
import type { File as KittyCadLibFile } from '@kittycad/lib/dist/types/src/models'
import type { FileMeta } from '@src/lib/types'
+import type { RequestedKCLFile } from '@src/machines/systemIO/utils'
type KclFileMetaMap = {
[execStateFileNamesIndex: number]: Extract
@@ -52,6 +54,52 @@ function convertAppRangeToApiRange(
}
}
+type TextToCadErrorResponse = {
+ error_code: string
+ message: string
+}
+
+async function submitTextToCadRequest(
+ body: {
+ prompt: string
+ source_ranges: Models['SourceRangePrompt_type'][]
+ project_name?: string
+ kcl_version: string
+ },
+ files: KittyCadLibFile[],
+ token: string
+): Promise {
+ const formData = new FormData()
+ formData.append('body', JSON.stringify(body))
+
+ files.forEach((file) => {
+ formData.append('files', file.data, file.name)
+ })
+
+ const response = await fetch(
+ `${VITE_KC_API_BASE_URL}/ml/text-to-cad/multi-file/iteration`,
+ {
+ method: 'POST',
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ body: formData,
+ }
+ )
+
+ if (!response.ok) {
+ return new Error(`HTTP error! status: ${response.status}`)
+ }
+
+ const data = await response.json()
+ if ('error_code' in data) {
+ const errorData = data as TextToCadErrorResponse
+ return new Error(errorData.message || 'Unknown error')
+ }
+
+ return data as TextToCadMultiFileIteration_type
+}
+
export async function submitPromptToEditToQueue({
prompt,
selections,
@@ -72,8 +120,6 @@ export async function submitPromptToEditToQueue({
? token
: getCookie(COOKIE_NAME) || localStorage?.getItem(TOKEN_PERSIST_KEY) || ''
- const client = new Client(_token)
-
const kclFilesMap: KclFileMetaMap = {}
const endPointFiles: KittyCadLibFile[] = []
projectFiles.forEach((file) => {
@@ -93,9 +139,8 @@ export async function submitPromptToEditToQueue({
// If no selection, use whole file
if (selections === null) {
- return ml.create_text_to_cad_multi_file_iteration({
- client,
- body: {
+ return submitTextToCadRequest(
+ {
prompt,
source_ranges: [],
project_name:
@@ -104,8 +149,9 @@ export async function submitPromptToEditToQueue({
: undefined,
kcl_version: kclManager.kclVersion,
},
- files: endPointFiles,
- })
+ endPointFiles,
+ _token
+ )
}
// Handle manual code selections and artifact selections differently
@@ -239,9 +285,8 @@ See later source ranges for more context. about the sweep`,
}
return prompts
})
- return ml.create_text_to_cad_multi_file_iteration({
- client,
- body: {
+ return submitTextToCadRequest(
+ {
prompt,
source_ranges: ranges,
project_name:
@@ -250,8 +295,9 @@ See later source ranges for more context. about the sweep`,
: undefined,
kcl_version: kclManager.kclVersion,
},
- files: endPointFiles,
- })
+ endPointFiles,
+ _token
+ )
}
export async function getPromptToEditResult(
@@ -307,10 +353,12 @@ export async function doPromptEdit({
projectName,
})
} catch (e: any) {
+ toast.dismiss(toastId)
return new Error(e.message)
}
- if ('error_code' in submitResult) {
- return new Error(submitResult.message)
+ if (submitResult instanceof Error) {
+ toast.dismiss(toastId)
+ return submitResult
}
const textToCadComplete = new Promise<
@@ -324,7 +372,11 @@ export async function doPromptEdit({
while (timeElapsed < MAX_CHECK_TIMEOUT) {
const check = await getPromptToEditResult(submitResult.id, token)
- if (check instanceof Error || check.status === 'failed') {
+ if (
+ check instanceof Error ||
+ check.status === 'failed' ||
+ check.error
+ ) {
reject(check)
return
} else if (check.status === 'completed') {
@@ -363,7 +415,6 @@ export async function promptToEditFlow({
token,
artifactGraph,
projectName,
- basePath,
}: {
prompt: string
selections: Selections
@@ -371,7 +422,6 @@ export async function promptToEditFlow({
token?: string
artifactGraph: ArtifactGraph
projectName: string
- basePath: string
}) {
const result = await doPromptEdit({
prompt,
@@ -381,15 +431,13 @@ export async function promptToEditFlow({
artifactGraph,
projectName,
})
- if (err(result)) return Promise.reject(result)
+ if (err(result)) {
+ toast.error('Failed to modify.')
+ return Promise.reject(result)
+ }
const oldCodeWebAppOnly = codeManager.code
- // TODO remove once endpoint isn't returning fake data.
- const outputs: TextToCadMultiFileIteration_type['outputs'] = {}
- Object.entries(result.outputs).forEach(([key, value]) => {
- outputs[key] = value + '\n// yoyo a comment'
- })
- if (!isDesktop() && Object.values(outputs).length > 1) {
+ if (!isDesktop() && Object.values(result.outputs).length > 1) {
const toastId = uuidv4()
toast.error(
(t) => (
@@ -437,17 +485,23 @@ export async function promptToEditFlow({
)
return
}
-
if (isDesktop()) {
- // write all of the outputs to disk
- for (const [relativePath, fileContents] of Object.entries(outputs)) {
- window.electron.writeFile(
- window.electron.join(basePath, relativePath),
- fileContents
- )
+ const requestedFiles: RequestedKCLFile[] = []
+
+ for (const [relativePath, fileContents] of Object.entries(result.outputs)) {
+ requestedFiles.push({
+ requestedCode: fileContents,
+ requestedFileName: relativePath,
+ requestedProjectName: projectName,
+ })
}
+
+ await writeOverFilesAndExecute({
+ requestedFiles,
+ projectName,
+ })
} else {
- const newCode = outputs['main.kcl']
+ const newCode = result.outputs['main.kcl']
codeManager.updateCodeEditor(newCode)
const diff = reBuildNewCodeWithRanges(oldCodeWebAppOnly, newCode)
const ranges: SelectionRange[] = diff.insertRanges.map((range) =>
diff --git a/src/lib/routeLoaders.ts b/src/lib/routeLoaders.ts
index 020efedfb..255f2db59 100644
--- a/src/lib/routeLoaders.ts
+++ b/src/lib/routeLoaders.ts
@@ -21,6 +21,13 @@ import type {
IndexLoaderData,
} from '@src/lib/types'
import { settingsActor } from '@src/lib/singletons'
+import { NAVIGATION_COMPLETE_EVENT } from '@src/machines/systemIO/utils'
+
+export const telemetryLoader: LoaderFunction = async ({
+ params,
+}): Promise => {
+ return null
+}
export const fileLoader: LoaderFunction = async (
routerData
@@ -83,6 +90,7 @@ export const fileLoader: LoaderFunction = async (
// We pass true on the end here to clear the code editor history.
// This way undo and redo are not super weird when opening new files.
codeManager.updateCodeStateEditor(code, true)
+ window.dispatchEvent(new CustomEvent(NAVIGATION_COMPLETE_EVENT))
}
// Set the file system manager to the project path
diff --git a/src/lib/rustContext.ts b/src/lib/rustContext.ts
index 5d2792066..4b1dbedae 100644
--- a/src/lib/rustContext.ts
+++ b/src/lib/rustContext.ts
@@ -87,7 +87,7 @@ export default class RustContext {
JSON.stringify(settings)
)
/* Set the default planes, safe to call after execute. */
- const outcome = execStateFromRust(result, node)
+ const outcome = execStateFromRust(result)
this._defaultPlanes = outcome.defaultPlanes
@@ -161,29 +161,13 @@ export default class RustContext {
): Promise {
const instance = await this._checkInstance()
- const ast: Node = {
- body: [],
- shebang: null,
- start: 0,
- end: 0,
- moduleId: 0,
- nonCodeMeta: {
- nonCodeNodes: {},
- startNodes: [],
- },
- innerAttrs: [],
- outerAttrs: [],
- preComments: [],
- commentStart: 0,
- }
-
try {
const result = await instance.bustCacheAndResetScene(
JSON.stringify(settings),
path
)
/* Set the default planes, safe to call after execute. */
- const outcome = execStateFromRust(result, ast)
+ const outcome = execStateFromRust(result)
this._defaultPlanes = outcome.defaultPlanes
diff --git a/src/lib/toolbar.ts b/src/lib/toolbar.ts
index 135707220..089d3d23d 100644
--- a/src/lib/toolbar.ts
+++ b/src/lib/toolbar.ts
@@ -678,10 +678,6 @@ export const toolbarConfig: Record = {
status: 'available',
disabled: (state) => state.matches('Sketch no face'),
title: 'Center rectangle',
- hotkey: (state) =>
- state.matches({ Sketch: 'Center Rectangle tool' })
- ? ['Esc', 'C']
- : 'C',
description: 'Start drawing a rectangle from its center',
links: [],
isActive: (state) => {
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index 5e3f5dc9d..2fed50c17 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -5,6 +5,14 @@ import type { CallExpressionKw, SourceRange } from '@src/lang/wasm'
import { isDesktop } from '@src/lib/isDesktop'
import type { AsyncFn } from '@src/lib/types'
+import * as THREE from 'three'
+
+import type { EngineCommandManager } from '@src/lang/std/engineConnection'
+import type {
+ CameraViewState_type,
+ UnitLength_type,
+} from '@kittycad/lib/dist/types/src/models'
+
export const uuidv4 = v4
/**
@@ -532,3 +540,132 @@ export function getInVariableCase(name: string, prefixIfDigit = 'm') {
return likelyPascalCase.slice(0, 1).toLowerCase() + likelyPascalCase.slice(1)
}
+
+export function computeIsometricQuaternionForEmptyScene() {
+ // Create the direction vector you want to look from
+ const isoDir = new THREE.Vector3(1, 1, 1).normalize() // isometric look direction
+
+ // Target is the point you want to look at (e.g., origin)
+ const target = new THREE.Vector3(0, 0, 0)
+
+ // Compute quaternion for isometric view
+ const up = new THREE.Vector3(0, 0, 1) // default up direction
+ const quaternion = new THREE.Quaternion()
+ quaternion.setFromUnitVectors(new THREE.Vector3(0, 0, 1), isoDir) // align -Z with isoDir
+
+ // Align up vector using a lookAt matrix
+ const m = new THREE.Matrix4()
+ m.lookAt(new THREE.Vector3().addVectors(target, isoDir), target, up)
+ quaternion.setFromRotationMatrix(m)
+ return quaternion
+}
+
+export async function engineStreamZoomToFit({
+ engineCommandManager,
+ padding,
+}: {
+ engineCommandManager: EngineCommandManager
+ padding: number
+}) {
+ // It makes sense to also call zoom to fit here, when a new file is
+ // loaded for the first time, but not overtaking the work kevin did
+ // so the camera isn't moving all the time.
+ await engineCommandManager.sendSceneCommand({
+ type: 'modeling_cmd_req',
+ cmd_id: uuidv4(),
+ cmd: {
+ type: 'zoom_to_fit',
+ object_ids: [], // leave empty to zoom to all objects
+ padding, // padding around the objects
+ animated: false, // don't animate the zoom for now
+ },
+ })
+}
+
+export async function engineViewIsometricWithGeometryPresent({
+ engineCommandManager,
+ padding,
+}: {
+ engineCommandManager: EngineCommandManager
+ padding: number
+}) {
+ /**
+ * Default all users to view_isometric when loading into the engine.
+ * This works for perspective projection and orthographic projection
+ * This does not change the projection of the camera only the view direction which makes
+ * it safe to use with either projection defaulted
+ */
+ await engineCommandManager.sendSceneCommand({
+ type: 'modeling_cmd_req',
+ cmd_id: uuidv4(),
+ cmd: {
+ type: 'view_isometric',
+ padding, // padding around the objects
+ },
+ })
+
+ /**
+ * HACK: We need to update the gizmo, the command above doesn't trigger gizmo
+ * to render which makes the axis point in an old direction.
+ */
+ await engineCommandManager.sendSceneCommand({
+ type: 'modeling_cmd_req',
+ cmd_id: uuidv4(),
+ cmd: {
+ type: 'default_camera_get_settings',
+ },
+ })
+}
+
+export async function engineViewIsometricWithoutGeometryPresent({
+ engineCommandManager,
+ unit,
+}: {
+ engineCommandManager: EngineCommandManager
+ unit?: UnitLength_type
+}) {
+ // If you load an empty scene with any file unit it will have an eye offset of this
+ const MAGIC_ENGINE_EYE_OFFSET = 1378.0057
+ const quat = computeIsometricQuaternionForEmptyScene()
+ const isometricView: CameraViewState_type = {
+ pivot_rotation: {
+ x: quat.x,
+ y: quat.y,
+ z: quat.z,
+ w: quat.w,
+ },
+ pivot_position: {
+ x: 0,
+ y: 0,
+ z: 0,
+ },
+ eye_offset: MAGIC_ENGINE_EYE_OFFSET,
+ fov_y: 45,
+ ortho_scale_factor: 1.4063792,
+ is_ortho: true,
+ ortho_scale_enabled: true,
+ world_coord_system: 'right_handed_up_z',
+ }
+ await engineCommandManager.sendSceneCommand({
+ type: 'modeling_cmd_req',
+ cmd_id: uuidv4(),
+ cmd: {
+ type: 'default_camera_set_view',
+ view: {
+ ...isometricView,
+ },
+ },
+ })
+
+ /**
+ * HACK: We need to update the gizmo, the command above doesn't trigger gizmo
+ * to render which makes the axis point in an old direction.
+ */
+ await engineCommandManager.sendSceneCommand({
+ type: 'modeling_cmd_req',
+ cmd_id: uuidv4(),
+ cmd: {
+ type: 'default_camera_get_settings',
+ },
+ })
+}
diff --git a/src/lib/wasm_lib_wrapper.ts b/src/lib/wasm_lib_wrapper.ts
index d4f82e927..dc557b996 100644
--- a/src/lib/wasm_lib_wrapper.ts
+++ b/src/lib/wasm_lib_wrapper.ts
@@ -20,6 +20,7 @@ import type {
is_points_ccw as IsPointsCcw,
kcl_lint as KclLint,
kcl_settings as KclSettings,
+ node_path_from_range as NodePathFromRange,
parse_app_settings as ParseAppSettings,
parse_project_settings as ParseProjectSettings,
parse_wasm as ParseWasm,
@@ -60,6 +61,9 @@ export const format_number: typeof FormatNumber = (...args) => {
export const kcl_lint: typeof KclLint = (...args) => {
return getModule().kcl_lint(...args)
}
+export const node_path_from_range: typeof NodePathFromRange = (...args) => {
+ return getModule().node_path_from_range(...args)
+}
export const is_points_ccw: typeof IsPointsCcw = (...args) => {
return getModule().is_points_ccw(...args)
}
diff --git a/src/machines/modelingMachine.ts b/src/machines/modelingMachine.ts
index 7ab10afeb..0b1420ee0 100644
--- a/src/machines/modelingMachine.ts
+++ b/src/machines/modelingMachine.ts
@@ -2423,7 +2423,9 @@ export const modelingMachine = setup({
'VariableDeclarator'
)
if (err(extrudeNode)) {
- return new Error("Couldn't find extrude node", { cause: extrudeNode })
+ return new Error("Couldn't find extrude node", {
+ cause: extrudeNode,
+ })
}
// Perform the shell op
@@ -3314,10 +3316,7 @@ export const modelingMachine = setup({
'Artifact graph emptied': 'hidePlanes',
},
- entry: [
- 'show default planes',
- 'reset camera position',
- ],
+ entry: ['show default planes'],
description: `We want to disable selections and hover highlights here, because users can't do anything with that information until they actually add something to the scene. The planes are just for orientation here.`,
exit: 'set selection filter to defaults',
},
diff --git a/src/machines/systemIO/systemIOMachine.ts b/src/machines/systemIO/systemIOMachine.ts
index 93984de03..2fd66c3d9 100644
--- a/src/machines/systemIO/systemIOMachine.ts
+++ b/src/machines/systemIO/systemIOMachine.ts
@@ -1,6 +1,9 @@
import { DEFAULT_PROJECT_NAME } from '@src/lib/constants'
import type { Project } from '@src/lib/project'
-import type { SystemIOContext } from '@src/machines/systemIO/utils'
+import type {
+ SystemIOContext,
+ RequestedKCLFile,
+} from '@src/machines/systemIO/utils'
import {
NO_PROJECT_DIRECTORY,
SystemIOMachineActions,
@@ -43,11 +46,7 @@ export const systemIOMachine = setup({
}
| {
type: SystemIOMachineEvents.navigateToFile
- data: {
- requestedProjectName: string
- requestedFileName: string
- requestedSubRoute?: string
- }
+ data: { requestedProjectName: string; requestedFileName: string }
}
| {
type: SystemIOMachineEvents.createProject
@@ -73,13 +72,26 @@ export const systemIOMachine = setup({
requestedCode: string
}
}
+ | {
+ type: SystemIOMachineEvents.bulkCreateKCLFiles
+ data: {
+ files: RequestedKCLFile[]
+ }
+ }
+ | {
+ type: SystemIOMachineEvents.bulkCreateKCLFilesAndNavigateToProject
+ data: {
+ files: RequestedKCLFile[]
+ requestedProjectName: string
+ override?: boolean
+ }
+ }
| {
type: SystemIOMachineEvents.importFileFromURL
data: {
requestedProjectName: string
requestedFileName: string
requestedCode: string
- requestedSubRoute?: string
}
}
| {
@@ -122,9 +134,7 @@ export const systemIOMachine = setup({
[SystemIOMachineActions.setRequestedProjectName]: assign({
requestedProjectName: ({ event }) => {
assertEvent(event, SystemIOMachineEvents.navigateToProject)
- return {
- name: event.data.requestedProjectName,
- }
+ return { name: event.data.requestedProjectName }
},
}),
[SystemIOMachineActions.setRequestedFileName]: assign({
@@ -133,7 +143,6 @@ export const systemIOMachine = setup({
return {
project: event.data.requestedProjectName,
file: event.data.requestedFileName,
- subRoute: event.data.requestedSubRoute,
}
},
}),
@@ -232,15 +241,13 @@ export const systemIOMachine = setup({
requestedFileName: string
requestedCode: string
rootContext: AppMachineContext
- requestedSubRoute?: string
}
}): Promise<{
message: string
fileName: string
projectName: string
- subRoute: string
}> => {
- return { message: '', fileName: '', projectName: '', subRoute: '' }
+ return { message: '', fileName: '', projectName: '' }
}
),
[SystemIOMachineActors.checkReadWrite]: fromPromise(
@@ -272,6 +279,41 @@ export const systemIOMachine = setup({
return { message: '', fileName: '', projectName: '' }
}
),
+ [SystemIOMachineActors.bulkCreateKCLFiles]: fromPromise(
+ async ({
+ input,
+ }: {
+ input: {
+ context: SystemIOContext
+ files: RequestedKCLFile[]
+ rootContext: AppMachineContext
+ }
+ }): Promise<{
+ message: string
+ fileName: string
+ projectName: string
+ }> => {
+ return { message: '', fileName: '', projectName: '' }
+ }
+ ),
+ [SystemIOMachineActors.bulkCreateKCLFilesAndNavigateToProject]: fromPromise(
+ async ({
+ input,
+ }: {
+ input: {
+ context: SystemIOContext
+ files: RequestedKCLFile[]
+ rootContext: AppMachineContext
+ requestedProjectName: string
+ }
+ }): Promise<{
+ message: string
+ fileName: string
+ projectName: string
+ }> => {
+ return { message: '', fileName: '', projectName: '' }
+ }
+ ),
},
}).createMachine({
initial: SystemIOMachineStates.idle,
@@ -340,6 +382,13 @@ export const systemIOMachine = setup({
[SystemIOMachineEvents.deleteKCLFile]: {
target: SystemIOMachineStates.deletingKCLFile,
},
+ [SystemIOMachineEvents.bulkCreateKCLFiles]: {
+ target: SystemIOMachineStates.bulkCreatingKCLFiles,
+ },
+ [SystemIOMachineEvents.bulkCreateKCLFilesAndNavigateToProject]: {
+ target:
+ SystemIOMachineStates.bulkCreatingKCLFilesAndNavigateToProject,
+ },
},
},
[SystemIOMachineStates.readingFolders]: {
@@ -468,7 +517,6 @@ export const systemIOMachine = setup({
context,
requestedProjectName: event.data.requestedProjectName,
requestedFileName: event.data.requestedFileName,
- requestedSubRoute: event.data.requestedSubRoute,
requestedCode: event.data.requestedCode,
rootContext: self.system.get('root').getSnapshot().context,
}
@@ -487,7 +535,6 @@ export const systemIOMachine = setup({
return {
project: event.output.projectName,
file,
- subRoute: event.output.subRoute,
}
},
}),
@@ -542,5 +589,60 @@ export const systemIOMachine = setup({
},
},
},
+ [SystemIOMachineStates.bulkCreatingKCLFiles]: {
+ invoke: {
+ id: SystemIOMachineActors.bulkCreateKCLFiles,
+ src: SystemIOMachineActors.bulkCreateKCLFiles,
+ input: ({ context, event, self }) => {
+ assertEvent(event, SystemIOMachineEvents.bulkCreateKCLFiles)
+ return {
+ context,
+ files: event.data.files,
+ rootContext: self.system.get('root').getSnapshot().context,
+ }
+ },
+ onDone: {
+ target: SystemIOMachineStates.readingFolders,
+ },
+ onError: {
+ target: SystemIOMachineStates.idle,
+ actions: [SystemIOMachineActions.toastError],
+ },
+ },
+ },
+ [SystemIOMachineStates.bulkCreatingKCLFilesAndNavigateToProject]: {
+ invoke: {
+ id: SystemIOMachineActors.bulkCreateKCLFilesAndNavigateToProject,
+ src: SystemIOMachineActors.bulkCreateKCLFilesAndNavigateToProject,
+ input: ({ context, event, self }) => {
+ assertEvent(
+ event,
+ SystemIOMachineEvents.bulkCreateKCLFilesAndNavigateToProject
+ )
+ return {
+ context,
+ files: event.data.files,
+ rootContext: self.system.get('root').getSnapshot().context,
+ requestedProjectName: event.data.requestedProjectName,
+ override: event.data.override,
+ }
+ },
+ onDone: {
+ target: SystemIOMachineStates.readingFolders,
+ actions: [
+ assign({
+ requestedProjectName: ({ event }) => {
+ return { name: event.output.projectName }
+ },
+ }),
+ SystemIOMachineActions.toastSuccess,
+ ],
+ },
+ onError: {
+ target: SystemIOMachineStates.idle,
+ actions: [SystemIOMachineActions.toastError],
+ },
+ },
+ },
},
})
diff --git a/src/machines/systemIO/systemIOMachineDesktop.ts b/src/machines/systemIO/systemIOMachineDesktop.ts
index 4a382477b..7d31ac888 100644
--- a/src/machines/systemIO/systemIOMachineDesktop.ts
+++ b/src/machines/systemIO/systemIOMachineDesktop.ts
@@ -14,7 +14,10 @@ import {
} from '@src/lib/desktopFS'
import type { Project } from '@src/lib/project'
import { systemIOMachine } from '@src/machines/systemIO/systemIOMachine'
-import type { SystemIOContext } from '@src/machines/systemIO/utils'
+import type {
+ RequestedKCLFile,
+ SystemIOContext,
+} from '@src/machines/systemIO/utils'
import {
NO_PROJECT_DIRECTORY,
SystemIOMachineActors,
@@ -22,6 +25,69 @@ import {
import { fromPromise } from 'xstate'
import type { AppMachineContext } from '@src/lib/types'
+const sharedBulkCreateWorkflow = async ({
+ input,
+}: {
+ input: {
+ context: SystemIOContext
+ files: RequestedKCLFile[]
+ rootContext: AppMachineContext
+ override?: boolean
+ }
+}) => {
+ const configuration = await readAppSettingsFile()
+ for (let fileIndex = 0; fileIndex < input.files.length; fileIndex++) {
+ const file = input.files[fileIndex]
+ const requestedProjectName = file.requestedProjectName
+ const requestedFileName = file.requestedFileName
+ const requestedCode = file.requestedCode
+ const folders = input.context.folders
+
+ let newProjectName = requestedProjectName
+
+ if (!newProjectName) {
+ newProjectName = getUniqueProjectName(
+ input.context.defaultProjectFolderName,
+ input.context.folders
+ )
+ }
+
+ const needsInterpolated = doesProjectNameNeedInterpolated(newProjectName)
+ if (needsInterpolated) {
+ const nextIndex = getNextProjectIndex(newProjectName, folders)
+ newProjectName = interpolateProjectNameWithIndex(
+ newProjectName,
+ nextIndex
+ )
+ }
+
+ const baseDir = window.electron.join(
+ input.context.projectDirectoryPath,
+ newProjectName
+ )
+ // If override is true, use the requested filename directly
+ const fileName = input.override
+ ? requestedFileName
+ : getNextFileName({
+ entryName: requestedFileName,
+ baseDir,
+ }).name
+
+ // Create the project around the file if newProject
+ await createNewProjectDirectory(
+ newProjectName,
+ requestedCode,
+ configuration,
+ fileName
+ )
+ }
+ return {
+ message: 'Batch create success',
+ fileName: '',
+ projectName: '',
+ }
+}
+
export const systemIOMachineDesktop = systemIOMachine.provide({
actors: {
[SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
@@ -158,7 +224,6 @@ export const systemIOMachineDesktop = systemIOMachine.provide({
requestedFileName: string
requestedCode: string
rootContext: AppMachineContext
- requestedSubRoute?: string
}
}) => {
const requestedProjectName = input.requestedProjectName
@@ -207,7 +272,6 @@ export const systemIOMachineDesktop = systemIOMachine.provide({
message: 'File created successfully',
fileName: newFileName,
projectName: newProjectName,
- subRoute: input.requestedSubRoute || '',
}
}
),
@@ -253,5 +317,40 @@ export const systemIOMachineDesktop = systemIOMachine.provide({
}
}
),
+ [SystemIOMachineActors.bulkCreateKCLFiles]: fromPromise(
+ async ({
+ input,
+ }: {
+ input: {
+ context: SystemIOContext
+ files: RequestedKCLFile[]
+ rootContext: AppMachineContext
+ }
+ }) => {
+ return await sharedBulkCreateWorkflow({ input })
+ }
+ ),
+ [SystemIOMachineActors.bulkCreateKCLFilesAndNavigateToProject]: fromPromise(
+ async ({
+ input,
+ }: {
+ input: {
+ context: SystemIOContext
+ files: RequestedKCLFile[]
+ rootContext: AppMachineContext
+ requestedProjectName: string
+ override?: boolean
+ }
+ }) => {
+ const message = await sharedBulkCreateWorkflow({
+ input: {
+ ...input,
+ override: input.override,
+ },
+ })
+ message.projectName = input.requestedProjectName
+ return message
+ }
+ ),
},
})
diff --git a/src/machines/systemIO/systemIOMachineWeb.ts b/src/machines/systemIO/systemIOMachineWeb.ts
index 67034695e..cac7ef9ad 100644
--- a/src/machines/systemIO/systemIOMachineWeb.ts
+++ b/src/machines/systemIO/systemIOMachineWeb.ts
@@ -20,7 +20,6 @@ export const systemIOMachineWeb = systemIOMachine.provide({
requestedFileName: string
requestedCode: string
rootContext: AppMachineContext
- requestedSubRoute?: string
}
}) => {
// Browser version doesn't navigate, just overwrites the current file
@@ -44,7 +43,6 @@ export const systemIOMachineWeb = systemIOMachine.provide({
message: 'File overwritten successfully',
fileName: input.requestedFileName,
projectName: '',
- subRoute: input.requestedSubRoute || '',
}
}
),
diff --git a/src/machines/systemIO/utils.ts b/src/machines/systemIO/utils.ts
index a07605d6e..29e2813c1 100644
--- a/src/machines/systemIO/utils.ts
+++ b/src/machines/systemIO/utils.ts
@@ -8,9 +8,10 @@ export enum SystemIOMachineActors {
deleteProject = 'delete project',
createKCLFile = 'create kcl file',
checkReadWrite = 'check read write',
- /** TODO: rename this event to be more generic, like `createKCLFileAndNavigate` */
importFileFromURL = 'import file from URL',
deleteKCLFile = 'delete kcl delete',
+ bulkCreateKCLFiles = 'bulk create kcl files',
+ bulkCreateKCLFilesAndNavigateToProject = 'bulk create kcl files and navigate to project',
}
export enum SystemIOMachineStates {
@@ -22,9 +23,10 @@ export enum SystemIOMachineStates {
deletingProject = 'deletingProject',
creatingKCLFile = 'creatingKCLFile',
checkingReadWrite = 'checkingReadWrite',
- /** TODO: rename this event to be more generic, like `createKCLFileAndNavigate` */
importFileFromURL = 'importFileFromURL',
deletingKCLFile = 'deletingKCLFile',
+ bulkCreatingKCLFiles = 'bulkCreatingKCLFiles',
+ bulkCreatingKCLFilesAndNavigateToProject = 'bulkCreatingKCLFilesAndNavigateToProject',
}
const donePrefix = 'xstate.done.actor.'
@@ -43,11 +45,12 @@ export enum SystemIOMachineEvents {
createKCLFile = 'create kcl file',
setDefaultProjectFolderName = 'set default project folder name',
done_checkReadWrite = donePrefix + 'check read write',
- /** TODO: rename this event to be more generic, like `createKCLFileAndNavigate` */
importFileFromURL = 'import file from URL',
done_importFileFromURL = donePrefix + 'import file from URL',
generateTextToCAD = 'generate text to CAD',
deleteKCLFile = 'delete kcl file',
+ bulkCreateKCLFiles = 'bulk create kcl files',
+ bulkCreateKCLFilesAndNavigateToProject = 'bulk create kcl files and navigate to project',
}
export enum SystemIOMachineActions {
@@ -77,7 +80,7 @@ export type SystemIOContext = {
* this is required to prevent chokidar from spamming invalid events during initialization. */
hasListedProjects: boolean
requestedProjectName: { name: string }
- requestedFileName: { project: string; file: string; subRoute?: string }
+ requestedFileName: { project: string; file: string }
canReadWriteProjectDirectory: { value: boolean; error: unknown }
clearURLParams: { value: boolean }
requestedTextToCadGeneration: {
@@ -89,3 +92,12 @@ export type SystemIOContext = {
project: string
}
}
+
+export type RequestedKCLFile = {
+ requestedProjectName: string
+ requestedFileName: string
+ requestedCode: string
+}
+
+// Custom event for navigation completion
+export const NAVIGATION_COMPLETE_EVENT = 'navigation-complete'
diff --git a/src/menu/channels.ts b/src/menu/channels.ts
index 6312fa8db..f9ba9f5d8 100644
--- a/src/menu/channels.ts
+++ b/src/menu/channels.ts
@@ -6,7 +6,7 @@ import type { Channel } from '@src/channels'
export type MenuLabels =
| 'Help.Command Palette...'
| 'Help.Report a bug'
- | 'Help.Replay onboarding tutorial'
+ | 'Help.Reset onboarding'
| 'Edit.Rename project'
| 'Edit.Delete project'
| 'Edit.Change project directory'
diff --git a/src/menu/helpRole.ts b/src/menu/helpRole.ts
index b6941994a..de7a1c1af 100644
--- a/src/menu/helpRole.ts
+++ b/src/menu/helpRole.ts
@@ -84,11 +84,11 @@ export const helpRole = (
},
{ type: 'separator' },
{
- id: 'Help.Replay onboarding tutorial',
- label: 'Replay onboarding tutorial',
+ id: 'Help.Reset onboarding',
+ label: 'Reset onboarding',
click: () => {
typeSafeWebContentsSend(mainWindow, 'menu-action-clicked', {
- menuLabel: 'Help.Replay onboarding tutorial',
+ menuLabel: 'Help.Reset onboarding',
})
},
},
diff --git a/src/menu/roles.ts b/src/menu/roles.ts
index 5ead00a0f..8b51ad1da 100644
--- a/src/menu/roles.ts
+++ b/src/menu/roles.ts
@@ -45,7 +45,7 @@ type HelpRoleLabel =
| 'Ask the community discourse'
| 'KCL code samples'
| 'KCL docs'
- | 'Replay onboarding tutorial'
+ | 'Reset onboarding'
| 'Show release notes'
| 'Manage account'
| 'Get started with Text-to-CAD'
diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx
index aed35b0b8..475c05ed0 100644
--- a/src/routes/Home.tsx
+++ b/src/routes/Home.tsx
@@ -1,13 +1,8 @@
import type { FormEvent, HTMLProps } from 'react'
-import { useEffect, useRef } from 'react'
+import { useEffect } from 'react'
import { toast } from 'react-hot-toast'
import { useHotkeys } from 'react-hotkeys-hook'
-import {
- Link,
- useLocation,
- useNavigate,
- useSearchParams,
-} from 'react-router-dom'
+import { Link, useNavigate, useSearchParams } from 'react-router-dom'
import { ActionButton } from '@src/components/ActionButton'
import { AppHeader } from '@src/components/AppHeader'
@@ -24,7 +19,7 @@ import { isDesktop } from '@src/lib/isDesktop'
import { PATHS } from '@src/lib/paths'
import { markOnce } from '@src/lib/performance'
import type { Project } from '@src/lib/project'
-import { codeManager, kclManager } from '@src/lib/singletons'
+import { kclManager } from '@src/lib/singletons'
import {
getNextSearchParams,
getSortFunction,
@@ -44,12 +39,6 @@ import {
} from '@src/machines/systemIO/utils'
import type { WebContentSendPayload } from '@src/menu/channels'
import { openExternalBrowserIfDesktop } from '@src/lib/openWindow'
-import {
- acceptOnboarding,
- needsToOnboard,
- onDismissOnboardingInvite,
-} from '@src/routes/Onboarding/utils'
-import Tooltip from '@src/components/Tooltip'
type ReadWriteProjectState = {
value: boolean
@@ -80,10 +69,8 @@ const Home = () => {
})
})
- const location = useLocation()
const navigate = useNavigate()
const settings = useSettings()
- const onboardingStatus = settings.app.onboardingStatus.current
// Menu listeners
const cb = (data: WebContentSendPayload) => {
@@ -195,7 +182,6 @@ const Home = () => {
splitKey: '|',
}
)
- const ref = useRef(null)
const projects = useFolders()
const [searchParams, setSearchParams] = useSearchParams()
const { searchResults, query, setQuery } = useProjectSearch(projects)
@@ -204,9 +190,9 @@ const Home = () => {
'flex items-center p-2 gap-2 leading-tight border-transparent dark:border-transparent enabled:dark:border-transparent enabled:hover:border-primary/50 enabled:dark:hover:border-inherit active:border-primary dark:bg-transparent hover:bg-transparent'
return (
-
+
-
+
{
readWriteProjectDir={readWriteProjectDir}
className="col-start-2 -col-end-1"
/>
-
+
- {needsToOnboard(location, onboardingStatus) && (
-
- {
- acceptOnboarding({
- onboardingStatus,
- navigate,
- codeManager,
- kclManager,
- }).catch(reportRejection)
- }}
- className={`${sidebarButtonClasses} !text-primary flex-1`}
- iconStart={{
- icon: 'play',
- bgClassName: '!bg-primary rounded-sm',
- iconClassName: '!text-white',
- }}
- data-testid="home-tutorial-button"
- >
- {onboardingStatus === '' ? 'Start' : 'Continue'} tutorial
-
-
- Dismiss tutorial
-
-
- )}
{
sort={sort}
className="flex-1 col-start-2 -col-end-1 overflow-y-auto pr-2 pb-24"
/>
-
+
)
@@ -399,53 +349,55 @@ function HomeHeader({
return (
-
+
Projects
-
+
-
Sort by
-
setSearchParams(getNextSearchParams(sort, 'name'))}
- iconStart={{
- icon: getSortIcon(sort, 'name'),
- bgClassName: 'bg-transparent',
- iconClassName: !sort.includes('name')
- ? '!text-chalkboard-90 dark:!text-chalkboard-30'
- : '',
- }}
- >
- Name
-
-
- setSearchParams(getNextSearchParams(sort, 'modified'))
- }
- iconStart={{
- icon: sort ? getSortIcon(sort, 'modified') : 'arrowDown',
- bgClassName: 'bg-transparent',
- iconClassName: !isSortByModified
- ? '!text-chalkboard-90 dark:!text-chalkboard-30'
- : '',
- }}
- >
- Last Modified
-
+
+
Sort by
+
setSearchParams(getNextSearchParams(sort, 'name'))}
+ iconStart={{
+ icon: getSortIcon(sort, 'name'),
+ bgClassName: 'bg-transparent',
+ iconClassName: !sort.includes('name')
+ ? '!text-chalkboard-90 dark:!text-chalkboard-30'
+ : '',
+ }}
+ >
+ Name
+
+
+ setSearchParams(getNextSearchParams(sort, 'modified'))
+ }
+ iconStart={{
+ icon: sort ? getSortIcon(sort, 'modified') : 'arrowDown',
+ bgClassName: 'bg-transparent',
+ iconClassName: !isSortByModified
+ ? '!text-chalkboard-90 dark:!text-chalkboard-30'
+ : '',
+ }}
+ >
+ Last Modified
+
+
@@ -502,7 +454,7 @@ function ProjectGrid({
) : (
<>
{searchResults.length > 0 ? (
-
+
{searchResults.sort(getSortFunction(sort)).map((project) => (
) : (
- No Projects found
+ No projects found
{projects.length === 0
? ', ready to make your first one?'
: ` with the search term "${query}"`}
diff --git a/src/routes/Onboarding/Camera.tsx b/src/routes/Onboarding/Camera.tsx
index 199e26bed..211cd8e7b 100644
--- a/src/routes/Onboarding/Camera.tsx
+++ b/src/routes/Onboarding/Camera.tsx
@@ -1,11 +1,18 @@
import { SettingsSection } from '@src/components/Settings/SettingsSection'
import type { CameraSystem } from '@src/lib/cameraControls'
import { cameraMouseDragGuards, cameraSystems } from '@src/lib/cameraControls'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
import { settingsActor, useSettings } from '@src/lib/singletons'
-import { OnboardingButtons } from '@src/routes/Onboarding/utils'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
+import {
+ OnboardingButtons,
+ useDismiss,
+ useNextClick,
+} from '@src/routes/Onboarding/utils'
export default function Units() {
+ useDismiss()
+ useNextClick(onboardingPaths.STREAMING)
const {
modeling: { mouseControls },
} = useSettings()
@@ -59,7 +66,7 @@ export default function Units() {
diff --git a/src/routes/Onboarding/CmdK.tsx b/src/routes/Onboarding/CmdK.tsx
index 161f29742..7dc2e4e2c 100644
--- a/src/routes/Onboarding/CmdK.tsx
+++ b/src/routes/Onboarding/CmdK.tsx
@@ -1,7 +1,8 @@
import { COMMAND_PALETTE_HOTKEY } from '@src/components/CommandBar/CommandBar'
import usePlatform from '@src/hooks/usePlatform'
import { hotkeyDisplay } from '@src/lib/hotkeyWrapper'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons, kbdClasses } from '@src/routes/Onboarding/utils'
export default function CmdK() {
@@ -36,7 +37,7 @@ export default function CmdK() {
. You can control settings, authentication, and file management from
the command bar, as well as a growing number of modeling commands.
-
+
)
diff --git a/src/routes/Onboarding/CodeEditor.tsx b/src/routes/Onboarding/CodeEditor.tsx
index 597885016..e0e4e47fb 100644
--- a/src/routes/Onboarding/CodeEditor.tsx
+++ b/src/routes/Onboarding/CodeEditor.tsx
@@ -1,4 +1,5 @@
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import {
OnboardingButtons,
kbdClasses,
@@ -69,7 +70,7 @@ export default function OnboardingCodeEditor() {
pressing
Shift + C .
-
+
)
diff --git a/src/routes/Onboarding/Export.tsx b/src/routes/Onboarding/Export.tsx
index a7274c06f..5d14b4d87 100644
--- a/src/routes/Onboarding/Export.tsx
+++ b/src/routes/Onboarding/Export.tsx
@@ -1,5 +1,6 @@
import { APP_NAME } from '@src/lib/constants'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons } from '@src/routes/Onboarding/utils'
export default function Export() {
@@ -49,7 +50,7 @@ export default function Export() {
!
-
+
)
diff --git a/src/routes/Onboarding/FutureWork.tsx b/src/routes/Onboarding/FutureWork.tsx
index 0fbd75855..fa2756adf 100644
--- a/src/routes/Onboarding/FutureWork.tsx
+++ b/src/routes/Onboarding/FutureWork.tsx
@@ -1,9 +1,11 @@
import { useEffect } from 'react'
+
import { useModelingContext } from '@src/hooks/useModelingContext'
import { APP_NAME } from '@src/lib/constants'
import { sceneInfra } from '@src/lib/singletons'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons, useDemoCode } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
export default function FutureWork() {
const { send } = useModelingContext()
@@ -56,7 +58,7 @@ export default function FutureWork() {
💚 The Zoo Team
diff --git a/src/routes/Onboarding/InteractiveNumbers.tsx b/src/routes/Onboarding/InteractiveNumbers.tsx
index a6b336ac2..d5217f085 100644
--- a/src/routes/Onboarding/InteractiveNumbers.tsx
+++ b/src/routes/Onboarding/InteractiveNumbers.tsx
@@ -1,5 +1,6 @@
import { bracketWidthConstantLine } from '@src/lib/exampleKcl'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import {
OnboardingButtons,
kbdClasses,
@@ -84,9 +85,7 @@ export default function OnboardingInteractiveNumbers() {
your ideas for how to make it better.
-
+
)
diff --git a/src/routes/Onboarding/Introduction.tsx b/src/routes/Onboarding/Introduction.tsx
index e89d7bf43..ceb0eeb17 100644
--- a/src/routes/Onboarding/Introduction.tsx
+++ b/src/routes/Onboarding/Introduction.tsx
@@ -1,11 +1,124 @@
-import { APP_NAME } from '@src/lib/constants'
-import { isDesktop } from '@src/lib/isDesktop'
-import { Themes, getSystemTheme } from '@src/lib/theme'
-import { useSettings } from '@src/lib/singletons'
-import { OnboardingButtons, useDemoCode } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { useEffect, useState } from 'react'
+import { useNavigate, useRouteLoaderData } from 'react-router-dom'
-export default function Introduction() {
+import { useLspContext } from '@src/components/LspProvider'
+import { useFileContext } from '@src/hooks/useFileContext'
+import { isKclEmptyOrOnlySettings } from '@src/lang/wasm'
+import { APP_NAME } from '@src/lib/constants'
+import { createAndOpenNewTutorialProject } from '@src/lib/desktopFS'
+import { bracket } from '@src/lib/exampleKcl'
+import { isDesktop } from '@src/lib/isDesktop'
+import { PATHS } from '@src/lib/paths'
+import { codeManager, kclManager } from '@src/lib/singletons'
+import { Themes, getSystemTheme } from '@src/lib/theme'
+import { reportRejection } from '@src/lib/trap'
+import type { IndexLoaderData } from '@src/lib/types'
+import { useSettings } from '@src/lib/singletons'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
+import { OnboardingButtons, useDemoCode } from '@src/routes/Onboarding/utils'
+
+/**
+ * Show either a welcome screen or a warning screen
+ * depending on if the user has code in the editor.
+ */
+export default function OnboardingIntroduction() {
+ const [shouldShowWarning, setShouldShowWarning] = useState(
+ !isKclEmptyOrOnlySettings(codeManager.code) && codeManager.code !== bracket
+ )
+
+ return shouldShowWarning ? (
+
+ ) : (
+
+ )
+}
+
+interface OnboardingResetWarningProps {
+ setShouldShowWarning: (arg: boolean) => void
+}
+
+function OnboardingResetWarning(props: OnboardingResetWarningProps) {
+ return (
+
+
+ {!isDesktop() ? (
+
+ ) : (
+
+ )}
+
+
+ )
+}
+
+function OnboardingWarningDesktop(props: OnboardingResetWarningProps) {
+ const navigate = useNavigate()
+ const loaderData = useRouteLoaderData(PATHS.FILE) as IndexLoaderData
+ const { context: fileContext } = useFileContext()
+ const { onProjectClose, onProjectOpen } = useLspContext()
+
+ async function onAccept() {
+ onProjectClose(
+ loaderData.file || null,
+ fileContext.project.path || null,
+ false
+ )
+ await createAndOpenNewTutorialProject({ onProjectOpen, navigate })
+ props.setShouldShowWarning(false)
+ }
+
+ return (
+ <>
+
+ Would you like to create a new project?
+
+
+
+ You have some content in this project that we don't want to overwrite.
+ If you would like to create a new project, please click the button
+ below.
+
+
+ {
+ onAccept().catch(reportRejection)
+ }}
+ />
+ >
+ )
+}
+
+function OnboardingWarningWeb(props: OnboardingResetWarningProps) {
+ useEffect(() => {
+ async function beforeNavigate() {
+ // We do want to update both the state and editor here.
+ codeManager.updateCodeStateEditor(bracket)
+ await codeManager.writeToFile()
+
+ await kclManager.executeCode()
+ props.setShouldShowWarning(false)
+ }
+ return () => {
+ beforeNavigate().catch(reportRejection)
+ }
+ }, [])
+ return (
+ <>
+
+ Replaying onboarding resets your code
+
+
+ We see you have some of your own code written in this project. Please
+ save it somewhere else before continuing the onboarding.
+
+
+ >
+ )
+}
+
+function OnboardingIntroductionInner() {
// Reset the code to the bracket code
useDemoCode()
@@ -69,7 +182,7 @@ export default function Introduction() {
diff --git a/src/routes/Onboarding/ParametricModeling.tsx b/src/routes/Onboarding/ParametricModeling.tsx
index 189d00449..a3fb6fa24 100644
--- a/src/routes/Onboarding/ParametricModeling.tsx
+++ b/src/routes/Onboarding/ParametricModeling.tsx
@@ -2,8 +2,9 @@ import { bracketThicknessCalculationLine } from '@src/lib/exampleKcl'
import { isDesktop } from '@src/lib/isDesktop'
import { Themes, getSystemTheme } from '@src/lib/theme'
import { useSettings } from '@src/lib/singletons'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons, useDemoCode } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
export default function OnboardingParametricModeling() {
useDemoCode()
@@ -71,9 +72,7 @@ export default function OnboardingParametricModeling() {
-
+
)
diff --git a/src/routes/Onboarding/ProjectMenu.tsx b/src/routes/Onboarding/ProjectMenu.tsx
index 6e73d9a79..b8f3ee3d4 100644
--- a/src/routes/Onboarding/ProjectMenu.tsx
+++ b/src/routes/Onboarding/ProjectMenu.tsx
@@ -1,5 +1,6 @@
import { isDesktop } from '@src/lib/isDesktop'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons } from '@src/routes/Onboarding/utils'
export default function ProjectMenu() {
@@ -55,7 +56,7 @@ export default function ProjectMenu() {
>
)}
-
+
)
diff --git a/src/routes/Onboarding/Sketching.tsx b/src/routes/Onboarding/Sketching.tsx
index 652557048..e24c76c1a 100644
--- a/src/routes/Onboarding/Sketching.tsx
+++ b/src/routes/Onboarding/Sketching.tsx
@@ -1,7 +1,9 @@
import { useEffect } from 'react'
+
import { codeManager, kclManager } from '@src/lib/singletons'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
export default function Sketching() {
useEffect(() => {
@@ -40,7 +42,7 @@ export default function Sketching() {
always just modifying and generating code in Zoo Design Studio.
diff --git a/src/routes/Onboarding/Streaming.tsx b/src/routes/Onboarding/Streaming.tsx
index 1583ad922..ef052be59 100644
--- a/src/routes/Onboarding/Streaming.tsx
+++ b/src/routes/Onboarding/Streaming.tsx
@@ -1,4 +1,5 @@
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons } from '@src/routes/Onboarding/utils'
export default function Streaming() {
@@ -40,7 +41,7 @@ export default function Streaming() {
diff --git a/src/routes/Onboarding/Units.tsx b/src/routes/Onboarding/Units.tsx
index b56a1cde6..cbccf8e17 100644
--- a/src/routes/Onboarding/Units.tsx
+++ b/src/routes/Onboarding/Units.tsx
@@ -4,12 +4,13 @@ import { ActionButton } from '@src/components/ActionButton'
import { SettingsSection } from '@src/components/Settings/SettingsSection'
import { type BaseUnit, baseUnitsUnion } from '@src/lib/settings/settingsTypes'
import { settingsActor, useSettings } from '@src/lib/singletons'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { useDismiss, useNextClick } from '@src/routes/Onboarding/utils'
export default function Units() {
const dismiss = useDismiss()
- const next = useNextClick(ONBOARDING_SUBPATHS.CAMERA)
+ const next = useNextClick(onboardingPaths.CAMERA)
const {
modeling: { defaultUnit },
} = useSettings()
diff --git a/src/routes/Onboarding/UserMenu.tsx b/src/routes/Onboarding/UserMenu.tsx
index 533479349..e3e03fee9 100644
--- a/src/routes/Onboarding/UserMenu.tsx
+++ b/src/routes/Onboarding/UserMenu.tsx
@@ -1,7 +1,9 @@
import { useEffect, useState } from 'react'
+
import { useUser } from '@src/lib/singletons'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+
import { OnboardingButtons } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
export default function UserMenu() {
const user = useUser()
@@ -46,7 +48,7 @@ export default function UserMenu() {
only apply to the current project.
-
+
)
diff --git a/src/routes/Onboarding/index.tsx b/src/routes/Onboarding/index.tsx
index dbf7be278..1652d70ac 100644
--- a/src/routes/Onboarding/index.tsx
+++ b/src/routes/Onboarding/index.tsx
@@ -14,8 +14,8 @@ import ProjectMenu from '@src/routes/Onboarding/ProjectMenu'
import Sketching from '@src/routes/Onboarding/Sketching'
import Streaming from '@src/routes/Onboarding/Streaming'
import UserMenu from '@src/routes/Onboarding/UserMenu'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
import { useDismiss } from '@src/routes/Onboarding/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
export const onboardingRoutes = [
{
@@ -23,48 +23,48 @@ export const onboardingRoutes = [
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.CAMERA),
+ path: makeUrlPathRelative(onboardingPaths.CAMERA),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.STREAMING),
+ path: makeUrlPathRelative(onboardingPaths.STREAMING),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.EDITOR),
+ path: makeUrlPathRelative(onboardingPaths.EDITOR),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.PARAMETRIC_MODELING),
+ path: makeUrlPathRelative(onboardingPaths.PARAMETRIC_MODELING),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.INTERACTIVE_NUMBERS),
+ path: makeUrlPathRelative(onboardingPaths.INTERACTIVE_NUMBERS),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.COMMAND_K),
+ path: makeUrlPathRelative(onboardingPaths.COMMAND_K),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.USER_MENU),
+ path: makeUrlPathRelative(onboardingPaths.USER_MENU),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.PROJECT_MENU),
+ path: makeUrlPathRelative(onboardingPaths.PROJECT_MENU),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.EXPORT),
+ path: makeUrlPathRelative(onboardingPaths.EXPORT),
element: ,
},
// Export / conversion API
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.SKETCHING),
+ path: makeUrlPathRelative(onboardingPaths.SKETCHING),
element: ,
},
{
- path: makeUrlPathRelative(ONBOARDING_SUBPATHS.FUTURE_WORK),
+ path: makeUrlPathRelative(onboardingPaths.FUTURE_WORK),
element: ,
},
]
diff --git a/src/lib/onboardingPaths.ts b/src/routes/Onboarding/paths.ts
similarity index 83%
rename from src/lib/onboardingPaths.ts
rename to src/routes/Onboarding/paths.ts
index 95abdb1ca..f8a069331 100644
--- a/src/lib/onboardingPaths.ts
+++ b/src/routes/Onboarding/paths.ts
@@ -1,6 +1,6 @@
import type { OnboardingStatus } from '@rust/kcl-lib/bindings/OnboardingStatus'
-export const ONBOARDING_SUBPATHS: Record = {
+export const onboardingPaths: Record = {
INDEX: '/',
CAMERA: '/camera',
STREAMING: '/streaming',
@@ -11,6 +11,7 @@ export const ONBOARDING_SUBPATHS: Record = {
USER_MENU: '/user-menu',
PROJECT_MENU: '/project-menu',
EXPORT: '/export',
+ MOVE: '/move',
SKETCHING: '/sketching',
FUTURE_WORK: '/future-work',
} as const
diff --git a/src/routes/Onboarding/utils.tsx b/src/routes/Onboarding/utils.tsx
index 5a72b4716..30309ad87 100644
--- a/src/routes/Onboarding/utils.tsx
+++ b/src/routes/Onboarding/utils.tsx
@@ -1,9 +1,5 @@
import { useCallback, useEffect } from 'react'
-import {
- type NavigateFunction,
- type useLocation,
- useNavigate,
-} from 'react-router-dom'
+import { useNavigate } from 'react-router-dom'
import { waitFor } from 'xstate'
import { ActionButton } from '@src/components/ActionButton'
@@ -15,39 +11,30 @@ import { NetworkHealthState } from '@src/hooks/useNetworkStatus'
import { EngineConnectionStateType } from '@src/lang/std/engineConnection'
import { bracket } from '@src/lib/exampleKcl'
import makeUrlPathRelative from '@src/lib/makeUrlPathRelative'
-import { joinRouterPaths, PATHS } from '@src/lib/paths'
-import {
- codeManager,
- editorManager,
- kclManager,
- systemIOActor,
-} from '@src/lib/singletons'
+import { PATHS } from '@src/lib/paths'
+import { codeManager, editorManager, kclManager } from '@src/lib/singletons'
import { reportRejection, trap } from '@src/lib/trap'
import { settingsActor } from '@src/lib/singletons'
-import { isKclEmptyOrOnlySettings, parse, resultIsOk } from '@src/lang/wasm'
+import { onboardingRoutes } from '@src/routes/Onboarding'
+import { onboardingPaths } from '@src/routes/Onboarding/paths'
+import { parse, resultIsOk } from '@src/lang/wasm'
import { updateModelingState } from '@src/lang/modelingWorkflows'
-import {
- DEFAULT_PROJECT_KCL_FILE,
- EXECUTION_TYPE_REAL,
- ONBOARDING_PROJECT_NAME,
-} from '@src/lib/constants'
-import toast from 'react-hot-toast'
-import type CodeManager from '@src/lang/codeManager'
-import type { OnboardingStatus } from '@rust/kcl-lib/bindings/OnboardingStatus'
-import { isDesktop } from '@src/lib/isDesktop'
-import type { KclManager } from '@src/lang/KclSingleton'
-import { Logo } from '@src/components/Logo'
-import { SystemIOMachineEvents } from '@src/machines/systemIO/utils'
-import { ONBOARDING_SUBPATHS } from '@src/lib/onboardingPaths'
+import { EXECUTION_TYPE_REAL } from '@src/lib/constants'
export const kbdClasses =
'py-0.5 px-1 text-sm rounded bg-chalkboard-10 dark:bg-chalkboard-100 border border-chalkboard-50 border-b-2'
// Get the 1-indexed step number of the current onboarding step
function useStepNumber(
- slug?: (typeof ONBOARDING_SUBPATHS)[keyof typeof ONBOARDING_SUBPATHS]
+ slug?: (typeof onboardingPaths)[keyof typeof onboardingPaths]
) {
- return slug ? Object.values(ONBOARDING_SUBPATHS).indexOf(slug) + 1 : -1
+ return slug
+ ? slug === onboardingPaths.INDEX
+ ? 1
+ : onboardingRoutes.findIndex(
+ (r) => r.path === makeUrlPathRelative(slug)
+ ) + 1
+ : 1
}
export function useDemoCode() {
@@ -93,7 +80,7 @@ export function useNextClick(newStatus: string) {
data: { level: 'user', value: newStatus },
})
navigate(filePath + PATHS.ONBOARDING.INDEX.slice(0, -1) + newStatus)
- }, [filePath, newStatus, navigate])
+ }, [filePath, newStatus, settingsActor.send, navigate])
}
export function useDismiss() {
@@ -107,17 +94,9 @@ export function useDismiss() {
data: { level: 'user', value: 'dismissed' },
})
waitFor(settingsActor, (state) => state.matches('idle'))
- .then(() => {
- navigate(filePath)
- toast.success(
- 'Click the question mark in the lower-right corner if you ever want to redo the tutorial!',
- {
- duration: 5_000,
- }
- )
- })
+ .then(() => navigate(filePath))
.catch(reportRejection)
- }, [send, filePath, navigate])
+ }, [send])
return settingsCallback
}
@@ -128,31 +107,32 @@ export function OnboardingButtons({
onNextOverride,
...props
}: {
- currentSlug?: (typeof ONBOARDING_SUBPATHS)[keyof typeof ONBOARDING_SUBPATHS]
+ currentSlug?: (typeof onboardingPaths)[keyof typeof onboardingPaths]
className?: string
dismissClassName?: string
onNextOverride?: () => void
} & React.HTMLAttributes) {
- const onboardingPathsArray = Object.values(ONBOARDING_SUBPATHS)
const dismiss = useDismiss()
const stepNumber = useStepNumber(currentSlug)
const previousStep =
- !stepNumber || stepNumber <= 1 ? null : onboardingPathsArray[stepNumber]
- const goToPrevious = useNextClick(previousStep ?? ONBOARDING_SUBPATHS.INDEX)
+ !stepNumber || stepNumber === 0 ? null : onboardingRoutes[stepNumber - 2]
+ const goToPrevious = useNextClick(
+ onboardingPaths.INDEX + (previousStep?.path ?? '')
+ )
const nextStep =
- !stepNumber || stepNumber === onboardingPathsArray.length
+ !stepNumber || stepNumber === onboardingRoutes.length
? null
- : onboardingPathsArray[stepNumber]
- const goToNext = useNextClick(nextStep + ONBOARDING_SUBPATHS.INDEX)
+ : onboardingRoutes[stepNumber]
+ const goToNext = useNextClick(onboardingPaths.INDEX + (nextStep?.path ?? ''))
return (
<>
(previousStep ? goToPrevious() : dismiss())}
+ onClick={() =>
+ previousStep?.path || previousStep?.index
+ ? goToPrevious()
+ : dismiss()
+ }
iconStart={{
icon: previousStep ? 'arrowLeft' : 'close',
className: 'text-chalkboard-10',
@@ -178,18 +162,18 @@ export function OnboardingButtons({
className="hover:border-destroy-40 hover:bg-destroy-10/50 dark:hover:bg-destroy-80/50"
data-testid="onboarding-prev"
>
- {previousStep ? 'Back' : 'Dismiss'}
+ {previousStep ? `Back` : 'Dismiss'}
{stepNumber !== undefined && (
- {stepNumber} / {onboardingPathsArray.length}
+ {stepNumber} / {onboardingRoutes.length}
)}
{
- if (nextStep) {
+ if (nextStep?.path) {
onNextOverride ? onNextOverride() : goToNext()
} else {
dismiss()
@@ -202,221 +186,9 @@ export function OnboardingButtons({
className="dark:hover:bg-chalkboard-80/50"
data-testid="onboarding-next"
>
- {nextStep ? 'Next' : 'Finish'}
+ {nextStep ? `Next` : 'Finish'}
>
)
}
-
-export interface OnboardingUtilDeps {
- onboardingStatus: OnboardingStatus
- codeManager: CodeManager
- kclManager: KclManager
- navigate: NavigateFunction
-}
-
-export const ERROR_MUST_WARN = 'Must warn user before overwrite'
-
-/**
- * Accept to begin the onboarding tutorial,
- * depending on the platform and the state of the user's code.
- */
-export async function acceptOnboarding(deps: OnboardingUtilDeps) {
- if (isDesktop()) {
- /** TODO: rename this event to be more generic, like `createKCLFileAndNavigate` */
- systemIOActor.send({
- type: SystemIOMachineEvents.importFileFromURL,
- data: {
- requestedProjectName: ONBOARDING_PROJECT_NAME,
- requestedFileName: DEFAULT_PROJECT_KCL_FILE,
- requestedCode: bracket,
- requestedSubRoute: joinRouterPaths(
- PATHS.ONBOARDING.INDEX,
- deps.onboardingStatus
- ),
- },
- })
- return Promise.resolve()
- }
-
- const isCodeResettable = hasResetReadyCode(deps.codeManager)
- if (isCodeResettable) {
- return resetCodeAndAdvanceOnboarding(deps)
- }
-
- return Promise.reject(new Error(ERROR_MUST_WARN))
-}
-
-/**
- * Given that the user has accepted overwriting their web editor,
- * advance to the next step and clear their editor.
- */
-export async function resetCodeAndAdvanceOnboarding({
- onboardingStatus,
- codeManager,
- kclManager,
- navigate,
-}: OnboardingUtilDeps) {
- // We do want to update both the state and editor here.
- codeManager.updateCodeStateEditor(bracket)
- codeManager.writeToFile().catch(reportRejection)
- kclManager.executeCode().catch(reportRejection)
- // TODO: this is not navigating to the correct `/onboarding/blah` path yet
- navigate(
- makeUrlPathRelative(
- `${PATHS.ONBOARDING.INDEX}${makeUrlPathRelative(onboardingStatus)}`
- )
- )
-}
-
-function hasResetReadyCode(codeManager: CodeManager) {
- return (
- isKclEmptyOrOnlySettings(codeManager.code) || codeManager.code === bracket
- )
-}
-
-export function needsToOnboard(
- location: ReturnType,
- onboardingStatus: OnboardingStatus
-) {
- return (
- !location.pathname.includes(PATHS.ONBOARDING.INDEX) &&
- (onboardingStatus.length === 0 ||
- !(onboardingStatus === 'completed' || onboardingStatus === 'dismissed'))
- )
-}
-
-export const ONBOARDING_TOAST_ID = 'onboarding-toast'
-
-export function onDismissOnboardingInvite() {
- settingsActor.send({
- type: 'set.app.onboardingStatus',
- data: { level: 'user', value: 'dismissed' },
- })
- toast.dismiss(ONBOARDING_TOAST_ID)
- toast.success(
- 'Click the question mark in the lower-right corner if you ever want to do the tutorial!',
- {
- duration: 5_000,
- }
- )
-}
-
-export function TutorialRequestToast(props: OnboardingUtilDeps) {
- function onAccept() {
- acceptOnboarding(props)
- .then(() => {
- toast.dismiss(ONBOARDING_TOAST_ID)
- })
- .catch((reason) => catchOnboardingWarnError(reason, props))
- }
-
- return (
-
-
-
-
- Welcome to Zoo Design Studio
-
- Would you like a tutorial to show you around the app?
-
-
-
-
- Not right now
-
-
- Get started
-
-
-
-
- )
-}
-
-/**
- * Helper function to catch the `ERROR_MUST_WARN` error from
- * `acceptOnboarding` and show a warning toast.
- */
-export async function catchOnboardingWarnError(
- err: Error,
- props: OnboardingUtilDeps
-) {
- if (err instanceof Error && err.message === ERROR_MUST_WARN) {
- toast.success(TutorialWebConfirmationToast(props), {
- id: ONBOARDING_TOAST_ID,
- duration: Number.POSITIVE_INFINITY,
- icon: null,
- })
- } else {
- toast.dismiss(ONBOARDING_TOAST_ID)
- return reportRejection(err)
- }
-}
-
-export function TutorialWebConfirmationToast(props: OnboardingUtilDeps) {
- function onAccept() {
- toast.dismiss(ONBOARDING_TOAST_ID)
- resetCodeAndAdvanceOnboarding(props).catch(reportRejection)
- }
-
- return (
-
-
-
-
- The welcome tutorial resets your code in the browser
-
- We see you have some of your own code written in this project.
- Please save it somewhere else before continuing the onboarding.
-
-
-
-
- I'll save it
-
-
- Overwrite and begin
-
-
-
-
- )
-}
diff --git a/src/routes/SignIn.tsx b/src/routes/SignIn.tsx
index fd14429ef..67e48f30f 100644
--- a/src/routes/SignIn.tsx
+++ b/src/routes/SignIn.tsx
@@ -26,9 +26,7 @@ const SignIn = () => {
if (isDesktop()) {
window.electron.createFallbackMenu().catch(reportRejection)
// Disable these since they cannot be accessed within the sign in page.
- window.electron
- .disableMenu('Help.Replay onboarding tutorial')
- .catch(reportRejection)
+ window.electron.disableMenu('Help.Reset onboarding').catch(reportRejection)
window.electron.disableMenu('Help.Show all commands').catch(reportRejection)
}
diff --git a/src/routes/utils.ts b/src/routes/utils.ts
index bd8bcbd9a..441bc164a 100644
--- a/src/routes/utils.ts
+++ b/src/routes/utils.ts
@@ -1,6 +1,5 @@
import { NODE_ENV } from '@src/env'
import { isDesktop } from '@src/lib/isDesktop'
-
import { IS_PLAYWRIGHT_KEY } from '@src/lib/constants'
const isTestEnv = window?.localStorage.getItem(IS_PLAYWRIGHT_KEY) === 'true'
diff --git a/vite.config.ts b/vite.config.ts
index ba923f83e..ecdbba756 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -6,85 +6,90 @@ import version from 'vite-plugin-package-version'
import topLevelAwait from 'vite-plugin-top-level-await'
import viteTsconfigPaths from 'vite-tsconfig-paths'
import { configDefaults, defineConfig } from 'vitest/config'
+import MillionLint from '@million/lint'
-const config = defineConfig({
- server: {
- open: true,
- port: 3000,
- watch: {
- ignored: [
- '**/target/**',
- '**/dist/**',
- '**/build/**',
- '**/test-results/**',
- '**/playwright-report/**',
- ],
- },
- },
- test: {
- globals: true,
- pool: 'forks',
- poolOptions: {
- forks: {
- maxForks: 2,
- minForks: 1,
+export default defineConfig(({ command, mode }) => {
+ const runMillion = process.env.RUN_MILLION
+
+ return {
+ server: {
+ open: true,
+ port: 3000,
+ watch: {
+ ignored: [
+ '**/target/**',
+ '**/dist/**',
+ '**/build/**',
+ '**/test-results/**',
+ '**/playwright-report/**',
+ ],
},
},
- setupFiles: ['src/setupTests.ts', '@vitest/web-worker'],
- environment: 'happy-dom',
- coverage: {
- provider: 'istanbul', // or 'v8'
- },
- exclude: [...configDefaults.exclude, '**/e2e/**/*.spec.*', 'rust'],
- deps: {
- optimizer: {
- web: {
- include: ['vitest-canvas-mock'],
+ test: {
+ globals: true,
+ pool: 'forks',
+ poolOptions: {
+ forks: {
+ maxForks: 2,
+ minForks: 1,
},
},
+ setupFiles: ['src/setupTests.ts', '@vitest/web-worker'],
+ environment: 'happy-dom',
+ coverage: {
+ provider: 'istanbul', // or 'v8'
+ },
+ exclude: [...configDefaults.exclude, '**/e2e/**/*.spec.*', 'rust'],
+ deps: {
+ optimizer: {
+ web: {
+ include: ['vitest-canvas-mock'],
+ },
+ },
+ },
+ clearMocks: true,
+ restoreMocks: true,
+ mockReset: true,
+ reporters: process.env.GITHUB_ACTIONS
+ ? ['dot', 'github-actions']
+ : // Gotcha: 'hanging-process' is very noisey, turn off by default on localhost
+ // : ['verbose', 'hanging-process'],
+ ['verbose'],
+ testTimeout: 1000,
+ hookTimeout: 1000,
+ teardownTimeout: 1000,
},
- clearMocks: true,
- restoreMocks: true,
- mockReset: true,
- reporters: process.env.GITHUB_ACTIONS
- ? ['dot', 'github-actions']
- : // Gotcha: 'hanging-process' is very noisey, turn off by default on localhost
- // : ['verbose', 'hanging-process'],
- ['verbose'],
- testTimeout: 1000,
- hookTimeout: 1000,
- teardownTimeout: 1000,
- },
- build: {
- outDir: 'build',
- },
- resolve: {
- alias: {
- '@kittycad/codemirror-lsp-client': '/packages/codemirror-lsp-client/src',
- '@kittycad/codemirror-lang-kcl': '/packages/codemirror-lang-kcl/src',
- '@rust': '/rust',
- '@e2e': '/e2e',
- '@src': '/src',
- '@public': '/public',
- '@root': '/',
+ build: {
+ outDir: 'build',
},
- },
- plugins: [
- react(),
- viteTsconfigPaths(),
- eslint(),
- version(),
- lezer(),
- topLevelAwait({
- // The export name of top-level await promise for each chunk module
- promiseExportName: '__tla',
- // The function to generate import names of top-level await promise in each chunk module
- promiseImportName: (i) => `__tla_${i}`,
- }),
- ],
- worker: {
- plugins: () => [viteTsconfigPaths()],
- },
+ resolve: {
+ alias: {
+ '@kittycad/codemirror-lsp-client':
+ '/packages/codemirror-lsp-client/src',
+ '@kittycad/codemirror-lang-kcl': '/packages/codemirror-lang-kcl/src',
+ '@rust': '/rust',
+ '@e2e': '/e2e',
+ '@src': '/src',
+ '@public': '/public',
+ '@root': '/',
+ },
+ },
+ plugins: [
+ react(),
+ viteTsconfigPaths(),
+ eslint(),
+ version(),
+ lezer(),
+ topLevelAwait({
+ // The export name of top-level await promise for each chunk module
+ promiseExportName: '__tla',
+ // The function to generate import names of top-level await promise in each chunk module
+ promiseImportName: (i) => `__tla_${i}`,
+ }),
+ runMillion && MillionLint.vite(),
+ ],
+ worker: {
+ plugins: () => [viteTsconfigPaths()],
+ },
+ }
})
-
-export default config