Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
Nick Cameron
2024-10-21 20:08:39 +13:00
parent c42967d0e7
commit a172e606b4
140 changed files with 18989 additions and 14869 deletions

View File

@ -9,7 +9,7 @@ Draw a line segment relative to the current origin using the polar
measure of some angle and distance. measure of some angle and distance.
```js ```js
angledLine(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLine(data: AngledLineData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLine(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | | `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Create a line segment from the current 2-dimensional sketch origin
along some angle (in degrees) for some relative length in the 'x' dimension. along some angle (in degrees) for some relative length in the 'x' dimension.
```js ```js
angledLineOfXLength(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLineOfXLength(data: AngledLineData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLineOfXLength(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | | `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Create a line segment from the current 2-dimensional sketch origin
along some angle (in degrees) for some relative length in the 'y' dimension. along some angle (in degrees) for some relative length in the 'y' dimension.
```js ```js
angledLineOfYLength(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLineOfYLength(data: AngledLineData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLineOfYLength(data: AngledLineData, sketch: Sketch, tag?: TagDeclarator) -
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | | `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw an angled line from the current origin, constructing a line segment
such that the newly created line intersects the desired target line segment. such that the newly created line intersects the desired target line segment.
```js ```js
angledLineThatIntersects(data: AngledLineThatIntersectsData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLineThatIntersects(data: AngledLineThatIntersectsData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLineThatIntersects(data: AngledLineThatIntersectsData, sketch: Sketch, tag
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineThatIntersectsData`](/docs/kcl/types/AngledLineThatIntersectsData) | Data for drawing an angled line that intersects with a given line. | Yes | | `data` | [`AngledLineThatIntersectsData`](/docs/kcl/types/AngledLineThatIntersectsData) | Data for drawing an angled line that intersects with a given line. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Create a line segment from the current 2-dimensional sketch origin
along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension. along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension.
```js ```js
angledLineToX(data: AngledLineToData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLineToX(data: AngledLineToData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLineToX(data: AngledLineToData, sketch: Sketch, tag?: TagDeclarator) -> Sk
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes | | `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Create a line segment from the current 2-dimensional sketch origin
along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension. along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension.
```js ```js
angledLineToY(data: AngledLineToData, sketch: Sketch, tag?: TagDeclarator) -> Sketch angledLineToY(data: AngledLineToData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ angledLineToY(data: AngledLineToData, sketch: Sketch, tag?: TagDeclarator) -> Sk
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes | | `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -11,7 +11,7 @@ The arc is constructed such that the current position of the sketch is placed al
Unless this makes a lot of sense and feels like what you're looking for to construct your shape, you're likely looking for tangentialArc. Unless this makes a lot of sense and feels like what you're looking for to construct your shape, you're likely looking for tangentialArc.
```js ```js
arc(data: ArcData, sketch: Sketch, tag?: TagDeclarator) -> Sketch arc(data: ArcData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -21,7 +21,7 @@ arc(data: ArcData, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`ArcData`](/docs/kcl/types/ArcData) | Data to draw an arc. | Yes | | `data` | [`ArcData`](/docs/kcl/types/ArcData) | Data to draw an arc. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a smooth, continuous, curved line segment from the current origin to
the desired (x, y), using a number of control points to shape the curve's shape. the desired (x, y), using a number of control points to shape the curve's shape.
```js ```js
bezierCurve(data: BezierData, sketch: Sketch, tag?: TagDeclarator) -> Sketch bezierCurve(data: BezierData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ bezierCurve(data: BezierData, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`BezierData`](/docs/kcl/types/BezierData) | Data to draw a bezier curve. | Yes | | `data` | [`BezierData`](/docs/kcl/types/BezierData) | Data to draw a bezier curve. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Cut a straight transitional edge along a tagged path.
Chamfer is similar in function and use to a fillet, except a fillet will blend the transition along an edge, rather than cut a sharp, straight transitional edge. Chamfer is similar in function and use to a fillet, except a fillet will blend the transition along an edge, rather than cut a sharp, straight transitional edge.
```js ```js
chamfer(data: ChamferData, solid: Solid, tag?: TagDeclarator) -> Solid chamfer(data: ChamferData, solid: Solid, tag?: TagNode) -> Solid
``` ```
@ -19,7 +19,7 @@ chamfer(data: ChamferData, solid: Solid, tag?: TagDeclarator) -> Solid
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`ChamferData`](/docs/kcl/types/ChamferData) | Data for chamfers. | Yes | | `data` | [`ChamferData`](/docs/kcl/types/ChamferData) | Data for chamfers. | Yes |
| `solid` | [`Solid`](/docs/kcl/types/Solid) | An solid is a collection of extrude surfaces. | Yes | | `solid` | [`Solid`](/docs/kcl/types/Solid) | An solid is a collection of extrude surfaces. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Construct a 2-dimensional circle, of the specified radius, centered at
the provided (x, y) origin point. the provided (x, y) origin point.
```js ```js
circle(data: CircleData, sketch_surface_or_group: SketchOrSurface, tag?: TagDeclarator) -> Sketch circle(data: CircleData, sketch_surface_or_group: SketchOrSurface, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ circle(data: CircleData, sketch_surface_or_group: SketchOrSurface, tag?: TagDecl
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`CircleData`](/docs/kcl/types/CircleData) | Data for drawing an circle | Yes | | `data` | [`CircleData`](/docs/kcl/types/CircleData) | Data for drawing an circle | Yes |
| `sketch_surface_or_group` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | A sketch surface or a sketch. | Yes | | `sketch_surface_or_group` | [`SketchOrSurface`](/docs/kcl/types/SketchOrSurface) | A sketch surface or a sketch. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Construct a line segment from the current origin back to the profile's
origin, ensuring the resulting 2-dimensional sketch is not open-ended. origin, ensuring the resulting 2-dimensional sketch is not open-ended.
```js ```js
close(sketch: Sketch, tag?: TagDeclarator) -> Sketch close(sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -18,7 +18,7 @@ close(sketch: Sketch, tag?: TagDeclarator) -> Sketch
| Name | Type | Description | Required | | Name | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Blend a transitional edge along a tagged path, smoothing the sharp edge.
Fillet is similar in function and use to a chamfer, except a chamfer will cut a sharp transition along an edge while fillet will smoothly blend the transition. Fillet is similar in function and use to a chamfer, except a chamfer will cut a sharp transition along an edge while fillet will smoothly blend the transition.
```js ```js
fillet(data: FilletData, solid: Solid, tag?: TagDeclarator) -> Solid fillet(data: FilletData, solid: Solid, tag?: TagNode) -> Solid
``` ```
@ -19,7 +19,7 @@ fillet(data: FilletData, solid: Solid, tag?: TagDeclarator) -> Solid
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`FilletData`](/docs/kcl/types/FilletData) | Data for fillets. | Yes | | `data` | [`FilletData`](/docs/kcl/types/FilletData) | Data for fillets. | Yes |
| `solid` | [`Solid`](/docs/kcl/types/Solid) | An solid is a collection of extrude surfaces. | Yes | | `solid` | [`Solid`](/docs/kcl/types/Solid) | An solid is a collection of extrude surfaces. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a line relative to the current origin to a specified (x, y) away
from the current position. from the current position.
```js ```js
line(delta: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch line(delta: [number], sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ line(delta: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `delta` | `[number]` | | Yes | | `delta` | `[number]` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a line from the current origin to some absolute (x, y) point.
```js ```js
lineTo(to: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch lineTo(to: [number], sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ lineTo(to: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `to` | `[number]` | | Yes | | `to` | `[number]` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Start a new profile at a given point.
```js ```js
startProfileAt(to: [number], sketch_surface: SketchSurface, tag?: TagDeclarator) -> Sketch startProfileAt(to: [number], sketch_surface: SketchSurface, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ startProfileAt(to: [number], sketch_surface: SketchSurface, tag?: TagDeclarator)
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `to` | `[number]` | | Yes | | `to` | `[number]` | | Yes |
| `sketch_surface` | [`SketchSurface`](/docs/kcl/types/SketchSurface) | A sketch type. | Yes | | `sketch_surface` | [`SketchSurface`](/docs/kcl/types/SketchSurface) | A sketch type. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ Draw a curved line segment along part of an imaginary circle.
The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'offset' degrees along the imaginary circle. The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'offset' degrees along the imaginary circle.
```js ```js
tangentialArc(data: TangentialArcData, sketch: Sketch, tag?: TagDeclarator) -> Sketch tangentialArc(data: TangentialArcData, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ tangentialArc(data: TangentialArcData, sketch: Sketch, tag?: TagDeclarator) -> S
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `data` | [`TangentialArcData`](/docs/kcl/types/TangentialArcData) | Data to draw a tangential arc. | Yes | | `data` | [`TangentialArcData`](/docs/kcl/types/TangentialArcData) | Data to draw a tangential arc. | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Starting at the current sketch's origin, draw a curved line segment along
some part of an imaginary circle until it reaches the desired (x, y) coordinates. some part of an imaginary circle until it reaches the desired (x, y) coordinates.
```js ```js
tangentialArcTo(to: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch tangentialArcTo(to: [number], sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ tangentialArcTo(to: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `to` | `[number]` | | Yes | | `to` | `[number]` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Starting at the current sketch's origin, draw a curved line segment along
some part of an imaginary circle until it reaches a point the given (x, y) distance away. some part of an imaginary circle until it reaches a point the given (x, y) distance away.
```js ```js
tangentialArcToRelative(delta: [number], sketch: Sketch, tag?: TagDeclarator) -> Sketch tangentialArcToRelative(delta: [number], sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ tangentialArcToRelative(delta: [number], sketch: Sketch, tag?: TagDeclarator) ->
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `delta` | `[number]` | | Yes | | `delta` | `[number]` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -18,7 +18,7 @@ A base path.
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |

View File

@ -22,12 +22,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `Literal`| | No | | `type` |enum: [`Literal`](/docs/kcl/types/Literal)| | No |
| `kind` |[`Literal`](/docs/kcl/types/Literal)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No |
| `raw` |`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 |
---- ----
@ -43,10 +41,9 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `name` |`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 |
---- ----
@ -61,13 +58,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `BinaryExpression`| | No | | `type` |enum: [`BinaryExpression`](/docs/kcl/types/BinaryExpression)| | No |
| `kind` |[`BinaryExpression`](/docs/kcl/types/BinaryExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| | No |
| `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No |
| `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | 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 |
---- ----
@ -82,13 +76,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `CallExpression`| | No | | `type` |enum: [`CallExpression`](/docs/kcl/types/CallExpression)| | No |
| `kind` |[`CallExpression`](/docs/kcl/types/CallExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `callee` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No |
| `optional` |`boolean`| | 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 |
---- ----
@ -103,12 +94,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `UnaryExpression`| | No | | `type` |enum: [`UnaryExpression`](/docs/kcl/types/UnaryExpression)| | No |
| `kind` |[`UnaryExpression`](/docs/kcl/types/UnaryExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| | No |
| `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | 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 |
---- ----
@ -123,13 +112,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `MemberExpression`| | No | | `type` |enum: [`MemberExpression`](/docs/kcl/types/MemberExpression)| | No |
| `kind` |[`MemberExpression`](/docs/kcl/types/MemberExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No |
| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No |
| `computed` |`boolean`| | 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 |
---- ----
@ -144,14 +130,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `IfExpression`| | No | | `type` |enum: [`IfExpression`](/docs/kcl/types/IfExpression)| | No |
| `kind` |[`IfExpression`](/docs/kcl/types/IfExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `cond` |[`Expr`](/docs/kcl/types/Expr)| | No |
| `then_val` |[`Program`](/docs/kcl/types/Program)| | No |
| `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No |
| `final_else` |[`Program`](/docs/kcl/types/Program)| | 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 |
---- ----

View File

@ -22,13 +22,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ImportStatement`| | No | | `type` |enum: [`ImportStatement`](/docs/kcl/types/ImportStatement)| | No |
| `kind` |[`ImportStatement`](/docs/kcl/types/ImportStatement)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `items` |`[` [`ImportItem`](/docs/kcl/types/ImportItem) `]`| | No |
| `path` |`string`| | No |
| `raw_path` |`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 |
---- ----
@ -43,11 +40,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ExpressionStatement`| | No | | `type` |enum: [`ExpressionStatement`](/docs/kcl/types/ExpressionStatement)| | No |
| `kind` |[`ExpressionStatement`](/docs/kcl/types/ExpressionStatement)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `expression` |[`Expr`](/docs/kcl/types/Expr)| | 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 |
---- ----
@ -62,13 +58,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `VariableDeclaration`| | No | | `type` |enum: [`VariableDeclaration`](/docs/kcl/types/VariableDeclaration)| | No |
| `kind` |[`VariableDeclaration`](/docs/kcl/types/VariableDeclaration)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `declarations` |`[` [`VariableDeclarator`](/docs/kcl/types/VariableDeclarator) `]`| | No |
| `visibility` |[`ItemVisibility`](/docs/kcl/types/ItemVisibility)| | No |
| `kind` |[`VariableKind`](/docs/kcl/types/VariableKind)| | 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 |
---- ----
@ -83,11 +76,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ReturnStatement`| | No | | `type` |enum: [`ReturnStatement`](/docs/kcl/types/ReturnStatement)| | No |
| `kind` |[`ReturnStatement`](/docs/kcl/types/ReturnStatement)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `argument` |[`Expr`](/docs/kcl/types/Expr)| | 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 |
---- ----

View File

@ -28,7 +28,7 @@ A fillet.
| `id` |`string`| The id of the engine command that called this fillet. | No | | `id` |`string`| The id of the engine command that called this fillet. | No |
| `radius` |`number`| | No | | `radius` |`number`| | No |
| `edgeId` |`string`| The engine id of the edge to fillet. | No | | `edgeId` |`string`| The engine id of the edge to fillet. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| | No |
---- ----
@ -48,7 +48,7 @@ A chamfer.
| `id` |`string`| The id of the engine command that called this chamfer. | No | | `id` |`string`| The id of the engine command that called this chamfer. | No |
| `length` |`number`| | No | | `length` |`number`| | No |
| `edgeId` |`string`| The engine id of the edge to chamfer. | No | | `edgeId` |`string`| The engine id of the edge to chamfer. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| | No |
---- ----

View File

@ -15,10 +15,8 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `cond` |[`Expr`](/docs/kcl/types/Expr)| | No | | `cond` |[`Expr`](/docs/kcl/types/Expr)| | No |
| `then_val` |[`Program`](/docs/kcl/types/Program)| | No | | `then_val` |[`UnboxedNode_for_Program`](/docs/kcl/types/UnboxedNode_for_Program)| | 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 | | `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 |

View File

@ -23,12 +23,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `Literal`| | No | | `type` |enum: [`Literal`](/docs/kcl/types/Literal)| | No |
| `kind` |[`Literal`](/docs/kcl/types/Literal)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| An expression can be evaluated to yield a single KCL value. | No |
| `raw` |`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 |
---- ----
@ -44,10 +42,9 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `name` |`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 |
---- ----
@ -63,10 +60,9 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | | `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No |
| `kind` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |`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 |
---- ----
@ -81,13 +77,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `BinaryExpression`| | No | | `type` |enum: [`BinaryExpression`](/docs/kcl/types/BinaryExpression)| | No |
| `kind` |[`BinaryExpression`](/docs/kcl/types/BinaryExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| An expression can be evaluated to yield a single KCL value. | No |
| `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No |
| `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -103,11 +96,9 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`FunctionExpression`](/docs/kcl/types/FunctionExpression)| | No | | `type` |enum: [`FunctionExpression`](/docs/kcl/types/FunctionExpression)| | No |
| `kind` |[`FunctionExpression`](/docs/kcl/types/FunctionExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No |
| `body` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -122,13 +113,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `CallExpression`| | No | | `type` |enum: [`CallExpression`](/docs/kcl/types/CallExpression)| | No |
| `kind` |[`CallExpression`](/docs/kcl/types/CallExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `callee` |[`Identifier`](/docs/kcl/types/Identifier)| An expression can be evaluated to yield a single KCL value. | No |
| `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No |
| `optional` |`boolean`| | 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 |
---- ----
@ -143,12 +131,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `PipeExpression`| | No | | `type` |enum: [`PipeExpression`](/docs/kcl/types/PipeExpression)| | No |
| `kind` |[`PipeExpression`](/docs/kcl/types/PipeExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `body` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No |
| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -163,10 +149,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `PipeSubstitution`| | No | | `type` |enum: [`PipeSubstitution`](/docs/kcl/types/PipeSubstitution)| | No |
| `kind` |[`PipeSubstitution`](/docs/kcl/types/PipeSubstitution)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | 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 |
---- ----
@ -181,12 +167,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ArrayExpression`| | No | | `type` |enum: [`ArrayExpression`](/docs/kcl/types/ArrayExpression)| | No |
| `kind` |[`ArrayExpression`](/docs/kcl/types/ArrayExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `elements` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No |
| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -201,13 +185,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ArrayRangeExpression`| | No | | `type` |enum: [`ArrayRangeExpression`](/docs/kcl/types/ArrayRangeExpression)| | No |
| `kind` |[`ArrayRangeExpression`](/docs/kcl/types/ArrayRangeExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `startElement` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No |
| `endElement` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No |
| `endInclusive` |`boolean`| Is the `end_element` included in the range? | 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 |
---- ----
@ -222,12 +203,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `ObjectExpression`| | No | | `type` |enum: [`ObjectExpression`](/docs/kcl/types/ObjectExpression)| | No |
| `kind` |[`ObjectExpression`](/docs/kcl/types/ObjectExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `properties` |`[` [`ObjectProperty`](/docs/kcl/types/ObjectProperty) `]`| | No |
| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -242,13 +221,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `MemberExpression`| | No | | `type` |enum: [`MemberExpression`](/docs/kcl/types/MemberExpression)| | No |
| `kind` |[`MemberExpression`](/docs/kcl/types/MemberExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| An expression can be evaluated to yield a single KCL value. | No |
| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| An expression can be evaluated to yield a single KCL value. | No |
| `computed` |`boolean`| | 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 |
---- ----
@ -263,12 +239,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `UnaryExpression`| | No | | `type` |enum: [`UnaryExpression`](/docs/kcl/types/UnaryExpression)| | No |
| `kind` |[`UnaryExpression`](/docs/kcl/types/UnaryExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| An expression can be evaluated to yield a single KCL value. | No |
| `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----
@ -283,14 +257,10 @@ An expression can be evaluated to yield a single KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `IfExpression`| | No | | `type` |enum: [`IfExpression`](/docs/kcl/types/IfExpression)| | No |
| `kind` |[`IfExpression`](/docs/kcl/types/IfExpression)| An expression can be evaluated to yield a single KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `cond` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No |
| `then_val` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No |
| `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No |
| `final_else` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | 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 |
---- ----

View File

@ -26,7 +26,7 @@ An extrude plane.
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `extrudePlane`| | No | | `type` |enum: `extrudePlane`| | No |
| `faceId` |`string`| The face id for the extrude plane. | No | | `faceId` |`string`| The face id for the extrude plane. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag. | No |
| `id` |`string`| The id of the geometry. | No | | `id` |`string`| The id of the geometry. | No |
| `sourceRange` |`SourceRange`| The source range. | No | | `sourceRange` |`SourceRange`| The source range. | No |
@ -46,7 +46,7 @@ An extruded arc.
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `extrudeArc`| | No | | `type` |enum: `extrudeArc`| | No |
| `faceId` |`string`| The face id for the extrude plane. | No | | `faceId` |`string`| The face id for the extrude plane. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag. | No |
| `id` |`string`| The id of the geometry. | No | | `id` |`string`| The id of the geometry. | No |
| `sourceRange` |`SourceRange`| The source range. | No | | `sourceRange` |`SourceRange`| The source range. | No |
@ -66,7 +66,7 @@ Geometry metadata.
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `chamfer`| | No | | `type` |enum: `chamfer`| | No |
| `faceId` |`string`| The id for the chamfer surface. | No | | `faceId` |`string`| The id for the chamfer surface. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag. | No |
| `id` |`string`| The id of the geometry. | No | | `id` |`string`| The id of the geometry. | No |
| `sourceRange` |`SourceRange`| The source range. | No | | `sourceRange` |`SourceRange`| The source range. | No |
@ -86,7 +86,7 @@ Geometry metadata.
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `fillet`| | No | | `type` |enum: `fillet`| | No |
| `faceId` |`string`| The id for the fillet surface. | No | | `faceId` |`string`| The id for the fillet surface. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag. | No |
| `id` |`string`| The id of the geometry. | No | | `id` |`string`| The id of the geometry. | No |
| `sourceRange` |`SourceRange`| The source range. | No | | `sourceRange` |`SourceRange`| The source range. | No |

View File

@ -15,10 +15,8 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No | | `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No |
| `body` |[`Program`](/docs/kcl/types/Program)| | No | | `body` |[`UnboxedNode_for_Program`](/docs/kcl/types/UnboxedNode_for_Program)| | 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 | | `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 |

View File

@ -15,8 +15,6 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `name` |`string`| | No | | `name` |`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 | | `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 |

View File

@ -15,10 +15,8 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `name` |[`Identifier`](/docs/kcl/types/Identifier)| Name of the item to import. | No | | `name` |[`UnboxedNode_for_Identifier`](/docs/kcl/types/UnboxedNode_for_Identifier)| Name of the item to import. | No |
| `alias` |[`Identifier`](/docs/kcl/types/Identifier)| Rename the item using an identifier after "as". | No | | `alias` |[`UnboxedNode_for_Identifier`](/docs/kcl/types/UnboxedNode_for_Identifier)| Rename the item using an identifier after "as". | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | 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 | | `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 |

View File

@ -59,10 +59,9 @@ Any KCL value.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | | `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No |
| `kind` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| Any KCL value. | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |`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 |
---- ----
@ -183,7 +182,7 @@ Data for an imported geometry.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `Function`| | No | | `type` |enum: `Function`| | No |
| `expression` |[`FunctionExpression`](/docs/kcl/types/FunctionExpression)| Any KCL value. | No | | `expression` |[`UnboxedNode_for_FunctionExpression`](/docs/kcl/types/UnboxedNode_for_FunctionExpression)| Any KCL value. | No |
| `memory` |[`ProgramMemory`](/docs/kcl/types/ProgramMemory)| Any KCL value. | No | | `memory` |[`ProgramMemory`](/docs/kcl/types/ProgramMemory)| Any KCL value. | No |
| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | | `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No |

View File

@ -23,10 +23,9 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `name` |`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 |
---- ----
@ -41,12 +40,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `Literal`| | No | | `type` |enum: [`Literal`](/docs/kcl/types/Literal)| | No |
| `kind` |[`Literal`](/docs/kcl/types/Literal)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No |
| `raw` |`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 |
---- ----

View File

@ -22,13 +22,10 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: `MemberExpression`| | No | | `type` |enum: [`MemberExpression`](/docs/kcl/types/MemberExpression)| | No |
| `kind` |[`MemberExpression`](/docs/kcl/types/MemberExpression)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No |
| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No |
| `computed` |`boolean`| | 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 |
---- ----
@ -44,10 +41,9 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `name` |`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 |
---- ----

View File

@ -16,7 +16,7 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `nonCodeNodes` |`object`| | No | | `nonCodeNodes` |`object`| | No |
| `start` |`[` [`NonCodeNode`](/docs/kcl/types/NonCodeNode) `]`| | No | | `start` |`[` [`UnboxedNode_for_NonCodeNode`](/docs/kcl/types/UnboxedNode_for_NonCodeNode) `]`| | 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 | | `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 |

View File

@ -15,8 +15,6 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `value` |[`NonCodeValue`](/docs/kcl/types/NonCodeValue)| | No | | `value` |[`NonCodeValue`](/docs/kcl/types/NonCodeValue)| | 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 | | `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 |

View File

@ -15,9 +15,7 @@ layout: manual
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `key` |[`UnboxedNode_for_Identifier`](/docs/kcl/types/UnboxedNode_for_Identifier)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `key` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `value` |[`Expr`](/docs/kcl/types/Expr)| | No | | `value` |[`Expr`](/docs/kcl/types/Expr)| | 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 | | `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 |

View File

@ -16,7 +16,7 @@ Parameter of a KCL function.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `identifier` |[`Identifier`](/docs/kcl/types/Identifier)| The parameter's label or name. | No | | `identifier` |[`UnboxedNode_for_Identifier`](/docs/kcl/types/UnboxedNode_for_Identifier)| The parameter's label or name. | No |
| `optional` |`boolean`| Is the parameter optional? | No | | `optional` |`boolean`| Is the parameter optional? | 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 | | `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 |

View File

@ -27,7 +27,7 @@ A path that goes to a point.
| `type` |enum: `ToPoint`| | No | | `type` |enum: `ToPoint`| | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -49,7 +49,7 @@ A arc that is tangential to the last path segment that goes to a point
| `ccw` |`boolean`| arc's direction | No | | `ccw` |`boolean`| arc's direction | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -71,7 +71,7 @@ A arc that is tangential to the last path segment
| `ccw` |`boolean`| arc's direction | No | | `ccw` |`boolean`| arc's direction | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -94,7 +94,7 @@ a complete arc
| `ccw` |`boolean`| arc's direction | No | | `ccw` |`boolean`| arc's direction | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -115,7 +115,7 @@ A path that is horizontal.
| `x` |`number`| The x coordinate. | No | | `x` |`number`| The x coordinate. | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -137,7 +137,7 @@ An angled line to.
| `y` |`number`| The y coordinate. | No | | `y` |`number`| The y coordinate. | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |
@ -157,7 +157,7 @@ A base path.
| `type` |enum: `Base`| | No | | `type` |enum: `Base`| | No |
| `from` |`[number, number]`| The from point. | No | | `from` |`[number, number]`| The from point. | No |
| `to` |`[number, number]`| The to point. | No | | `to` |`[number, number]`| The to point. | No |
| `tag` |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | | `tag` |[`TagNode`](/docs/kcl/types/TagNode)| The tag of the path. | No |
| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No |

View File

@ -16,10 +16,8 @@ A KCL program top level, or function body.
| Property | Type | Description | Required | | Property | Type | Description | Required |
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `body` |`[` [`BodyItem`](/docs/kcl/types/BodyItem) `]`| | No | | `body` |`[` [`BodyItem`](/docs/kcl/types/BodyItem) `]`| | No |
| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| A KCL program top level, or function body. | No | | `nonCodeMeta` |[`UnboxedNode_for_NonCodeMeta`](/docs/kcl/types/UnboxedNode_for_NonCodeMeta)| A KCL program top level, or function body. | 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 | | `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 |

View File

@ -9,7 +9,7 @@ Draw a line relative to the current origin to a specified distance away
from the current position along the 'x' axis. from the current position along the 'x' axis.
```js ```js
xLine(length: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch xLine(length: number, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ xLine(length: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `length` | `number` | | Yes | | `length` | `number` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a line parallel to the X axis, that ends at the given X.
E.g. if the previous line ended at (1, 1), then xLineTo(4) draws a line from (1, 1) to (4, 1) E.g. if the previous line ended at (1, 1), then xLineTo(4) draws a line from (1, 1) to (4, 1)
```js ```js
xLineTo(to: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch xLineTo(to: number, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ xLineTo(to: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `to` | `number` | | Yes | | `to` | `number` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a line relative to the current origin to a specified distance away
from the current position along the 'y' axis. from the current position along the 'y' axis.
```js ```js
yLine(length: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch yLine(length: number, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ yLine(length: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `length` | `number` | | Yes | | `length` | `number` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -9,7 +9,7 @@ Draw a line parallel to the Y axis, that ends at the given Y.
E.g. if the previous line ended at (1, 1), then yLineTo(4) draws a line from (1, 1) to (1, 4) E.g. if the previous line ended at (1, 1), then yLineTo(4) draws a line from (1, 1) to (1, 4)
```js ```js
yLineTo(to: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch yLineTo(to: number, sketch: Sketch, tag?: TagNode) -> Sketch
``` ```
@ -19,7 +19,7 @@ yLineTo(to: number, sketch: Sketch, tag?: TagDeclarator) -> Sketch
|----------|------|-------------|----------| |----------|------|-------------|----------|
| `to` | `number` | | Yes | | `to` | `number` | | Yes |
| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes | | `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | A sketch is a collection of paths. | Yes |
| `tag` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | | `tag` | [`TagNode`](/docs/kcl/types/TagNode) | | No |
### Returns ### Returns

View File

@ -1,7 +1,7 @@
extern crate alloc; extern crate alloc;
use kcl_lib::ast::types::{ use kcl_lib::ast::types::{
BodyItem, Expr, Identifier, ItemVisibility, Literal, LiteralValue, NonCodeMeta, Program, VariableDeclaration, BodyItem, Expr, Identifier, ItemVisibility, Literal, LiteralValue, Program, UnboxedNode,
VariableDeclarator, VariableKind, VariableDeclaration, VariableDeclarator, VariableKind,
}; };
use kcl_macros::parse; use kcl_macros::parse;
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
@ -9,36 +9,46 @@ use pretty_assertions::assert_eq;
#[test] #[test]
fn basic() { fn basic() {
let actual = parse!("const y = 4"); let actual = parse!("const y = 4");
let expected = Program { let expected = UnboxedNode {
start: 0, kind: Program {
end: 11, body: vec![BodyItem::VariableDeclaration(UnboxedNode::new(
body: vec![BodyItem::VariableDeclaration(VariableDeclaration { VariableDeclaration {
start: 0, declarations: vec![UnboxedNode::new(
end: 11, VariableDeclarator {
declarations: vec![VariableDeclarator { id: UnboxedNode::new(
start: 6, Identifier {
end: 11,
id: Identifier {
start: 6,
end: 7,
name: "y".to_owned(), name: "y".to_owned(),
digest: None, digest: None,
}, },
init: Expr::Literal(Box::new(Literal { 6,
start: 10, 7,
end: 11, ),
init: Expr::Literal(UnboxedNode::new(
Literal {
value: LiteralValue::IInteger(4), value: LiteralValue::IInteger(4),
raw: "4".to_owned(), raw: "4".to_owned(),
digest: None, digest: None,
})), },
10,
11,
)),
digest: None, digest: None,
}], },
6,
11,
)],
visibility: ItemVisibility::Default, visibility: ItemVisibility::Default,
kind: VariableKind::Const, kind: VariableKind::Const,
digest: None, digest: None,
})], },
non_code_meta: NonCodeMeta::default(), 0,
11,
))],
non_code_meta: Default::default(),
digest: None, digest: None,
},
start: 0,
end: 11,
}; };
assert_eq!(expected, actual); assert_eq!(expected, actual);
} }

View File

@ -16,6 +16,8 @@ use crate::{
executor::{Point2d, SourceRange}, executor::{Point2d, SourceRange},
}; };
use super::types::UnboxedNode;
type Point3d = kcmc::shared::Point3d<f64>; type Point3d = kcmc::shared::Point3d<f64>;
#[derive(Debug)] #[derive(Debug)]
@ -35,7 +37,7 @@ const EPSILON: f64 = 0.015625; // or 2^-6
/// a move or a new line. /// a move or a new line.
pub async fn modify_ast_for_sketch( pub async fn modify_ast_for_sketch(
engine: &Arc<Box<dyn EngineManager>>, engine: &Arc<Box<dyn EngineManager>>,
program: &mut Program, program: &mut UnboxedNode<Program>,
// The name of the sketch. // The name of the sketch.
sketch_name: &str, sketch_name: &str,
// The type of plane the sketch is on. `XY` or `XZ`, etc // The type of plane the sketch is on. `XY` or `XZ`, etc
@ -195,7 +197,7 @@ fn create_start_sketch_on(
end: [f64; 2], end: [f64; 2],
plane: crate::executor::PlaneType, plane: crate::executor::PlaneType,
additional_lines: Vec<[f64; 2]>, additional_lines: Vec<[f64; 2]>,
) -> Result<VariableDeclarator, KclError> { ) -> Result<UnboxedNode<VariableDeclarator>, KclError> {
let start_sketch_on = CallExpression::new("startSketchOn", vec![Literal::new(plane.to_string().into()).into()])?; let start_sketch_on = CallExpression::new("startSketchOn", vec![Literal::new(plane.to_string().into()).into()])?;
let start_profile_at = CallExpression::new( let start_profile_at = CallExpression::new(
"startProfileAt", "startProfileAt",

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,10 @@
use crate::executor::Metadata;
use crate::executor::SourceRange; use crate::executor::SourceRange;
use super::impl_value_meta;
use super::ConstraintLevel; use super::ConstraintLevel;
use super::Hover; use super::Hover;
use super::Node;
use super::NodeList;
use super::UnboxedNode;
use super::{Digest, Expr}; use super::{Digest, Expr};
use databake::*; use databake::*;
use schemars::JsonSchema; use schemars::JsonSchema;
@ -19,12 +20,10 @@ type IfBlock = crate::ast::types::Program;
#[ts(export)] #[ts(export)]
#[serde(tag = "type")] #[serde(tag = "type")]
pub struct IfExpression { pub struct IfExpression {
pub start: usize,
pub end: usize,
pub cond: Box<Expr>, pub cond: Box<Expr>,
pub then_val: Box<IfBlock>, pub then_val: Node<IfBlock>,
pub else_ifs: Vec<ElseIf>, pub else_ifs: NodeList<ElseIf>,
pub final_else: Box<IfBlock>, pub final_else: Node<IfBlock>,
pub digest: Option<Digest>, pub digest: Option<Digest>,
} }
@ -34,57 +33,21 @@ pub struct IfExpression {
#[ts(export)] #[ts(export)]
#[serde(tag = "type")] #[serde(tag = "type")]
pub struct ElseIf { pub struct ElseIf {
pub start: usize,
pub end: usize,
pub cond: Expr, pub cond: Expr,
pub then_val: Box<IfBlock>, pub then_val: Node<IfBlock>,
pub digest: Option<Digest>, pub digest: Option<Digest>,
} }
// Source code metadata // Source code metadata
impl_value_meta!(IfExpression); impl UnboxedNode<IfExpression> {
impl_value_meta!(ElseIf);
impl IfExpression {
fn source_ranges(&self) -> Vec<SourceRange> { fn source_ranges(&self) -> Vec<SourceRange> {
vec![SourceRange::from(self)] vec![SourceRange::from(self)]
} }
} }
impl From<IfExpression> for Metadata { impl UnboxedNode<ElseIf> {
fn from(value: IfExpression) -> Self {
Self {
source_range: value.into(),
}
}
}
impl From<ElseIf> for Metadata {
fn from(value: ElseIf) -> Self {
Self {
source_range: value.into(),
}
}
}
impl From<&IfExpression> for Metadata {
fn from(value: &IfExpression) -> Self {
Self {
source_range: value.into(),
}
}
}
impl From<&ElseIf> for Metadata {
fn from(value: &ElseIf) -> Self {
Self {
source_range: value.into(),
}
}
}
impl ElseIf {
#[allow(dead_code)] #[allow(dead_code)]
fn source_ranges(&self) -> Vec<SourceRange> { fn source_ranges(&self) -> Vec<SourceRange> {
vec![SourceRange([self.start, self.end])] vec![SourceRange([self.start, self.end])]
@ -93,6 +56,15 @@ impl ElseIf {
// IDE support and refactors // IDE support and refactors
impl UnboxedNode<IfExpression> {
/// Get the constraint level.
pub fn get_constraint_level(&self) -> ConstraintLevel {
ConstraintLevel::Full {
source_ranges: self.source_ranges(),
}
}
}
impl IfExpression { impl IfExpression {
pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option<Hover> { pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option<Hover> {
self.cond self.cond
@ -115,12 +87,7 @@ impl IfExpression {
} }
self.final_else.rename_identifiers(old_name, new_name); self.final_else.rename_identifiers(old_name, new_name);
} }
/// Get the constraint level.
pub fn get_constraint_level(&self) -> ConstraintLevel {
ConstraintLevel::Full {
source_ranges: self.source_ranges(),
}
}
pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) {
self.cond.replace_value(source_range, new_value.clone()); self.cond.replace_value(source_range, new_value.clone());
for else_if in &mut self.else_ifs { for else_if in &mut self.else_ifs {

View File

@ -1,7 +1,7 @@
use super::{ use super::{
human_friendly_type, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, human_friendly_type, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart,
CallExpression, Expr, IfExpression, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, CallExpression, Expr, IfExpression, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject,
ObjectExpression, TagDeclarator, UnaryExpression, UnaryOperator, ObjectExpression, TagDeclarator, UnaryExpression, UnaryOperator, UnboxedNode,
}; };
use crate::{ use crate::{
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
@ -32,7 +32,7 @@ impl BinaryPart {
} }
} }
impl MemberExpression { impl UnboxedNode<MemberExpression> {
pub fn get_result_array(&self, exec_state: &mut ExecState, index: usize) -> Result<KclValue, KclError> { pub fn get_result_array(&self, exec_state: &mut ExecState, index: usize) -> Result<KclValue, KclError> {
let array = match &self.object { let array = match &self.object {
MemberObject::MemberExpression(member_expr) => member_expr.get_result(exec_state)?, MemberObject::MemberExpression(member_expr) => member_expr.get_result(exec_state)?,
@ -137,7 +137,7 @@ impl MemberExpression {
} }
} }
impl BinaryExpression { impl UnboxedNode<BinaryExpression> {
#[async_recursion] #[async_recursion]
pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let left_json_value = self.left.get_result(exec_state, ctx).await?.get_json_value()?; let left_json_value = self.left.get_result(exec_state, ctx).await?.get_json_value()?;
@ -186,7 +186,7 @@ impl BinaryExpression {
} }
} }
impl UnaryExpression { impl UnboxedNode<UnaryExpression> {
pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
if self.operator == UnaryOperator::Not { if self.operator == UnaryOperator::Not {
let value = self.argument.get_result(exec_state, ctx).await?.get_json_value()?; let value = self.argument.get_result(exec_state, ctx).await?.get_json_value()?;
@ -297,7 +297,7 @@ async fn inner_execute_pipe_body(
Ok(final_output) Ok(final_output)
} }
impl CallExpression { impl UnboxedNode<CallExpression> {
#[async_recursion] #[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let fn_name = &self.callee.name; let fn_name = &self.callee.name;
@ -502,7 +502,7 @@ impl CallExpression {
} }
} }
impl TagDeclarator { impl UnboxedNode<TagDeclarator> {
pub async fn execute(&self, exec_state: &mut ExecState) -> Result<KclValue, KclError> { pub async fn execute(&self, exec_state: &mut ExecState) -> Result<KclValue, KclError> {
let memory_item = KclValue::TagIdentifier(Box::new(TagIdentifier { let memory_item = KclValue::TagIdentifier(Box::new(TagIdentifier {
value: self.name.clone(), value: self.name.clone(),
@ -518,7 +518,7 @@ impl TagDeclarator {
} }
} }
impl ArrayExpression { impl UnboxedNode<ArrayExpression> {
#[async_recursion] #[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let mut results = Vec::with_capacity(self.elements.len()); let mut results = Vec::with_capacity(self.elements.len());
@ -543,21 +543,21 @@ impl ArrayExpression {
} }
} }
impl ArrayRangeExpression { impl UnboxedNode<ArrayRangeExpression> {
#[async_recursion] #[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let metadata = Metadata::from(&*self.start_element); let metadata = Metadata::from(&self.start_element);
let start = ctx let start = ctx
.execute_expr(&self.start_element, exec_state, &metadata, StatementKind::Expression) .execute_expr(&self.start_element, exec_state, &metadata, StatementKind::Expression)
.await? .await?
.get_json_value()?; .get_json_value()?;
let start = parse_json_number_as_u64(&start, (&*self.start_element).into())?; let start = parse_json_number_as_u64(&start, (&self.start_element).into())?;
let metadata = Metadata::from(&*self.end_element); let metadata = Metadata::from(&self.end_element);
let end = ctx let end = ctx
.execute_expr(&self.end_element, exec_state, &metadata, StatementKind::Expression) .execute_expr(&self.end_element, exec_state, &metadata, StatementKind::Expression)
.await? .await?
.get_json_value()?; .get_json_value()?;
let end = parse_json_number_as_u64(&end, (&*self.end_element).into())?; let end = parse_json_number_as_u64(&end, (&self.end_element).into())?;
if end < start { if end < start {
return Err(KclError::Semantic(KclErrorDetails { return Err(KclError::Semantic(KclErrorDetails {
@ -581,7 +581,7 @@ impl ArrayRangeExpression {
} }
} }
impl ObjectExpression { impl UnboxedNode<ObjectExpression> {
#[async_recursion] #[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let mut object = serde_json::Map::new(); let mut object = serde_json::Map::new();
@ -655,7 +655,7 @@ pub fn json_as_bool(j: &serde_json::Value) -> Option<bool> {
} }
} }
impl IfExpression { impl UnboxedNode<IfExpression> {
#[async_recursion] #[async_recursion]
pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> { pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
// Check the `if` branch. // Check the `if` branch.
@ -717,7 +717,7 @@ impl Property {
let property_src: SourceRange = value.clone().into(); let property_src: SourceRange = value.clone().into();
match value { match value {
LiteralIdentifier::Identifier(identifier) => { LiteralIdentifier::Identifier(identifier) => {
let name = identifier.name; let name = &identifier.name;
if !computed { if !computed {
// Treat the property as a literal // Treat the property as a literal
Ok(Property::String(name.to_string())) Ok(Property::String(name.to_string()))

View File

@ -5,6 +5,8 @@ use serde_json::Value as JValue;
use crate::ast::types::{Expr, Literal}; use crate::ast::types::{Expr, Literal};
use super::UnboxedNode;
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)]
#[databake(path = kcl_lib::ast::types)] #[databake(path = kcl_lib::ast::types)]
#[ts(export)] #[ts(export)]
@ -33,9 +35,9 @@ impl LiteralValue {
} }
} }
impl From<Literal> for Expr { impl From<UnboxedNode<Literal>> for Expr {
fn from(literal: Literal) -> Self { fn from(literal: UnboxedNode<Literal>) -> Self {
Expr::Literal(Box::new(literal)) Expr::Literal(literal)
} }
} }

View File

@ -26,8 +26,8 @@ type Point3D = kcmc::shared::Point3d<f64>;
use crate::{ use crate::{
ast::types::{ ast::types::{
human_friendly_type, BodyItem, Expr, ExpressionStatement, FunctionExpression, ImportStatement, ItemVisibility, human_friendly_type, BodyItem, Expr, FunctionExpression, ItemVisibility, KclNone, NodeRef, Program,
KclNone, Program, ReturnStatement, TagDeclarator, TagDeclarator, TagNode, UnboxedNode,
}, },
engine::{EngineManager, ExecutionKind}, engine::{EngineManager, ExecutionKind},
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
@ -339,7 +339,7 @@ impl IdGenerator {
pub enum KclValue { pub enum KclValue {
UserVal(UserVal), UserVal(UserVal),
TagIdentifier(Box<TagIdentifier>), TagIdentifier(Box<TagIdentifier>),
TagDeclarator(Box<TagDeclarator>), TagDeclarator(crate::ast::types::Node<TagDeclarator>),
Plane(Box<Plane>), Plane(Box<Plane>),
Face(Box<Face>), Face(Box<Face>),
@ -352,7 +352,7 @@ pub enum KclValue {
Function { Function {
#[serde(skip)] #[serde(skip)]
func: Option<MemoryFunction>, func: Option<MemoryFunction>,
expression: Box<FunctionExpression>, expression: crate::ast::types::Node<FunctionExpression>,
memory: Box<ProgramMemory>, memory: Box<ProgramMemory>,
#[serde(rename = "__meta")] #[serde(rename = "__meta")]
meta: Vec<Metadata>, meta: Vec<Metadata>,
@ -890,7 +890,7 @@ pub type MemoryFunction =
fn( fn(
s: Vec<KclValue>, s: Vec<KclValue>,
memory: ProgramMemory, memory: ProgramMemory,
expression: Box<FunctionExpression>, expression: crate::ast::types::Node<FunctionExpression>,
metadata: Vec<Metadata>, metadata: Vec<Metadata>,
exec_state: &ExecState, exec_state: &ExecState,
ctx: ExecutorContext, ctx: ExecutorContext,
@ -900,7 +900,7 @@ impl From<KclValue> for Vec<SourceRange> {
fn from(item: KclValue) -> Self { fn from(item: KclValue) -> Self {
match item { match item {
KclValue::UserVal(u) => u.meta.iter().map(|m| m.source_range).collect(), KclValue::UserVal(u) => u.meta.iter().map(|m| m.source_range).collect(),
KclValue::TagDeclarator(t) => t.into(), KclValue::TagDeclarator(t) => vec![(&t).into()],
KclValue::TagIdentifier(t) => t.meta.iter().map(|m| m.source_range).collect(), KclValue::TagIdentifier(t) => t.meta.iter().map(|m| m.source_range).collect(),
KclValue::Solid(e) => e.meta.iter().map(|m| m.source_range).collect(), KclValue::Solid(e) => e.meta.iter().map(|m| m.source_range).collect(),
KclValue::Solids { value } => value KclValue::Solids { value } => value
@ -1043,9 +1043,9 @@ impl KclValue {
} }
/// Get a tag declarator from a memory item. /// Get a tag declarator from a memory item.
pub fn get_tag_declarator(&self) -> Result<TagDeclarator, KclError> { pub fn get_tag_declarator(&self) -> Result<TagNode, KclError> {
match self { match self {
KclValue::TagDeclarator(t) => Ok(*t.clone()), KclValue::TagDeclarator(t) => Ok((**t).clone()),
_ => Err(KclError::Semantic(KclErrorDetails { _ => Err(KclError::Semantic(KclErrorDetails {
message: format!("Not a tag declarator: {:?}", self), message: format!("Not a tag declarator: {:?}", self),
source_ranges: self.clone().into(), source_ranges: self.clone().into(),
@ -1054,9 +1054,9 @@ impl KclValue {
} }
/// Get an optional tag from a memory item. /// Get an optional tag from a memory item.
pub fn get_tag_declarator_opt(&self) -> Result<Option<TagDeclarator>, KclError> { pub fn get_tag_declarator_opt(&self) -> Result<Option<TagNode>, KclError> {
match self { match self {
KclValue::TagDeclarator(t) => Ok(Some(*t.clone())), KclValue::TagDeclarator(t) => Ok(Some((**t).clone())),
_ => Err(KclError::Semantic(KclErrorDetails { _ => Err(KclError::Semantic(KclErrorDetails {
message: format!("Not a tag declarator: {:?}", self), message: format!("Not a tag declarator: {:?}", self),
source_ranges: self.clone().into(), source_ranges: self.clone().into(),
@ -1200,7 +1200,7 @@ pub struct GetTangentialInfoFromPathsResult {
} }
impl Sketch { impl Sketch {
pub(crate) fn add_tag(&mut self, tag: &TagDeclarator, current_path: &Path) { pub(crate) fn add_tag(&mut self, tag: NodeRef<'_, TagDeclarator>, current_path: &Path) {
let mut tag_identifier: TagIdentifier = tag.into(); let mut tag_identifier: TagIdentifier = tag.into();
let base = current_path.get_base(); let base = current_path.get_base();
tag_identifier.info = Some(TagEngineInfo { tag_identifier.info = Some(TagEngineInfo {
@ -1326,7 +1326,7 @@ pub enum EdgeCut {
/// The engine id of the edge to fillet. /// The engine id of the edge to fillet.
#[serde(rename = "edgeId")] #[serde(rename = "edgeId")]
edge_id: uuid::Uuid, edge_id: uuid::Uuid,
tag: Box<Option<TagDeclarator>>, tag: Box<Option<TagNode>>,
}, },
/// A chamfer. /// A chamfer.
Chamfer { Chamfer {
@ -1336,7 +1336,7 @@ pub enum EdgeCut {
/// The engine id of the edge to chamfer. /// The engine id of the edge to chamfer.
#[serde(rename = "edgeId")] #[serde(rename = "edgeId")]
edge_id: uuid::Uuid, edge_id: uuid::Uuid,
tag: Box<Option<TagDeclarator>>, tag: Box<Option<TagNode>>,
}, },
} }
@ -1355,7 +1355,7 @@ impl EdgeCut {
} }
} }
pub fn tag(&self) -> Option<TagDeclarator> { pub fn tag(&self) -> Option<TagNode> {
match self { match self {
EdgeCut::Fillet { tag, .. } => *tag.clone(), EdgeCut::Fillet { tag, .. } => *tag.clone(),
EdgeCut::Chamfer { tag, .. } => *tag.clone(), EdgeCut::Chamfer { tag, .. } => *tag.clone(),
@ -1529,26 +1529,10 @@ impl From<SourceRange> for Metadata {
} }
} }
impl From<&ImportStatement> for Metadata { impl<T> From<NodeRef<'_, T>> for Metadata {
fn from(stmt: &ImportStatement) -> Self { fn from(node: NodeRef<'_, T>) -> Self {
Self { Self {
source_range: SourceRange::new(stmt.start, stmt.end), source_range: SourceRange::new(node.start, node.end),
}
}
}
impl From<&ExpressionStatement> for Metadata {
fn from(exp_statement: &ExpressionStatement) -> Self {
Self {
source_range: SourceRange::new(exp_statement.start, exp_statement.end),
}
}
}
impl From<&ReturnStatement> for Metadata {
fn from(return_statement: &ReturnStatement) -> Self {
Self {
source_range: SourceRange::new(return_statement.start, return_statement.end),
} }
} }
} }
@ -1573,7 +1557,7 @@ pub struct BasePath {
#[ts(type = "[number, number]")] #[ts(type = "[number, number]")]
pub to: [f64; 2], pub to: [f64; 2],
/// The tag of the path. /// The tag of the path.
pub tag: Option<TagDeclarator>, pub tag: Option<TagNode>,
/// Metadata. /// Metadata.
#[serde(rename = "__geoMeta")] #[serde(rename = "__geoMeta")]
pub geo_meta: GeoMeta, pub geo_meta: GeoMeta,
@ -1671,7 +1655,7 @@ impl Path {
} }
} }
pub fn get_tag(&self) -> Option<TagDeclarator> { pub fn get_tag(&self) -> Option<TagNode> {
match self { match self {
Path::ToPoint { base } => base.tag.clone(), Path::ToPoint { base } => base.tag.clone(),
Path::Horizontal { base, .. } => base.tag.clone(), Path::Horizontal { base, .. } => base.tag.clone(),
@ -1728,7 +1712,7 @@ pub struct ChamferSurface {
/// The id for the chamfer surface. /// The id for the chamfer surface.
pub face_id: uuid::Uuid, pub face_id: uuid::Uuid,
/// The tag. /// The tag.
pub tag: Option<TagDeclarator>, pub tag: Option<UnboxedNode<TagDeclarator>>,
/// Metadata. /// Metadata.
#[serde(flatten)] #[serde(flatten)]
pub geo_meta: GeoMeta, pub geo_meta: GeoMeta,
@ -1742,7 +1726,7 @@ pub struct FilletSurface {
/// The id for the fillet surface. /// The id for the fillet surface.
pub face_id: uuid::Uuid, pub face_id: uuid::Uuid,
/// The tag. /// The tag.
pub tag: Option<TagDeclarator>, pub tag: Option<UnboxedNode<TagDeclarator>>,
/// Metadata. /// Metadata.
#[serde(flatten)] #[serde(flatten)]
pub geo_meta: GeoMeta, pub geo_meta: GeoMeta,
@ -1756,7 +1740,7 @@ pub struct ExtrudePlane {
/// The face id for the extrude plane. /// The face id for the extrude plane.
pub face_id: uuid::Uuid, pub face_id: uuid::Uuid,
/// The tag. /// The tag.
pub tag: Option<TagDeclarator>, pub tag: Option<UnboxedNode<TagDeclarator>>,
/// Metadata. /// Metadata.
#[serde(flatten)] #[serde(flatten)]
pub geo_meta: GeoMeta, pub geo_meta: GeoMeta,
@ -1770,7 +1754,7 @@ pub struct ExtrudeArc {
/// The face id for the extrude plane. /// The face id for the extrude plane.
pub face_id: uuid::Uuid, pub face_id: uuid::Uuid,
/// The tag. /// The tag.
pub tag: Option<TagDeclarator>, pub tag: Option<UnboxedNode<TagDeclarator>>,
/// Metadata. /// Metadata.
#[serde(flatten)] #[serde(flatten)]
pub geo_meta: GeoMeta, pub geo_meta: GeoMeta,
@ -1786,7 +1770,7 @@ impl ExtrudeSurface {
} }
} }
pub fn get_tag(&self) -> Option<TagDeclarator> { pub fn get_tag(&self) -> Option<UnboxedNode<TagDeclarator>> {
match self { match self {
ExtrudeSurface::ExtrudePlane(ep) => ep.tag.clone(), ExtrudeSurface::ExtrudePlane(ep) => ep.tag.clone(),
ExtrudeSurface::ExtrudeArc(ea) => ea.tag.clone(), ExtrudeSurface::ExtrudeArc(ea) => ea.tag.clone(),
@ -1997,7 +1981,7 @@ impl ExecutorContext {
/// Kurt uses this for partial execution. /// Kurt uses this for partial execution.
pub async fn run( pub async fn run(
&self, &self,
program: &crate::ast::types::Program, program: NodeRef<'_, crate::ast::types::Program>,
memory: Option<ProgramMemory>, memory: Option<ProgramMemory>,
id_generator: IdGenerator, id_generator: IdGenerator,
project_directory: Option<String>, project_directory: Option<String>,
@ -2011,7 +1995,7 @@ impl ExecutorContext {
/// Kurt uses this for partial execution. /// Kurt uses this for partial execution.
pub async fn run_with_session_data( pub async fn run_with_session_data(
&self, &self,
program: &crate::ast::types::Program, program: NodeRef<'_, crate::ast::types::Program>,
memory: Option<ProgramMemory>, memory: Option<ProgramMemory>,
id_generator: IdGenerator, id_generator: IdGenerator,
project_directory: Option<String>, project_directory: Option<String>,
@ -2053,9 +2037,9 @@ impl ExecutorContext {
/// Execute an AST's program. /// Execute an AST's program.
#[async_recursion] #[async_recursion]
pub(crate) async fn inner_execute( pub(crate) async fn inner_execute<'a>(
&self, &'a self,
program: &crate::ast::types::Program, program: NodeRef<'a, crate::ast::types::Program>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
body_type: BodyType, body_type: BodyType,
) -> Result<Option<KclValue>, KclError> { ) -> Result<Option<KclValue>, KclError> {
@ -2291,7 +2275,7 @@ impl ExecutorContext {
/// Execute the program, then get a PNG screenshot. /// Execute the program, then get a PNG screenshot.
pub async fn execute_and_prepare_snapshot( pub async fn execute_and_prepare_snapshot(
&self, &self,
program: &Program, program: NodeRef<'_, Program>,
id_generator: IdGenerator, id_generator: IdGenerator,
project_directory: Option<String>, project_directory: Option<String>,
) -> Result<TakeSnapshot> { ) -> Result<TakeSnapshot> {
@ -2336,7 +2320,7 @@ impl ExecutorContext {
/// assign it to a parameter of the function, in the given block of function memory. /// assign it to a parameter of the function, in the given block of function memory.
/// Returns Err if too few/too many arguments were given for the function. /// Returns Err if too few/too many arguments were given for the function.
fn assign_args_to_params( fn assign_args_to_params(
function_expression: &FunctionExpression, function_expression: NodeRef<'_, FunctionExpression>,
args: Vec<KclValue>, args: Vec<KclValue>,
mut fn_memory: ProgramMemory, mut fn_memory: ProgramMemory,
) -> Result<ProgramMemory, KclError> { ) -> Result<ProgramMemory, KclError> {
@ -2388,7 +2372,7 @@ fn assign_args_to_params(
pub(crate) async fn call_user_defined_function( pub(crate) async fn call_user_defined_function(
args: Vec<KclValue>, args: Vec<KclValue>,
memory: &ProgramMemory, memory: &ProgramMemory,
function_expression: &FunctionExpression, function_expression: NodeRef<'_, FunctionExpression>,
exec_state: &mut ExecState, exec_state: &mut ExecState,
ctx: &ExecutorContext, ctx: &ExecutorContext,
) -> Result<Option<KclValue>, KclError> { ) -> Result<Option<KclValue>, KclError> {
@ -2427,7 +2411,7 @@ mod tests {
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use super::*; use super::*;
use crate::ast::types::{Identifier, Parameter}; use crate::ast::types::{Identifier, Parameter, UnboxedNode};
pub async fn parse_execute(code: &str) -> Result<ProgramMemory> { pub async fn parse_execute(code: &str) -> Result<ProgramMemory> {
let tokens = crate::token::lexer(code)?; let tokens = crate::token::lexer(code)?;
@ -3399,13 +3383,11 @@ let w = f() + f()
meta: Default::default(), meta: Default::default(),
}) })
} }
fn ident(s: &'static str) -> Identifier { fn ident(s: &'static str) -> UnboxedNode<Identifier> {
Identifier { UnboxedNode::no_src(Identifier {
start: 0,
end: 0,
name: s.to_owned(), name: s.to_owned(),
digest: None, digest: None,
} })
} }
fn opt_param(s: &'static str) -> Parameter { fn opt_param(s: &'static str) -> Parameter {
Parameter { Parameter {
@ -3497,20 +3479,20 @@ let w = f() + f()
), ),
] { ] {
// Run each test. // Run each test.
let func_expr = &FunctionExpression { let func_expr = &UnboxedNode::no_src(FunctionExpression {
start: 0,
end: 0,
params, params,
body: crate::ast::types::Program { body: UnboxedNode {
start: 0, kind: crate::ast::types::Program {
end: 0,
body: Vec::new(), body: Vec::new(),
non_code_meta: Default::default(), non_code_meta: Default::default(),
digest: None, digest: None,
}, },
start: 0,
end: 0,
},
return_type: None, return_type: None,
digest: None, digest: None,
}; });
let actual = assign_args_to_params(func_expr, args, ProgramMemory::new()); let actual = assign_args_to_params(func_expr, args, ProgramMemory::new());
assert_eq!( assert_eq!(
actual, expected, actual, expected,

View File

@ -13,7 +13,7 @@ use crate::{
pub struct FunctionParam<'a> { pub struct FunctionParam<'a> {
pub inner: Option<&'a MemoryFunction>, pub inner: Option<&'a MemoryFunction>,
pub memory: ProgramMemory, pub memory: ProgramMemory,
pub fn_expr: Box<FunctionExpression>, pub fn_expr: crate::ast::types::Node<FunctionExpression>,
pub meta: Vec<Metadata>, pub meta: Vec<Metadata>,
pub ctx: ExecutorContext, pub ctx: ExecutorContext,
} }

View File

@ -3,7 +3,7 @@ use std::sync::Arc;
use anyhow::Result; use anyhow::Result;
use crate::{ use crate::{
ast::types::CallExpression, ast::types::{CallExpression, NodeRef},
docs::StdLibFn, docs::StdLibFn,
executor::SourceRange, executor::SourceRange,
lint::rule::{def_finding, Discovered, Finding}, lint::rule::{def_finding, Discovered, Finding},
@ -18,7 +18,10 @@ def_finding!(
Previously, we have not been failing when too many arguments are passed to a stdlib function. This is a problem because it can lead to unexpected behavior. We will in the future fail when too many arguments are passed to a function. So fix your code now." Previously, we have not been failing when too many arguments are passed to a stdlib function. This is a problem because it can lead to unexpected behavior. We will in the future fail when too many arguments are passed to a function. So fix your code now."
); );
fn lint_too_many_args_std_lib_function(f: Box<dyn StdLibFn>, exp: &CallExpression) -> Result<Vec<Discovered>> { fn lint_too_many_args_std_lib_function(
f: Box<dyn StdLibFn>,
exp: NodeRef<'_, CallExpression>,
) -> Result<Vec<Discovered>> {
let mut findings = vec![]; let mut findings = vec![];
if f.name() == "pow" { if f.name() == "pow" {

View File

@ -3,14 +3,14 @@
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use tower_lsp::lsp_types::notification::Notification; use tower_lsp::lsp_types::notification::Notification;
use crate::settings::types::UnitLength; use crate::{ast::types::UnboxedNode, settings::types::UnitLength};
/// A notification that the AST has changed. /// A notification that the AST has changed.
#[derive(Debug)] #[derive(Debug)]
pub enum AstUpdated {} pub enum AstUpdated {}
impl Notification for AstUpdated { impl Notification for AstUpdated {
type Params = crate::ast::types::Program; type Params = UnboxedNode<crate::ast::types::Program>;
const METHOD: &'static str = "kcl/astUpdated"; const METHOD: &'static str = "kcl/astUpdated";
} }

View File

@ -40,7 +40,7 @@ use tower_lsp::{
}; };
use crate::{ use crate::{
ast::types::{Expr, VariableKind}, ast::types::{Expr, NodeRef, UnboxedNode, VariableKind},
executor::{IdGenerator, SourceRange}, executor::{IdGenerator, SourceRange},
lsp::{backend::Backend as _, util::IntoDiagnostic}, lsp::{backend::Backend as _, util::IntoDiagnostic},
parser::PIPE_OPERATOR, parser::PIPE_OPERATOR,
@ -99,7 +99,7 @@ pub struct Backend {
/// Token maps. /// Token maps.
pub token_map: DashMap<String, Vec<crate::token::Token>>, pub token_map: DashMap<String, Vec<crate::token::Token>>,
/// AST maps. /// AST maps.
pub ast_map: DashMap<String, crate::ast::types::Program>, pub ast_map: DashMap<String, UnboxedNode<crate::ast::types::Program>>,
/// Memory maps. /// Memory maps.
pub memory_map: DashMap<String, crate::executor::ProgramMemory>, pub memory_map: DashMap<String, crate::executor::ProgramMemory>,
/// Current code. /// Current code.
@ -571,7 +571,7 @@ impl Backend {
self.client.publish_diagnostics(params.uri.clone(), items, None).await; self.client.publish_diagnostics(params.uri.clone(), items, None).await;
} }
async fn execute(&self, params: &TextDocumentItem, ast: &crate::ast::types::Program) -> Result<()> { async fn execute(&self, params: &TextDocumentItem, ast: NodeRef<'_, crate::ast::types::Program>) -> Result<()> {
// Check if we can execute. // Check if we can execute.
if !self.can_execute().await { if !self.can_execute().await {
return Ok(()); return Ok(());

View File

@ -7,6 +7,7 @@ use tower_lsp::{
}; };
use crate::{ use crate::{
ast::types::{Program, UnboxedNode},
executor::ProgramMemory, executor::ProgramMemory,
lsp::test_util::{copilot_lsp_server, kcl_lsp_server}, lsp::test_util::{copilot_lsp_server, kcl_lsp_server},
}; };
@ -1070,7 +1071,7 @@ fn myFn = (param1) => {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Send semantic tokens request. // Send semantic tokens request.
let semantic_tokens = server let semantic_tokens = server
@ -2396,7 +2397,7 @@ async fn kcl_test_kcl_lsp_full_to_empty_file_updates_ast_and_memory() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2416,7 +2417,7 @@ async fn kcl_test_kcl_lsp_full_to_empty_file_updates_ast_and_memory() {
}) })
.await; .await;
let mut default_hashed = crate::ast::types::Program::default(); let mut default_hashed = UnboxedNode::<Program>::default();
default_hashed.compute_digest(); default_hashed.compute_digest();
// Get the ast. // Get the ast.
@ -2453,7 +2454,7 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2487,9 +2488,9 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() {
// Clear the ast and memory. // Clear the ast and memory.
server server
.ast_map .ast_map
.insert("file:///test.kcl".to_string(), crate::ast::types::Program::default()); .insert("file:///test.kcl".to_string(), UnboxedNode::<Program>::default());
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert_eq!(ast, crate::ast::types::Program::default()); assert_eq!(ast, UnboxedNode::<Program>::default());
server server
.memory_map .memory_map
.insert("file:///test.kcl".to_string(), ProgramMemory::default()); .insert("file:///test.kcl".to_string(), ProgramMemory::default());
@ -2513,7 +2514,7 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2549,7 +2550,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_unchanged_but_has_diagnostics_reexecute()
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2604,7 +2605,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_unchanged_but_has_diagnostics_reexecute()
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2640,7 +2641,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_diagnostics_reexe
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2698,7 +2699,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_diagnostics_reexe
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2734,7 +2735,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_memory_reexecute_
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2770,7 +2771,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_memory_reexecute_
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2806,7 +2807,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2841,7 +2842,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default()); assert!(memory != ProgramMemory::default());
@ -2883,7 +2884,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
let units = server.executor_ctx().await.clone().unwrap().settings.units; let units = server.executor_ctx().await.clone().unwrap().settings.units;
assert_eq!(units, crate::settings::types::UnitLength::Mm); assert_eq!(units, crate::settings::types::UnitLength::Mm);
let mut default_hashed = crate::ast::types::Program::default(); let mut default_hashed = UnboxedNode::<Program>::default();
default_hashed.compute_digest(); default_hashed.compute_digest();
// Get the ast. // Get the ast.
@ -2924,7 +2925,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
// Now it should NOT be the default memory. // Now it should NOT be the default memory.
@ -3064,7 +3065,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Assure we have one diagnostics. // Assure we have one diagnostics.
let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone(); let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone();
@ -3087,7 +3088,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Assure we have one diagnostics. // Assure we have one diagnostics.
let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone(); let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone();
@ -3183,7 +3184,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl"); let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none()); assert!(memory.is_none());
@ -3205,7 +3206,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl"); let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none()); assert!(memory.is_none());
@ -3248,7 +3249,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl"); let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none()); assert!(memory.is_none());
@ -3278,7 +3279,7 @@ const NEW_LINT = 1"#
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the memory. // Get the memory.
let memory = server.memory_map.get("file:///test.kcl"); let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none()); assert!(memory.is_none());
@ -3394,7 +3395,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the symbols map. // Get the symbols map.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();
@ -3489,7 +3490,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the symbols map. // Get the symbols map.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();
@ -3532,7 +3533,7 @@ const part001 = startSketchOn('XY')
// Get the ast. // Get the ast.
let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone();
assert!(ast != crate::ast::types::Program::default()); assert!(ast != UnboxedNode::<Program>::default());
// Get the symbols map. // Get the symbols map.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();

View File

@ -1,5 +1,5 @@
use crate::{ use crate::{
ast::types::Program, ast::types::{Program, UnboxedNode},
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
executor::SourceRange, executor::SourceRange,
token::{Token, TokenType}, token::{Token, TokenType},
@ -13,7 +13,7 @@ pub const PIPE_SUBSTITUTION_OPERATOR: &str = "%";
pub const PIPE_OPERATOR: &str = "|>"; pub const PIPE_OPERATOR: &str = "|>";
/// Parse the given KCL code into an AST. /// Parse the given KCL code into an AST.
pub fn parse(code: &str) -> Result<Program, KclError> { pub fn parse(code: &str) -> Result<UnboxedNode<Program>, KclError> {
let tokens = crate::token::lexer(code)?; let tokens = crate::token::lexer(code)?;
let parser = Parser::new(tokens); let parser = Parser::new(tokens);
parser.ast() parser.ast()
@ -33,7 +33,7 @@ impl Parser {
} }
/// Run the parser /// Run the parser
pub fn ast(&self) -> Result<Program, KclError> { pub fn ast(&self) -> Result<UnboxedNode<Program>, KclError> {
if !self.unknown_tokens.is_empty() { if !self.unknown_tokens.is_empty() {
let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect(); let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect();
let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>(); let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::<Vec<_>>();
@ -48,7 +48,7 @@ impl Parser {
// Important, to not call this before the unknown tokens check. // Important, to not call this before the unknown tokens check.
if self.tokens.is_empty() { if self.tokens.is_empty() {
// Empty file should just do nothing. // Empty file should just do nothing.
return Ok(Program::default()); return Ok(UnboxedNode::<Program>::default());
} }
// Check all the tokens are whitespace or comments. // Check all the tokens are whitespace or comments.
@ -57,7 +57,7 @@ impl Parser {
.iter() .iter()
.all(|t| t.token_type.is_whitespace() || t.token_type.is_comment()) .all(|t| t.token_type.is_whitespace() || t.token_type.is_comment())
{ {
return Ok(Program::default()); return Ok(UnboxedNode::<Program>::default());
} }
parser_impl::run_parser(&mut self.tokens.as_slice()) parser_impl::run_parser(&mut self.tokens.as_slice())

View File

@ -1,18 +1,18 @@
use crate::{ use crate::{
ast::types::{BinaryExpression, BinaryOperator, BinaryPart}, ast::types::{BinaryExpression, BinaryOperator, BinaryPart, UnboxedNode},
errors::{KclError, KclErrorDetails}, errors::{KclError, KclErrorDetails},
executor::SourceRange, executor::SourceRange,
}; };
/// Parses a list of tokens (in infix order, i.e. as the user typed them) /// Parses a list of tokens (in infix order, i.e. as the user typed them)
/// into a binary expression tree. /// into a binary expression tree.
pub fn parse(infix_tokens: Vec<BinaryExpressionToken>) -> Result<BinaryExpression, KclError> { pub fn parse(infix_tokens: Vec<BinaryExpressionToken>) -> Result<UnboxedNode<BinaryExpression>, KclError> {
let rpn = postfix(infix_tokens); let rpn = postfix(infix_tokens);
evaluate(rpn) evaluate(rpn)
} }
/// Parses a list of tokens (in postfix order) into a binary expression tree. /// Parses a list of tokens (in postfix order) into a binary expression tree.
fn evaluate(rpn: Vec<BinaryExpressionToken>) -> Result<BinaryExpression, KclError> { fn evaluate(rpn: Vec<BinaryExpressionToken>) -> Result<UnboxedNode<BinaryExpression>, KclError> {
let source_ranges = source_range(&rpn); let source_ranges = source_range(&rpn);
let mut operand_stack: Vec<BinaryPart> = Vec::new(); let mut operand_stack: Vec<BinaryPart> = Vec::new();
let e = KclError::Internal(KclErrorDetails { let e = KclError::Internal(KclErrorDetails {
@ -28,14 +28,19 @@ fn evaluate(rpn: Vec<BinaryExpressionToken>) -> Result<BinaryExpression, KclErro
let Some(left) = operand_stack.pop() else { let Some(left) = operand_stack.pop() else {
return Err(e); return Err(e);
}; };
BinaryPart::BinaryExpression(Box::new(BinaryExpression { let start = left.start();
start: left.start(), let end = right.end();
end: right.end(),
BinaryPart::BinaryExpression(UnboxedNode::boxed(
BinaryExpression {
operator, operator,
left, left,
right, right,
digest: None, digest: None,
})) },
start,
end,
))
} }
BinaryExpressionToken::Operand(o) => o, BinaryExpressionToken::Operand(o) => o,
}; };
@ -125,13 +130,15 @@ mod tests {
fn parse_and_evaluate() { fn parse_and_evaluate() {
/// Make a literal /// Make a literal
fn lit(n: u8) -> BinaryPart { fn lit(n: u8) -> BinaryPart {
BinaryPart::Literal(Box::new(Literal { BinaryPart::Literal(UnboxedNode::new(
start: 0, Literal {
end: 0,
value: n.into(), value: n.into(),
raw: n.to_string(), raw: n.to_string(),
digest: None, digest: None,
})) },
0,
0,
))
} }
let tests: Vec<Vec<BinaryExpressionToken>> = vec![ let tests: Vec<Vec<BinaryExpressionToken>> = vec![
// 3 + 4 × 2 ÷ ( 1 5 ) ^ 2 ^ 3 // 3 + 4 × 2 ÷ ( 1 5 ) ^ 2 ^ 3
@ -142,14 +149,16 @@ mod tests {
BinaryOperator::Mul.into(), BinaryOperator::Mul.into(),
lit(2).into(), lit(2).into(),
BinaryOperator::Div.into(), BinaryOperator::Div.into(),
BinaryPart::BinaryExpression(Box::new(BinaryExpression { BinaryPart::BinaryExpression(UnboxedNode::boxed(
start: 0, BinaryExpression {
end: 0,
operator: BinaryOperator::Sub, operator: BinaryOperator::Sub,
left: lit(1), left: lit(1),
right: lit(5), right: lit(5),
digest: None, digest: None,
})) },
0,
0,
))
.into(), .into(),
BinaryOperator::Pow.into(), BinaryOperator::Pow.into(),
lit(2).into(), lit(2).into(),

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,36 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3567
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 5,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 4,
"end": 5,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 4,
"end": 5
} }
},
"start": 0,
"end": 5
} }

View File

@ -1,26 +1,36 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3568
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 3,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 2,
"end": 3,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 2,
"end": 3
} }
},
"start": 0,
"end": 3
} }

View File

@ -1,26 +1,36 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3569
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 4,
"operator": "-", "operator": "-",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 3,
"end": 4,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 3,
"end": 4
} }
},
"start": 0,
"end": 4
} }

View File

@ -1,41 +1,57 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3570
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 9,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 4,
"end": 9,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 4,
"end": 5,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 4,
"end": 5
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 8,
"end": 9,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 8,
"end": 9
} }
},
"start": 4,
"end": 9
} }
},
"start": 0,
"end": 9
} }

View File

@ -1,41 +1,57 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3571
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 11,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 6,
"end": 7,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 6,
"end": 7
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 10,
"end": 11,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 10,
"end": 11
} }
},
"start": 6,
"end": 11
} }
},
"start": 0,
"end": 11
} }

View File

@ -1,56 +1,78 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3572
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 17,
"operator": "/", "operator": "/",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 11,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 6,
"end": 7,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"right": { "start": 6,
"type": "Literal", "end": 7
"type": "Literal",
"start": 10,
"end": 11,
"value": 3,
"raw": "3"
}
}
}, },
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 10,
"end": 11
}
},
"start": 6,
"end": 11
}
},
"start": 0,
"end": 11
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 16,
"end": 17,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 16,
"end": 17
} }
},
"start": 0,
"end": 17
} }

View File

@ -1,56 +1,78 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3573
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 17,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 6,
"end": 17,
"operator": "/", "operator": "/",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 6,
"end": 7,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"right": { "start": 6,
"type": "Literal", "end": 7
"type": "Literal",
"start": 10,
"end": 11,
"value": 3,
"raw": "3"
}
}, },
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 10,
"end": 11
}
},
"start": 6,
"end": 11
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 16,
"end": 17,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 16,
"end": 17
} }
},
"start": 6,
"end": 17
} }
},
"start": 0,
"end": 17
} }

View File

@ -1,71 +1,99 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3574
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 22,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 7,
"end": 22,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 7,
"end": 18,
"operator": "/", "operator": "/",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 7,
"end": 12,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 7,
"end": 8,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 7,
"end": 8
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 11,
"end": 12,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 11,
"end": 12
} }
}, },
"start": 7,
"end": 12
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 17,
"end": 18,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 17,
"end": 18
} }
}, },
"start": 7,
"end": 18
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 21,
"end": 22,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
},
"start": 21,
"end": 22
} }
},
"start": 7,
"end": 22
} }
},
"start": 0,
"end": 22
} }

View File

@ -1,41 +1,57 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3575
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 13,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 8,
"end": 13,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 8,
"end": 9,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 8,
"end": 9
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 12,
"end": 13,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 12,
"end": 13
} }
},
"start": 8,
"end": 13
} }
},
"start": 0,
"end": 13
} }

View File

@ -1,81 +1,115 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3576
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 44,
"operator": "/", "operator": "/",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 22,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 18,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 12,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 8,
"name": "distance" "name": "distance"
}, },
"start": 0,
"end": 8
},
"right": { "right": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 11,
"end": 12,
"name": "p" "name": "p"
},
"start": 11,
"end": 12
} }
}, },
"start": 0,
"end": 12
},
"right": { "right": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 15,
"end": 18,
"name": "FOS" "name": "FOS"
},
"start": 15,
"end": 18
} }
}, },
"start": 0,
"end": 18
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 21,
"end": 22,
"value": 6, "value": 6,
"raw": "6" "raw": "6"
},
"start": 21,
"end": 22
} }
}, },
"start": 0,
"end": 22
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 26,
"end": 44,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 26,
"end": 36,
"name": "sigmaAllow" "name": "sigmaAllow"
}, },
"start": 26,
"end": 36
},
"right": { "right": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 39,
"end": 44,
"name": "width" "name": "width"
},
"start": 39,
"end": 44
} }
},
"start": 26,
"end": 44
} }
},
"start": 0,
"end": 44
} }

View File

@ -1,26 +1,36 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3577
expression: actual expression: actual
--- ---
{ {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 8,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 7,
"end": 8,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 7,
"end": 8
} }
},
"start": 0,
"end": 8
} }

View File

@ -1,255 +1,358 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3606
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 144, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 143,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 143,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 15,
"name": "boxSketch" "name": "boxSketch"
}, },
"start": 6,
"end": 15
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 18,
"end": 143,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 18,
"end": 39,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 18,
"end": 31,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 18,
"end": 31
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 32,
"end": 38,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 33,
"end": 34,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 33,
"end": 34
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 36,
"end": 37,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 36,
"end": 37
} }
] ]
},
"start": 32,
"end": 38
} }
], ],
"optional": false "optional": false
}, },
"start": 18,
"end": 39
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 47,
"end": 63,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 47,
"end": 51,
"name": "line" "name": "line"
}, },
"start": 47,
"end": 51
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 52,
"end": 59,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 53,
"end": 54,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 53,
"end": 54
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 56,
"end": 58,
"value": 10, "value": 10,
"raw": "10" "raw": "10"
},
"start": 56,
"end": 58
} }
] ]
}, },
"start": 52,
"end": 59
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 61, "start": 61,
"end": 62 "end": 62
} }
], ],
"optional": false "optional": false
}, },
"start": 47,
"end": 63
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 71,
"end": 96,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 71,
"end": 84,
"name": "tangentialArc" "name": "tangentialArc"
}, },
"start": 71,
"end": 84
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 85,
"end": 92,
"elements": [ "elements": [
{ {
"type": "UnaryExpression", "type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression", "type": "UnaryExpression",
"start": 86,
"end": 88,
"operator": "-", "operator": "-",
"argument": { "argument": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 87,
"end": 88,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
},
"start": 87,
"end": 88
} }
}, },
"start": 86,
"end": 88
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 90,
"end": 91,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
},
"start": 90,
"end": 91
} }
] ]
}, },
"start": 85,
"end": 92
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 94, "start": 94,
"end": 95 "end": 95
} }
], ],
"optional": false "optional": false
}, },
"start": 71,
"end": 96
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 104,
"end": 121,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 104,
"end": 108,
"name": "line" "name": "line"
}, },
"start": 104,
"end": 108
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 109,
"end": 117,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 110,
"end": 111,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
}, },
"start": 110,
"end": 111
},
{ {
"type": "UnaryExpression", "type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression", "type": "UnaryExpression",
"start": 113,
"end": 116,
"operator": "-", "operator": "-",
"argument": { "argument": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 114,
"end": 116,
"value": 15, "value": 15,
"raw": "15" "raw": "15"
},
"start": 114,
"end": 116
} }
},
"start": 113,
"end": 116
} }
] ]
}, },
"start": 109,
"end": 117
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 119, "start": 119,
"end": 120 "end": 120
} }
], ],
"optional": false "optional": false
}, },
"start": 104,
"end": 121
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 129,
"end": 143,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 129,
"end": 136,
"name": "extrude" "name": "extrude"
}, },
"start": 129,
"end": 136
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 137,
"end": 139,
"value": 10, "value": 10,
"raw": "10" "raw": "10"
}, },
"start": 137,
"end": 139
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 141, "start": 141,
"end": 142 "end": 142
} }
], ],
"optional": false "optional": false
},
"start": 129,
"end": 143
} }
] ]
},
"start": 18,
"end": 143
} }
},
"start": 6,
"end": 143
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 143
} }
] ]
},
"start": 0,
"end": 144
} }

View File

@ -1,44 +1,63 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3676
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 17, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 17,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 17,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 8,
"name": "sg" "name": "sg"
}, },
"start": 6,
"end": 8
},
"init": { "init": {
"type": "UnaryExpression", "type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression", "type": "UnaryExpression",
"start": 11,
"end": 17,
"operator": "-", "operator": "-",
"argument": { "argument": {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 12,
"end": 17,
"name": "scale" "name": "scale"
},
"start": 12,
"end": 17
} }
},
"start": 11,
"end": 17
} }
},
"start": 6,
"end": 17
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 17
} }
] ]
},
"start": 0,
"end": 17
} }

View File

@ -1,81 +1,115 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3677
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 23, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 23,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 23,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 22,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 9,
"end": 20,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 11,
"name": "to" "name": "to"
}, },
"start": 9,
"end": 11
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 13,
"end": 20,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 14,
"end": 15
},
{ {
"type": "UnaryExpression", "type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression", "type": "UnaryExpression",
"start": 17,
"end": 19,
"operator": "-", "operator": "-",
"argument": { "argument": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 18,
"end": 19,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 18,
"end": 19
} }
},
"start": 17,
"end": 19
} }
] ]
},
"start": 13,
"end": 20
} }
},
"start": 9,
"end": 20
} }
] ]
},
"start": 7,
"end": 22
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 23
} }
},
"start": 0,
"end": 23
} }
] ]
},
"start": 0,
"end": 23
} }

View File

@ -1,53 +1,75 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3678
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 23, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 23,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 23,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 13,
"name": "myArray" "name": "myArray"
}, },
"start": 6,
"end": 13
},
"init": { "init": {
"type": "ArrayRangeExpression", "type": "ArrayRangeExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayRangeExpression", "type": "ArrayRangeExpression",
"start": 16,
"end": 23,
"startElement": { "startElement": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 17,
"end": 18,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 17,
"end": 18
},
"endElement": { "endElement": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 20,
"end": 22,
"value": 10, "value": 10,
"raw": "10" "raw": "10"
}, },
"start": 20,
"end": 22
},
"endInclusive": true "endInclusive": true
},
"start": 16,
"end": 23
} }
},
"start": 6,
"end": 23
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 23
} }
] ]
},
"start": 0,
"end": 23
} }

View File

@ -1,77 +1,111 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3679
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 80, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 5,
"end": 57,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 8,
"end": 57,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 8,
"end": 24,
"name": "firstPrimeNumber" "name": "firstPrimeNumber"
}, },
"start": 8,
"end": 24
},
"init": { "init": {
"type": "FunctionExpression", "type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression", "type": "FunctionExpression",
"start": 27,
"end": 57,
"params": [], "params": [],
"body": { "body": {
"start": 33, "type": "UnboxedNode",
"end": 57, "kind": {
"body": [ "body": [
{ {
"type": "ReturnStatement", "type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement", "type": "ReturnStatement",
"start": 43,
"end": 51,
"argument": { "argument": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 50,
"end": 51,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 50,
"end": 51
} }
},
"start": 43,
"end": 51
} }
] ]
},
"start": 33,
"end": 57
} }
},
"start": 27,
"end": 57
} }
},
"start": 8,
"end": 57
} }
], ],
"kind": "fn" "kind": "fn"
}, },
"start": 5,
"end": 57
},
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 62,
"end": 80,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 62,
"end": 80,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 62,
"end": 78,
"name": "firstPrimeNumber" "name": "firstPrimeNumber"
}, },
"start": 62,
"end": 78
},
"arguments": [], "arguments": [],
"optional": false "optional": false
},
"start": 62,
"end": 80
} }
},
"start": 62,
"end": 80
} }
] ]
},
"start": 0,
"end": 80
} }

View File

@ -1,97 +1,137 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3687
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 66, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 49,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 3,
"end": 49,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 3,
"end": 8,
"name": "thing" "name": "thing"
}, },
"start": 3,
"end": 8
},
"init": { "init": {
"type": "FunctionExpression", "type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression", "type": "FunctionExpression",
"start": 11,
"end": 49,
"params": [ "params": [
{ {
"type": "Parameter", "type": "Parameter",
"identifier": { "identifier": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 12,
"end": 17,
"name": "param" "name": "param"
}, },
"start": 12,
"end": 17
},
"optional": false "optional": false
} }
], ],
"body": { "body": {
"start": 22, "type": "UnboxedNode",
"end": 49, "kind": {
"body": [ "body": [
{ {
"type": "ReturnStatement", "type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement", "type": "ReturnStatement",
"start": 32,
"end": 43,
"argument": { "argument": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 39,
"end": 43,
"value": true, "value": true,
"raw": "true" "raw": "true"
},
"start": 39,
"end": 43
} }
},
"start": 32,
"end": 43
} }
] ]
},
"start": 22,
"end": 49
} }
},
"start": 11,
"end": 49
} }
},
"start": 3,
"end": 49
} }
], ],
"kind": "fn" "kind": "fn"
}, },
"start": 0,
"end": 49
},
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 54,
"end": 66,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 54,
"end": 66,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 54,
"end": 59,
"name": "thing" "name": "thing"
}, },
"start": 54,
"end": 59
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 60,
"end": 65,
"value": false, "value": false,
"raw": "false" "raw": "false"
},
"start": 60,
"end": 65
} }
], ],
"optional": false "optional": false
},
"start": 54,
"end": 66
} }
},
"start": 54,
"end": 66
} }
] ]
},
"start": 0,
"end": 66
} }

View File

@ -1,247 +1,347 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3694
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 165, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 165,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 165,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 14,
"name": "mySketch" "name": "mySketch"
}, },
"start": 6,
"end": 14
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 17,
"end": 165,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 17,
"end": 37,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 17,
"end": 30,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 17,
"end": 30
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 32,
"end": 33,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 32,
"end": 33
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 34,
"end": 35,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 34,
"end": 35
} }
] ]
},
"start": 31,
"end": 36
} }
], ],
"optional": false "optional": false
}, },
"start": 17,
"end": 37
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 49,
"end": 75,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 49,
"end": 55,
"name": "lineTo" "name": "lineTo"
}, },
"start": 49,
"end": 55
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 56,
"end": 62,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 57,
"end": 58,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 57,
"end": 58
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 60,
"end": 61,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 60,
"end": 61
} }
] ]
}, },
"start": 56,
"end": 62
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 64, "start": 64,
"end": 65 "end": 65
}, },
{ {
"type": "TagDeclarator", "type": "TagDeclarator",
"type": "UnboxedNode",
"kind": {
"type": "TagDeclarator", "type": "TagDeclarator",
"start": 67,
"end": 74,
"value": "myPath" "value": "myPath"
},
"start": 67,
"end": 74
} }
], ],
"optional": false "optional": false
}, },
"start": 49,
"end": 75
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 87,
"end": 104,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 87,
"end": 93,
"name": "lineTo" "name": "lineTo"
}, },
"start": 87,
"end": 93
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 94,
"end": 100,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 95,
"end": 96,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 95,
"end": 96
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 98,
"end": 99,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 98,
"end": 99
} }
] ]
}, },
"start": 94,
"end": 100
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 102, "start": 102,
"end": 103 "end": 103
} }
], ],
"optional": false "optional": false
}, },
"start": 87,
"end": 104
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 116,
"end": 145,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 116,
"end": 122,
"name": "lineTo" "name": "lineTo"
}, },
"start": 116,
"end": 122
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 123,
"end": 129,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 124,
"end": 125,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 124,
"end": 125
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 127,
"end": 128,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 127,
"end": 128
} }
] ]
}, },
"start": 123,
"end": 129
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 131, "start": 131,
"end": 132 "end": 132
}, },
{ {
"type": "TagDeclarator", "type": "TagDeclarator",
"type": "UnboxedNode",
"kind": {
"type": "TagDeclarator", "type": "TagDeclarator",
"start": 134,
"end": 144,
"value": "rightPath" "value": "rightPath"
},
"start": 134,
"end": 144
} }
], ],
"optional": false "optional": false
}, },
"start": 116,
"end": 145
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 157,
"end": 165,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 157,
"end": 162,
"name": "close" "name": "close"
}, },
"start": 157,
"end": 162
},
"arguments": [ "arguments": [
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 163, "start": 163,
"end": 164 "end": 164
} }
], ],
"optional": false "optional": false
},
"start": 157,
"end": 165
} }
] ]
},
"start": 17,
"end": 165
} }
},
"start": 6,
"end": 165
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 165
} }
] ]
},
"start": 0,
"end": 165
} }

View File

@ -1,143 +1,201 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3702
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 70, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 70,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 70,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 14,
"name": "mySketch" "name": "mySketch"
}, },
"start": 6,
"end": 14
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 17,
"end": 70,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 17,
"end": 37,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 17,
"end": 30,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 17,
"end": 30
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 32,
"end": 33,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 32,
"end": 33
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 34,
"end": 35,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 34,
"end": 35
} }
] ]
},
"start": 31,
"end": 36
} }
], ],
"optional": false "optional": false
}, },
"start": 17,
"end": 37
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 41,
"end": 58,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 41,
"end": 47,
"name": "lineTo" "name": "lineTo"
}, },
"start": 41,
"end": 47
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 48,
"end": 54,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 49,
"end": 50,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 49,
"end": 50
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 52,
"end": 53,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 52,
"end": 53
} }
] ]
}, },
"start": 48,
"end": 54
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 56, "start": 56,
"end": 57 "end": 57
} }
], ],
"optional": false "optional": false
}, },
"start": 41,
"end": 58
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 62,
"end": 70,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 62,
"end": 67,
"name": "close" "name": "close"
}, },
"start": 62,
"end": 67
},
"arguments": [ "arguments": [
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 68, "start": 68,
"end": 69 "end": 69
} }
], ],
"optional": false "optional": false
},
"start": 62,
"end": 70
} }
] ]
},
"start": 17,
"end": 70
} }
},
"start": 6,
"end": 70
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 70
} }
] ]
},
"start": 0,
"end": 70
} }

View File

@ -1,52 +1,74 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3706
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 30, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 30,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 30,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 11,
"name": "myBox" "name": "myBox"
}, },
"start": 6,
"end": 11
},
"init": { "init": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 14,
"end": 30,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 14,
"end": 27,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 14,
"end": 27
},
"arguments": [ "arguments": [
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 28,
"end": 29,
"name": "p" "name": "p"
},
"start": 28,
"end": 29
} }
], ],
"optional": false "optional": false
},
"start": 14,
"end": 30
} }
},
"start": 6,
"end": 30
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 30
} }
] ]
},
"start": 0,
"end": 30
} }

View File

@ -1,90 +1,127 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3707
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 29, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 29,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 29,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 11,
"name": "myBox" "name": "myBox"
}, },
"start": 6,
"end": 11
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 14,
"end": 29,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 14,
"end": 18,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 14,
"end": 15,
"name": "f" "name": "f"
}, },
"start": 14,
"end": 15
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 16,
"end": 17,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 16,
"end": 17
} }
], ],
"optional": false "optional": false
}, },
"start": 14,
"end": 18
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 22,
"end": 29,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 22,
"end": 23,
"name": "g" "name": "g"
}, },
"start": 22,
"end": 23
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 24,
"end": 25,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
}, },
"start": 24,
"end": 25
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 27, "start": 27,
"end": 28 "end": 28
} }
], ],
"optional": false "optional": false
},
"start": 22,
"end": 29
} }
] ]
},
"start": 14,
"end": 29
} }
},
"start": 6,
"end": 29
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 29
} }
] ]
},
"start": 0,
"end": 29
} }

View File

@ -1,104 +1,147 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3708
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 49, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 49,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 49,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 11,
"name": "myBox" "name": "myBox"
}, },
"start": 6,
"end": 11
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 14,
"end": 49,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 14,
"end": 30,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 14,
"end": 27,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 14,
"end": 27
},
"arguments": [ "arguments": [
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 28,
"end": 29,
"name": "p" "name": "p"
},
"start": 28,
"end": 29
} }
], ],
"optional": false "optional": false
}, },
"start": 14,
"end": 30
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 34,
"end": 49,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 34,
"end": 38,
"name": "line" "name": "line"
}, },
"start": 34,
"end": 38
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 39,
"end": 45,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 40,
"end": 41,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 40,
"end": 41
},
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 43,
"end": 44,
"name": "l" "name": "l"
},
"start": 43,
"end": 44
} }
] ]
}, },
"start": 39,
"end": 45
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 47, "start": 47,
"end": 48 "end": 48
} }
], ],
"optional": false "optional": false
},
"start": 34,
"end": 49
} }
] ]
},
"start": 14,
"end": 49
} }
},
"start": 6,
"end": 49
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 49
} }
] ]
},
"start": 0,
"end": 49
} }

View File

@ -1,74 +1,105 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3709
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 22, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 22,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 22,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 21,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 9,
"end": 19,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 11,
"name": "to" "name": "to"
}, },
"start": 9,
"end": 11
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 14,
"end": 15
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 17,
"end": 18,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 17,
"end": 18
} }
] ]
},
"start": 13,
"end": 19
} }
},
"start": 9,
"end": 19
} }
] ]
},
"start": 7,
"end": 21
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 22
} }
},
"start": 0,
"end": 22
} }
] ]
},
"start": 0,
"end": 22
} }

View File

@ -1,109 +1,155 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3710
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 36, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 36,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 36,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 35,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 9,
"end": 19,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 11,
"name": "to" "name": "to"
}, },
"start": 9,
"end": 11
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
{ "start": 14,
"type": "Literal", "end": 15
"type": "Literal",
"start": 17,
"end": 18,
"value": 1,
"raw": "1"
}
]
}
}, },
{ {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 17,
"end": 18
}
]
},
"start": 13,
"end": 19
}
},
"start": 9,
"end": 19
},
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 21,
"end": 33,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 21,
"end": 25,
"name": "from" "name": "from"
}, },
"start": 21,
"end": 25
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 27,
"end": 33,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 28,
"end": 29,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
}, },
"start": 28,
"end": 29
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 31,
"end": 32,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 31,
"end": 32
} }
] ]
},
"start": 27,
"end": 33
} }
},
"start": 21,
"end": 33
} }
] ]
},
"start": 7,
"end": 35
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 36
} }
},
"start": 0,
"end": 36
} }
] ]
},
"start": 0,
"end": 36
} }

View File

@ -1,74 +1,105 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3711
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 19, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 19,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 19,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 18,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 8,
"end": 17,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 8,
"end": 10,
"name": "to" "name": "to"
}, },
"start": 8,
"end": 10
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 11,
"end": 17,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 12,
"end": 13,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 12,
"end": 13
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 15,
"end": 16,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 15,
"end": 16
} }
] ]
},
"start": 11,
"end": 17
} }
},
"start": 8,
"end": 17
} }
] ]
},
"start": 7,
"end": 18
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 19
} }
},
"start": 0,
"end": 19
} }
] ]
},
"start": 0,
"end": 19
} }

View File

@ -1,109 +1,155 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3712
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 35, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 35,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 35,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 34,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 9,
"end": 19,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 11,
"name": "to" "name": "to"
}, },
"start": 9,
"end": 11
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
{ "start": 14,
"type": "Literal", "end": 15
"type": "Literal",
"start": 17,
"end": 18,
"value": 1,
"raw": "1"
}
]
}
}, },
{ {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 17,
"end": 18
}
]
},
"start": 13,
"end": 19
}
},
"start": 9,
"end": 19
},
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 21,
"end": 33,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 21,
"end": 25,
"name": "from" "name": "from"
}, },
"start": 21,
"end": 25
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 27,
"end": 33,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 28,
"end": 29,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
}, },
"start": 28,
"end": 29
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 31,
"end": 32,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 31,
"end": 32
} }
] ]
},
"start": 27,
"end": 33
} }
},
"start": 21,
"end": 33
} }
] ]
},
"start": 7,
"end": 34
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 35
} }
},
"start": 0,
"end": 35
} }
] ]
},
"start": 0,
"end": 35
} }

View File

@ -1,109 +1,155 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3713
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 35, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 35,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 35,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo" "name": "lineTo"
}, },
"start": 0,
"end": 6
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 7,
"end": 34,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 9,
"end": 19,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 11,
"name": "to" "name": "to"
}, },
"start": 9,
"end": 11
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
{ "start": 14,
"type": "Literal", "end": 15
"type": "Literal",
"start": 17,
"end": 18,
"value": 1,
"raw": "1"
}
]
}
}, },
{ {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 17,
"end": 18
}
]
},
"start": 13,
"end": 19
}
},
"start": 9,
"end": 19
},
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 20,
"end": 32,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 20,
"end": 24,
"name": "from" "name": "from"
}, },
"start": 20,
"end": 24
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 26,
"end": 32,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 27,
"end": 28,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
}, },
"start": 27,
"end": 28
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 30,
"end": 31,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 30,
"end": 31
} }
] ]
},
"start": 26,
"end": 32
} }
},
"start": 20,
"end": 32
} }
] ]
},
"start": 7,
"end": 34
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 35
} }
},
"start": 0,
"end": 35
} }
] ]
},
"start": 0,
"end": 35
} }

View File

@ -1,69 +1,97 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3714
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 37, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 37,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 37,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 14,
"name": "mySketch" "name": "mySketch"
}, },
"start": 6,
"end": 14
},
"init": { "init": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 17,
"end": 37,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 17,
"end": 30,
"name": "startSketchAt" "name": "startSketchAt"
}, },
"start": 17,
"end": 30
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 32,
"end": 33,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 32,
"end": 33
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 34,
"end": 35,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 34,
"end": 35
} }
] ]
},
"start": 31,
"end": 36
} }
], ],
"optional": false "optional": false
},
"start": 17,
"end": 37
} }
},
"start": 6,
"end": 37
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 37
} }
] ]
},
"start": 0,
"end": 37
} }

View File

@ -1,54 +1,76 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3715
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 28, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 28,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 28,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 3,
"name": "log" "name": "log"
}, },
"start": 0,
"end": 3
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 4,
"end": 5,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
}, },
"start": 4,
"end": 5
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 7,
"end": 14,
"value": "hello", "value": "hello",
"raw": "\"hello\"" "raw": "\"hello\""
}, },
"start": 7,
"end": 14
},
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 16,
"end": 27,
"name": "aIdentifier" "name": "aIdentifier"
},
"start": 16,
"end": 27
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 28
} }
},
"start": 0,
"end": 28
} }
] ]
},
"start": 0,
"end": 28
} }

View File

@ -1,39 +1,55 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3716
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 7, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 7,
"expression": { "expression": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 0,
"end": 7,
"operator": "+", "operator": "+",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 0,
"end": 1,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
}, },
"start": 0,
"end": 1
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 4,
"end": 7,
"value": "a", "value": "a",
"raw": "\"a\"" "raw": "\"a\""
},
"start": 4,
"end": 7
} }
},
"start": 0,
"end": 7
} }
},
"start": 0,
"end": 7
} }
] ]
},
"start": 0,
"end": 7
} }

View File

@ -1,60 +1,85 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3717
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 15, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 0,
"end": 15,
"expression": { "expression": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 0,
"end": 15,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 0,
"end": 4,
"name": "line" "name": "line"
}, },
"start": 0,
"end": 4
},
"arguments": [ "arguments": [
{ {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 5,
"end": 11,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 6,
"end": 7,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 6,
"end": 7
},
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 9,
"end": 10,
"name": "l" "name": "l"
},
"start": 9,
"end": 10
} }
] ]
}, },
"start": 5,
"end": 11
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 13, "start": 13,
"end": 14 "end": 14
} }
], ],
"optional": false "optional": false
},
"start": 0,
"end": 15
} }
},
"start": 0,
"end": 15
} }
] ]
},
"start": 0,
"end": 15
} }

View File

@ -1,173 +1,246 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3718
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 108, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 107,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 107,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 14,
"name": "cylinder" "name": "cylinder"
}, },
"start": 6,
"end": 14
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 17,
"end": 107,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 17,
"end": 36,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 17,
"end": 30,
"name": "startSketchOn" "name": "startSketchOn"
}, },
"start": 17,
"end": 30
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 31,
"end": 35,
"value": "XY", "value": "XY",
"raw": "'XY'" "raw": "'XY'"
},
"start": 31,
"end": 35
} }
], ],
"optional": false "optional": false
}, },
"start": 17,
"end": 36
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 44,
"end": 85,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 44,
"end": 50,
"name": "circle" "name": "circle"
}, },
"start": 44,
"end": 50
},
"arguments": [ "arguments": [
{ {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 51,
"end": 81,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 53,
"end": 67,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 53,
"end": 59,
"name": "center" "name": "center"
}, },
"start": 53,
"end": 59
},
"value": { "value": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 61,
"end": 67,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 62,
"end": 63,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
}, },
"start": 62,
"end": 63
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 65,
"end": 66,
"value": 0, "value": 0,
"raw": "0" "raw": "0"
},
"start": 65,
"end": 66
} }
] ]
},
"start": 61,
"end": 67
} }
}, },
"start": 53,
"end": 67
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 69,
"end": 79,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 69,
"end": 75,
"name": "radius" "name": "radius"
}, },
"start": 69,
"end": 75
},
"value": { "value": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 77,
"end": 79,
"value": 22, "value": 22,
"raw": "22" "raw": "22"
},
"start": 77,
"end": 79
} }
},
"start": 69,
"end": 79
} }
] ]
}, },
"start": 51,
"end": 81
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 83, "start": 83,
"end": 84 "end": 84
} }
], ],
"optional": false "optional": false
}, },
"start": 44,
"end": 85
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 93,
"end": 107,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 93,
"end": 100,
"name": "extrude" "name": "extrude"
}, },
"start": 93,
"end": 100
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 101,
"end": 103,
"value": 14, "value": 14,
"raw": "14" "raw": "14"
}, },
"start": 101,
"end": 103
},
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 105, "start": 105,
"end": 106 "end": 106
} }
], ],
"optional": false "optional": false
},
"start": 93,
"end": 107
} }
] ]
},
"start": 17,
"end": 107
} }
},
"start": 6,
"end": 107
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 107
} }
] ]
},
"start": 0,
"end": 108
} }

View File

@ -1,90 +1,127 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3719
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 49, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 49,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 3,
"end": 49,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 3,
"end": 4,
"name": "f" "name": "f"
}, },
"start": 3,
"end": 4
},
"init": { "init": {
"type": "FunctionExpression", "type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression", "type": "FunctionExpression",
"start": 7,
"end": 49,
"params": [ "params": [
{ {
"type": "Parameter", "type": "Parameter",
"identifier": { "identifier": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 8,
"end": 13,
"name": "angle" "name": "angle"
}, },
"start": 8,
"end": 13
},
"optional": true "optional": true
} }
], ],
"body": { "body": {
"start": 19, "type": "UnboxedNode",
"end": 49, "kind": {
"body": [ "body": [
{ {
"type": "ReturnStatement", "type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement", "type": "ReturnStatement",
"start": 21,
"end": 47,
"argument": { "argument": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 28,
"end": 47,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 28,
"end": 35,
"name": "default" "name": "default"
}, },
"start": 28,
"end": 35
},
"arguments": [ "arguments": [
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 36,
"end": 41,
"name": "angle" "name": "angle"
}, },
"start": 36,
"end": 41
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 43,
"end": 46,
"value": 360, "value": 360,
"raw": "360" "raw": "360"
},
"start": 43,
"end": 46
} }
], ],
"optional": false "optional": false
},
"start": 28,
"end": 47
} }
},
"start": 21,
"end": 47
} }
] ]
},
"start": 19,
"end": 49
} }
},
"start": 7,
"end": 49
} }
},
"start": 3,
"end": 49
} }
], ],
"kind": "fn" "kind": "fn"
},
"start": 0,
"end": 49
} }
] ]
},
"start": 0,
"end": 49
} }

View File

@ -1,83 +1,116 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3720
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 91, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 91,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 4,
"end": 91,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 4,
"end": 11,
"name": "numbers" "name": "numbers"
}, },
"start": 4,
"end": 11
},
"init": { "init": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 28,
"end": 29,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 28,
"end": 29
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 79,
"end": 80,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 79,
"end": 80
} }
], ],
"nonCodeMeta": { "nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": { "nonCodeNodes": {
"1": [ "1": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 43,
"end": 48,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "A,", "value": "A,",
"style": "line" "style": "line"
} }
},
"start": 43,
"end": 48
} }
], ],
"2": [ "2": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 61,
"end": 66,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "B,", "value": "B,",
"style": "line" "style": "line"
} }
},
"start": 61,
"end": 66
} }
] ]
}, },
"start": [] "start": []
},
"start": 0,
"end": 0
} }
},
"start": 14,
"end": 91
} }
},
"start": 4,
"end": 91
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 91
} }
] ]
},
"start": 0,
"end": 91
} }

View File

@ -1,83 +1,116 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3729
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 91, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 91,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 4,
"end": 91,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 4,
"end": 11,
"name": "numbers" "name": "numbers"
}, },
"start": 4,
"end": 11
},
"init": { "init": {
"type": "ArrayExpression", "type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression", "type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [ "elements": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 28,
"end": 29,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
}, },
"start": 28,
"end": 29
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 43,
"end": 44,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 43,
"end": 44
} }
], ],
"nonCodeMeta": { "nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": { "nonCodeNodes": {
"2": [ "2": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 58,
"end": 63,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "A,", "value": "A,",
"style": "line" "style": "line"
} }
},
"start": 58,
"end": 63
} }
], ],
"3": [ "3": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 76,
"end": 81,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "B,", "value": "B,",
"style": "line" "style": "line"
} }
},
"start": 76,
"end": 81
} }
] ]
}, },
"start": [] "start": []
},
"start": 0,
"end": 0
} }
},
"start": 14,
"end": 91
} }
},
"start": 4,
"end": 91
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 91
} }
] ]
},
"start": 0,
"end": 91
} }

View File

@ -1,93 +1,135 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3738
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 80, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 80,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 4,
"end": 80,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 4,
"end": 9,
"name": "props" "name": "props"
}, },
"start": 4,
"end": 9
},
"init": { "init": {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 12,
"end": 80,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 26,
"end": 30,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 26,
"end": 27,
"name": "a" "name": "a"
}, },
"start": 26,
"end": 27
},
"value": { "value": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 29,
"end": 30,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 29,
"end": 30
} }
}, },
"start": 26,
"end": 30
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 65,
"end": 69,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 65,
"end": 66,
"name": "c" "name": "c"
}, },
"start": 65,
"end": 66
},
"value": { "value": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 68,
"end": 69,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 68,
"end": 69
} }
},
"start": 65,
"end": 69
} }
], ],
"nonCodeMeta": { "nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": { "nonCodeNodes": {
"1": [ "1": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 44,
"end": 52,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "b: 2,", "value": "b: 2,",
"style": "line" "style": "line"
} }
},
"start": 44,
"end": 52
} }
] ]
}, },
"start": [] "start": []
},
"start": 0,
"end": 0
} }
},
"start": 12,
"end": 80
} }
},
"start": 4,
"end": 80
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 80
} }
] ]
},
"start": 0,
"end": 80
} }

View File

@ -1,93 +1,135 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3746
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 79, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 79,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 4,
"end": 79,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 4,
"end": 9,
"name": "props" "name": "props"
}, },
"start": 4,
"end": 9
},
"init": { "init": {
"type": "ObjectExpression", "type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression", "type": "ObjectExpression",
"start": 12,
"end": 79,
"properties": [ "properties": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 26,
"end": 30,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 26,
"end": 27,
"name": "a" "name": "a"
}, },
"start": 26,
"end": 27
},
"value": { "value": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 29,
"end": 30,
"value": 1, "value": 1,
"raw": "1" "raw": "1"
},
"start": 29,
"end": 30
} }
}, },
"start": 26,
"end": 30
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty", "type": "ObjectProperty",
"start": 65,
"end": 69,
"key": { "key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 65,
"end": 66,
"name": "c" "name": "c"
}, },
"start": 65,
"end": 66
},
"value": { "value": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 68,
"end": 69,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 68,
"end": 69
} }
},
"start": 65,
"end": 69
} }
], ],
"nonCodeMeta": { "nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": { "nonCodeNodes": {
"1": [ "1": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 44,
"end": 52,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "b: 2,", "value": "b: 2,",
"style": "line" "style": "line"
} }
},
"start": 44,
"end": 52
} }
] ]
}, },
"start": [] "start": []
},
"start": 0,
"end": 0
} }
},
"start": 12,
"end": 79
} }
},
"start": 4,
"end": 79
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 79
} }
] ]
},
"start": 0,
"end": 79
} }

View File

@ -1,91 +1,128 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3615
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 36, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 36,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 36,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 11,
"name": "myVar" "name": "myVar"
}, },
"start": 6,
"end": 11
},
"init": { "init": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 14,
"end": 36,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 14,
"end": 17,
"name": "min" "name": "min"
}, },
"start": 14,
"end": 17
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 18,
"end": 19,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
}, },
"start": 18,
"end": 19
},
{ {
"type": "UnaryExpression", "type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression", "type": "UnaryExpression",
"start": 22,
"end": 35,
"operator": "-", "operator": "-",
"argument": { "argument": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 23,
"end": 35,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 23,
"end": 29,
"name": "legLen" "name": "legLen"
}, },
"start": 23,
"end": 29
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 30,
"end": 31,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
}, },
"start": 30,
"end": 31
},
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 33,
"end": 34,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 33,
"end": 34
} }
], ],
"optional": false "optional": false
},
"start": 23,
"end": 35
} }
},
"start": 22,
"end": 35
} }
], ],
"optional": false "optional": false
},
"start": 14,
"end": 36
} }
},
"start": 6,
"end": 36
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 36
} }
] ]
},
"start": 0,
"end": 36
} }

View File

@ -1,129 +1,180 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3754
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 133, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 1,
"end": 132,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 7,
"end": 132,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 7,
"end": 16,
"name": "sketch001" "name": "sketch001"
}, },
"start": 7,
"end": 16
},
"init": { "init": {
"type": "PipeExpression", "type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression", "type": "PipeExpression",
"start": 19,
"end": 132,
"body": [ "body": [
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 19,
"end": 38,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 19,
"end": 32,
"name": "startSketchOn" "name": "startSketchOn"
}, },
"start": 19,
"end": 32
},
"arguments": [ "arguments": [
{ {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 33,
"end": 37,
"value": "XY", "value": "XY",
"raw": "'XY'" "raw": "'XY'"
},
"start": 33,
"end": 37
} }
], ],
"optional": false "optional": false
}, },
"start": 19,
"end": 38
},
{ {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 115,
"end": 132,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 115,
"end": 129,
"name": "startProfileAt" "name": "startProfileAt"
}, },
"start": 115,
"end": 129
},
"arguments": [ "arguments": [
{ {
"type": "PipeSubstitution", "type": "PipeSubstitution",
"type": "PipeSubstitution", "type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 130, "start": 130,
"end": 131 "end": 131
} }
], ],
"optional": false "optional": false
},
"start": 115,
"end": 132
} }
], ],
"nonCodeMeta": { "nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": { "nonCodeNodes": {
"0": [ "0": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 41,
"end": 52,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "|> arc({", "value": "|> arc({",
"style": "line" "style": "line"
} }
}, },
"start": 41,
"end": 52
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 55,
"end": 74,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "angleEnd: 270,", "value": "angleEnd: 270,",
"style": "line" "style": "line"
} }
}, },
"start": 55,
"end": 74
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 77,
"end": 98,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "angleStart: 450,", "value": "angleStart: 450,",
"style": "line" "style": "line"
} }
}, },
"start": 77,
"end": 98
},
{ {
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode", "type": "NonCodeNode",
"start": 101,
"end": 109,
"value": { "value": {
"type": "blockComment", "type": "blockComment",
"value": "}, %)", "value": "}, %)",
"style": "line" "style": "line"
} }
},
"start": 101,
"end": 109
} }
] ]
}, },
"start": [] "start": []
},
"start": 0,
"end": 0
} }
},
"start": 19,
"end": 132
} }
},
"start": 7,
"end": 132
} }
], ],
"kind": "const" "kind": "const"
},
"start": 1,
"end": 132
} }
] ]
},
"start": 0,
"end": 133
} }

View File

@ -1,98 +1,138 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3765
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 32, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 1,
"end": 31,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 7,
"end": 31,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 7,
"end": 11,
"name": "my14" "name": "my14"
}, },
"start": 7,
"end": 11
},
"init": { "init": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 14,
"end": 31,
"operator": "-", "operator": "-",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 14,
"end": 19,
"operator": "^", "operator": "^",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 14,
"end": 15,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
}, },
"start": 14,
"end": 15
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 18,
"end": 19,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 18,
"end": 19
} }
}, },
"start": 14,
"end": 19
},
"right": { "right": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 22,
"end": 31,
"operator": "*", "operator": "*",
"left": { "left": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 22,
"end": 27,
"operator": "^", "operator": "^",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 22,
"end": 23,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
}, },
"right": { "start": 22,
"type": "Literal", "end": 23
"type": "Literal",
"start": 26,
"end": 27,
"value": 2,
"raw": "2"
}
}, },
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 30,
"end": 31,
"value": 2, "value": 2,
"raw": "2" "raw": "2"
},
"start": 26,
"end": 27
} }
},
"start": 22,
"end": 27
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 30,
"end": 31
} }
},
"start": 22,
"end": 31
} }
},
"start": 14,
"end": 31
}
},
"start": 7,
"end": 31
} }
], ],
"kind": "const" "kind": "const"
},
"start": 1,
"end": 31
} }
] ]
},
"start": 0,
"end": 32
} }

View File

@ -1,86 +1,123 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3771
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 74, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 74,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 74,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 7,
"name": "x" "name": "x"
}, },
"start": 6,
"end": 7
},
"init": { "init": {
"type": "IfExpression", "type": "IfExpression",
"type": "UnboxedNode",
"kind": {
"type": "IfExpression", "type": "IfExpression",
"start": 10,
"end": 74,
"cond": { "cond": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 13,
"end": 17,
"value": true, "value": true,
"raw": "true" "raw": "true"
}, },
"start": 13,
"end": 17
},
"then_val": { "then_val": {
"start": 32, "type": "UnboxedNode",
"end": 42, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 32,
"end": 33,
"expression": { "expression": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 32,
"end": 33,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 32,
"end": 33
} }
},
"start": 32,
"end": 33
} }
] ]
}, },
"start": 32,
"end": 42
},
"else_ifs": [], "else_ifs": [],
"final_else": { "final_else": {
"start": 63, "type": "UnboxedNode",
"end": 73, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 63,
"end": 64,
"expression": { "expression": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 63,
"end": 64,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 63,
"end": 64
} }
},
"start": 63,
"end": 64
} }
] ]
}, },
"start": 63,
"end": 73
},
"digest": null "digest": null
},
"start": 10,
"end": 74
} }
},
"start": 6,
"end": 74
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 74
} }
] ]
},
"start": 0,
"end": 74
} }

View File

@ -1,135 +1,193 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3779
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 121, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 121,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 6,
"end": 121,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 6,
"end": 7,
"name": "x" "name": "x"
}, },
"start": 6,
"end": 7
},
"init": { "init": {
"type": "IfExpression", "type": "IfExpression",
"type": "UnboxedNode",
"kind": {
"type": "IfExpression", "type": "IfExpression",
"start": 10,
"end": 121,
"cond": { "cond": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 13,
"end": 17,
"value": true, "value": true,
"raw": "true" "raw": "true"
}, },
"start": 13,
"end": 17
},
"then_val": { "then_val": {
"start": 32, "type": "UnboxedNode",
"end": 42, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 32,
"end": 33,
"expression": { "expression": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 32,
"end": 33,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 32,
"end": 33
} }
},
"start": 32,
"end": 33
} }
] ]
}, },
"start": 32,
"end": 42
},
"else_ifs": [ "else_ifs": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "ElseIf", "type": "ElseIf",
"start": 44,
"end": 90,
"cond": { "cond": {
"type": "CallExpression", "type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression", "type": "CallExpression",
"start": 52,
"end": 64,
"callee": { "callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 52,
"end": 56,
"name": "func" "name": "func"
}, },
"start": 52,
"end": 56
},
"arguments": [ "arguments": [
{ {
"type": "Identifier", "type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 57,
"end": 63,
"name": "radius" "name": "radius"
},
"start": 57,
"end": 63
} }
], ],
"optional": false "optional": false
}, },
"start": 52,
"end": 64
},
"then_val": { "then_val": {
"start": 65, "type": "UnboxedNode",
"end": 89, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 79,
"end": 80,
"expression": { "expression": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 79,
"end": 80,
"value": 4, "value": 4,
"raw": "4" "raw": "4"
},
"start": 79,
"end": 80
} }
},
"start": 79,
"end": 80
} }
] ]
}, },
"start": 65,
"end": 89
},
"digest": null "digest": null
},
"start": 44,
"end": 90
} }
], ],
"final_else": { "final_else": {
"start": 110, "type": "UnboxedNode",
"end": 120, "kind": {
"body": [ "body": [
{ {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement", "type": "ExpressionStatement",
"start": 110,
"end": 111,
"expression": { "expression": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 110,
"end": 111,
"value": 5, "value": 5,
"raw": "5" "raw": "5"
},
"start": 110,
"end": 111
} }
},
"start": 110,
"end": 111
} }
] ]
}, },
"start": 110,
"end": 120
},
"digest": null "digest": null
},
"start": 10,
"end": 121
} }
},
"start": 6,
"end": 121
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 121
} }
] ]
},
"start": 0,
"end": 121
} }

View File

@ -1,53 +1,75 @@
--- ---
source: kcl/src/parser/parser_impl.rs source: kcl/src/parser/parser_impl.rs
assertion_line: 3789
expression: actual expression: actual
--- ---
{ {
"start": 0, "type": "UnboxedNode",
"end": 14, "kind": {
"body": [ "body": [
{ {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration", "type": "VariableDeclaration",
"start": 0,
"end": 14,
"declarations": [ "declarations": [
{ {
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator", "type": "VariableDeclarator",
"start": 4,
"end": 14,
"id": { "id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier", "type": "Identifier",
"start": 4,
"end": 5,
"name": "x" "name": "x"
}, },
"start": 4,
"end": 5
},
"init": { "init": {
"type": "BinaryExpression", "type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression", "type": "BinaryExpression",
"start": 8,
"end": 14,
"operator": "==", "operator": "==",
"left": { "left": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 8,
"end": 9,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
}, },
"start": 8,
"end": 9
},
"right": { "right": {
"type": "Literal", "type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal", "type": "Literal",
"start": 13,
"end": 14,
"value": 3, "value": 3,
"raw": "3" "raw": "3"
},
"start": 13,
"end": 14
} }
},
"start": 8,
"end": 14
} }
},
"start": 4,
"end": 14
} }
], ],
"kind": "const" "kind": "const"
},
"start": 0,
"end": 14
} }
] ]
},
"start": 0,
"end": 14
} }

Some files were not shown because too many files have changed in this diff Show More