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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

View File

@ -9,7 +9,7 @@ Construct a 2-dimensional circle, of the specified radius, centered at
the provided (x, y) origin point.
```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 |
| `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

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.
```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 |
|----------|------|-------------|----------|
| `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

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.
```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 |
| `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

View File

@ -9,7 +9,7 @@ Draw a line relative to the current origin to a specified (x, y) away
from the current position.
```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 |
| `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

View File

@ -9,7 +9,7 @@ Draw a line from the current origin to some absolute (x, y) point.
```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 |
| `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

View File

@ -9,7 +9,7 @@ Start a new profile at a given point.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

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.
```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 |
| `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

View File

@ -18,7 +18,7 @@ A base path.
|----------|------|-------------|----------|
| `from` |`[number, number]`| The from 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 |

View File

@ -22,12 +22,10 @@ layout: manual
| 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 |
| `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 |
|----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
| `radius` |`number`| | 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 |
| `length` |`number`| | 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 |
|----------|------|-------------|----------|
| `start` |[`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 |
| `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 |

View File

@ -23,12 +23,10 @@ An expression can be evaluated to yield a single KCL value.
| 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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
| `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 |
| `sourceRange` |`SourceRange`| The source range. | No |
@ -46,7 +46,7 @@ An extruded arc.
|----------|------|-------------|----------|
| `type` |enum: `extrudeArc`| | 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 |
| `sourceRange` |`SourceRange`| The source range. | No |
@ -66,7 +66,7 @@ Geometry metadata.
|----------|------|-------------|----------|
| `type` |enum: `chamfer`| | 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 |
| `sourceRange` |`SourceRange`| The source range. | No |
@ -86,7 +86,7 @@ Geometry metadata.
|----------|------|-------------|----------|
| `type` |enum: `fillet`| | 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 |
| `sourceRange` |`SourceRange`| The source range. | No |

View File

@ -15,10 +15,8 @@ layout: manual
| 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 |
| `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 |

View File

@ -15,8 +15,6 @@ layout: manual
| Property | Type | Description | Required |
|----------|------|-------------|----------|
| `start` |[`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

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

View File

@ -23,10 +23,9 @@ layout: manual
| Property | Type | Description | Required |
|----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `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 |
| `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 |
|----------|------|-------------|----------|
| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No |
| `kind` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `start` |[`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 |
|----------|------|-------------|----------|
| `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 |

View File

@ -15,8 +15,6 @@ layout: manual
| 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 |
| `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 |
|----------|------|-------------|----------|
| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No |
| `key` |[`Identifier`](/docs/kcl/types/Identifier)| | No |
| `key` |[`UnboxedNode_for_Identifier`](/docs/kcl/types/UnboxedNode_for_Identifier)| | 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 |

View File

@ -16,7 +16,7 @@ Parameter of a KCL function.
| 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 |
| `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 |
| `from` |`[number, number]`| The from 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 |
@ -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 |
| `from` |`[number, number]`| The from 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 |
@ -71,7 +71,7 @@ A arc that is tangential to the last path segment
| `ccw` |`boolean`| arc's direction | No |
| `from` |`[number, number]`| The from 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 |
@ -94,7 +94,7 @@ a complete arc
| `ccw` |`boolean`| arc's direction | No |
| `from` |`[number, number]`| The from 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 |
@ -115,7 +115,7 @@ A path that is horizontal.
| `x` |`number`| The x coordinate. | No |
| `from` |`[number, number]`| The from 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 |
@ -137,7 +137,7 @@ An angled line to.
| `y` |`number`| The y coordinate. | No |
| `from` |`[number, number]`| The from 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 |
@ -157,7 +157,7 @@ A base path.
| `type` |enum: `Base`| | No |
| `from` |`[number, number]`| The from 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 |

View File

@ -16,10 +16,8 @@ A KCL program top level, or function body.
| 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 |
| `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 |

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.
```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 |
| `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

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)
```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 |
| `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

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.
```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 |
| `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

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)
```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 |
| `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

View File

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

View File

@ -16,6 +16,8 @@ use crate::{
executor::{Point2d, SourceRange},
};
use super::types::UnboxedNode;
type Point3d = kcmc::shared::Point3d<f64>;
#[derive(Debug)]
@ -35,7 +37,7 @@ const EPSILON: f64 = 0.015625; // or 2^-6
/// a move or a new line.
pub async fn modify_ast_for_sketch(
engine: &Arc<Box<dyn EngineManager>>,
program: &mut Program,
program: &mut UnboxedNode<Program>,
// The name of the sketch.
sketch_name: &str,
// The type of plane the sketch is on. `XY` or `XZ`, etc
@ -195,7 +197,7 @@ fn create_start_sketch_on(
end: [f64; 2],
plane: crate::executor::PlaneType,
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_profile_at = CallExpression::new(
"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 super::impl_value_meta;
use super::ConstraintLevel;
use super::Hover;
use super::Node;
use super::NodeList;
use super::UnboxedNode;
use super::{Digest, Expr};
use databake::*;
use schemars::JsonSchema;
@ -19,12 +20,10 @@ type IfBlock = crate::ast::types::Program;
#[ts(export)]
#[serde(tag = "type")]
pub struct IfExpression {
pub start: usize,
pub end: usize,
pub cond: Box<Expr>,
pub then_val: Box<IfBlock>,
pub else_ifs: Vec<ElseIf>,
pub final_else: Box<IfBlock>,
pub then_val: Node<IfBlock>,
pub else_ifs: NodeList<ElseIf>,
pub final_else: Node<IfBlock>,
pub digest: Option<Digest>,
}
@ -34,57 +33,21 @@ pub struct IfExpression {
#[ts(export)]
#[serde(tag = "type")]
pub struct ElseIf {
pub start: usize,
pub end: usize,
pub cond: Expr,
pub then_val: Box<IfBlock>,
pub then_val: Node<IfBlock>,
pub digest: Option<Digest>,
}
// Source code metadata
impl_value_meta!(IfExpression);
impl_value_meta!(ElseIf);
impl IfExpression {
impl UnboxedNode<IfExpression> {
fn source_ranges(&self) -> Vec<SourceRange> {
vec![SourceRange::from(self)]
}
}
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 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 {
impl UnboxedNode<ElseIf> {
#[allow(dead_code)]
fn source_ranges(&self) -> Vec<SourceRange> {
vec![SourceRange([self.start, self.end])]
@ -93,6 +56,15 @@ impl ElseIf {
// 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 {
pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option<Hover> {
self.cond
@ -115,12 +87,7 @@ impl IfExpression {
}
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) {
self.cond.replace_value(source_range, new_value.clone());
for else_if in &mut self.else_ifs {

View File

@ -1,7 +1,7 @@
use super::{
human_friendly_type, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart,
CallExpression, Expr, IfExpression, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject,
ObjectExpression, TagDeclarator, UnaryExpression, UnaryOperator,
ObjectExpression, TagDeclarator, UnaryExpression, UnaryOperator, UnboxedNode,
};
use crate::{
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> {
let array = match &self.object {
MemberObject::MemberExpression(member_expr) => member_expr.get_result(exec_state)?,
@ -137,7 +137,7 @@ impl MemberExpression {
}
}
impl BinaryExpression {
impl UnboxedNode<BinaryExpression> {
#[async_recursion]
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()?;
@ -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> {
if self.operator == UnaryOperator::Not {
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)
}
impl CallExpression {
impl UnboxedNode<CallExpression> {
#[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
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> {
let memory_item = KclValue::TagIdentifier(Box::new(TagIdentifier {
value: self.name.clone(),
@ -518,7 +518,7 @@ impl TagDeclarator {
}
}
impl ArrayExpression {
impl UnboxedNode<ArrayExpression> {
#[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
let mut results = Vec::with_capacity(self.elements.len());
@ -543,21 +543,21 @@ impl ArrayExpression {
}
}
impl ArrayRangeExpression {
impl UnboxedNode<ArrayRangeExpression> {
#[async_recursion]
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
.execute_expr(&self.start_element, exec_state, &metadata, StatementKind::Expression)
.await?
.get_json_value()?;
let start = parse_json_number_as_u64(&start, (&*self.start_element).into())?;
let metadata = Metadata::from(&*self.end_element);
let start = parse_json_number_as_u64(&start, (&self.start_element).into())?;
let metadata = Metadata::from(&self.end_element);
let end = ctx
.execute_expr(&self.end_element, exec_state, &metadata, StatementKind::Expression)
.await?
.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 {
return Err(KclError::Semantic(KclErrorDetails {
@ -581,7 +581,7 @@ impl ArrayRangeExpression {
}
}
impl ObjectExpression {
impl UnboxedNode<ObjectExpression> {
#[async_recursion]
pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
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]
pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
// Check the `if` branch.
@ -717,7 +717,7 @@ impl Property {
let property_src: SourceRange = value.clone().into();
match value {
LiteralIdentifier::Identifier(identifier) => {
let name = identifier.name;
let name = &identifier.name;
if !computed {
// Treat the property as a literal
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 super::UnboxedNode;
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)]
#[databake(path = kcl_lib::ast::types)]
#[ts(export)]
@ -33,9 +35,9 @@ impl LiteralValue {
}
}
impl From<Literal> for Expr {
fn from(literal: Literal) -> Self {
Expr::Literal(Box::new(literal))
impl From<UnboxedNode<Literal>> for Expr {
fn from(literal: UnboxedNode<Literal>) -> Self {
Expr::Literal(literal)
}
}

View File

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

View File

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

View File

@ -3,7 +3,7 @@ use std::sync::Arc;
use anyhow::Result;
use crate::{
ast::types::CallExpression,
ast::types::{CallExpression, NodeRef},
docs::StdLibFn,
executor::SourceRange,
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."
);
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![];
if f.name() == "pow" {

View File

@ -3,14 +3,14 @@
use serde::{Deserialize, Serialize};
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.
#[derive(Debug)]
pub enum AstUpdated {}
impl Notification for AstUpdated {
type Params = crate::ast::types::Program;
type Params = UnboxedNode<crate::ast::types::Program>;
const METHOD: &'static str = "kcl/astUpdated";
}

View File

@ -40,7 +40,7 @@ use tower_lsp::{
};
use crate::{
ast::types::{Expr, VariableKind},
ast::types::{Expr, NodeRef, UnboxedNode, VariableKind},
executor::{IdGenerator, SourceRange},
lsp::{backend::Backend as _, util::IntoDiagnostic},
parser::PIPE_OPERATOR,
@ -99,7 +99,7 @@ pub struct Backend {
/// Token maps.
pub token_map: DashMap<String, Vec<crate::token::Token>>,
/// AST maps.
pub ast_map: DashMap<String, crate::ast::types::Program>,
pub ast_map: DashMap<String, UnboxedNode<crate::ast::types::Program>>,
/// Memory maps.
pub memory_map: DashMap<String, crate::executor::ProgramMemory>,
/// Current code.
@ -571,7 +571,7 @@ impl Backend {
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.
if !self.can_execute().await {
return Ok(());

View File

@ -7,6 +7,7 @@ use tower_lsp::{
};
use crate::{
ast::types::{Program, UnboxedNode},
executor::ProgramMemory,
lsp::test_util::{copilot_lsp_server, kcl_lsp_server},
};
@ -1070,7 +1071,7 @@ fn myFn = (param1) => {
// Get the ast.
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.
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default());
@ -2416,7 +2417,7 @@ async fn kcl_test_kcl_lsp_full_to_empty_file_updates_ast_and_memory() {
})
.await;
let mut default_hashed = crate::ast::types::Program::default();
let mut default_hashed = UnboxedNode::<Program>::default();
default_hashed.compute_digest();
// Get the ast.
@ -2453,7 +2454,7 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() {
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
server
.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();
assert_eq!(ast, crate::ast::types::Program::default());
assert_eq!(ast, UnboxedNode::<Program>::default());
server
.memory_map
.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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default());
@ -2806,7 +2807,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
assert!(memory != ProgramMemory::default());
@ -2841,7 +2842,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
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;
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();
// Get the ast.
@ -2924,7 +2925,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() {
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl").unwrap().clone();
// Now it should NOT be the default memory.
@ -3064,7 +3065,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone();
@ -3087,7 +3088,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone();
@ -3183,7 +3184,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none());
@ -3205,7 +3206,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none());
@ -3248,7 +3249,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none());
@ -3278,7 +3279,7 @@ const NEW_LINT = 1"#
// Get the ast.
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.
let memory = server.memory_map.get("file:///test.kcl");
assert!(memory.is_none());
@ -3394,7 +3395,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();
@ -3489,7 +3490,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();
@ -3532,7 +3533,7 @@ const part001 = startSketchOn('XY')
// Get the ast.
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.
let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone();

View File

@ -1,5 +1,5 @@
use crate::{
ast::types::Program,
ast::types::{Program, UnboxedNode},
errors::{KclError, KclErrorDetails},
executor::SourceRange,
token::{Token, TokenType},
@ -13,7 +13,7 @@ pub const PIPE_SUBSTITUTION_OPERATOR: &str = "%";
pub const PIPE_OPERATOR: &str = "|>";
/// 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 parser = Parser::new(tokens);
parser.ast()
@ -33,7 +33,7 @@ impl 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() {
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<_>>();
@ -48,7 +48,7 @@ impl Parser {
// Important, to not call this before the unknown tokens check.
if self.tokens.is_empty() {
// Empty file should just do nothing.
return Ok(Program::default());
return Ok(UnboxedNode::<Program>::default());
}
// Check all the tokens are whitespace or comments.
@ -57,7 +57,7 @@ impl Parser {
.iter()
.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())

View File

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

View File

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

View File

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

View File

@ -1,41 +1,57 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3570
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 9,
"operator": "+",
"left": {
"type": "Literal",
"type": "Literal",
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
},
"right": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 4,
"end": 9,
"operator": "*",
"operator": "+",
"left": {
"type": "Literal",
"type": "Literal",
"start": 4,
"end": 5,
"value": 2,
"raw": "2"
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 0,
"end": 1
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 8,
"end": 9,
"value": 3,
"raw": "3"
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 4,
"end": 5
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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
assertion_line: 3571
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 11,
"operator": "*",
"left": {
"type": "Literal",
"type": "Literal",
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
},
"right": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+",
"operator": "*",
"left": {
"type": "Literal",
"type": "Literal",
"start": 6,
"end": 7,
"value": 2,
"raw": "2"
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 0,
"end": 1
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 10,
"end": 11,
"value": 3,
"raw": "3"
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 6,
"end": 7
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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
assertion_line: 3572
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 17,
"operator": "/",
"left": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 0,
"end": 11,
"operator": "*",
"operator": "/",
"left": {
"type": "Literal",
"type": "Literal",
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 0,
"end": 1
},
"right": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 6,
"end": 7
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 10,
"end": 11
}
},
"start": 6,
"end": 11
}
},
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
"end": 11
},
"right": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"type": "Literal",
"start": 6,
"end": 7,
"value": 2,
"raw": "2"
"value": 4,
"raw": "4"
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 10,
"end": 11,
"value": 3,
"raw": "3"
}
"start": 16,
"end": 17
}
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 16,
"end": 17,
"value": 4,
"raw": "4"
}
"start": 0,
"end": 17
}

View File

@ -1,56 +1,78 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3573
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 17,
"operator": "+",
"left": {
"type": "Literal",
"type": "Literal",
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
},
"right": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 6,
"end": 17,
"operator": "/",
"operator": "+",
"left": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 6,
"end": 11,
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"type": "Literal",
"start": 6,
"end": 7,
"value": 2,
"raw": "2"
"value": 1,
"raw": "1"
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 10,
"end": 11,
"value": 3,
"raw": "3"
}
"start": 0,
"end": 1
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 16,
"end": 17,
"value": 4,
"raw": "4"
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "/",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 6,
"end": 7
},
"right": {
"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",
"value": 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
assertion_line: 3574
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 22,
"operator": "*",
"left": {
"type": "Literal",
"type": "Literal",
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
},
"right": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 7,
"end": 22,
"operator": "+",
"operator": "*",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 0,
"end": 1
},
"right": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 7,
"end": 18,
"operator": "/",
"left": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 7,
"end": 12,
"operator": "+",
"left": {
"type": "Literal",
"type": "Literal",
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "/",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 7,
"end": 8
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 11,
"end": 12
}
},
"start": 7,
"end": 12
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 4,
"raw": "4"
},
"start": 17,
"end": 18
}
},
"start": 7,
"end": 8,
"value": 2,
"raw": "2"
"end": 18
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 11,
"end": 12,
"value": 3,
"raw": "3"
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 5,
"raw": "5"
},
"start": 21,
"end": 22
}
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
"value": 4,
"raw": "4"
}
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 21,
"end": 22,
"value": 5,
"raw": "5"
"start": 7,
"end": 22
}
}
},
"start": 0,
"end": 22
}

View File

@ -1,41 +1,57 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3575
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 13,
"operator": "*",
"left": {
"type": "Literal",
"type": "Literal",
"start": 0,
"end": 1,
"value": 1,
"raw": "1"
},
"right": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 8,
"end": 13,
"operator": "+",
"operator": "*",
"left": {
"type": "Literal",
"type": "Literal",
"start": 8,
"end": 9,
"value": 2,
"raw": "2"
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 0,
"end": 1
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 12,
"end": 13,
"value": 3,
"raw": "3"
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 8,
"end": 9
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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
assertion_line: 3576
expression: actual
---
{
"type": "BinaryExpression",
"start": 0,
"end": 44,
"operator": "/",
"left": {
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 0,
"end": 22,
"operator": "*",
"operator": "/",
"left": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "distance"
},
"start": 0,
"end": 8
},
"right": {
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "p"
},
"start": 11,
"end": 12
}
},
"start": 0,
"end": 12
},
"right": {
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "FOS"
},
"start": 15,
"end": 18
}
},
"start": 0,
"end": 18
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 6,
"raw": "6"
},
"start": 21,
"end": 22
}
},
"start": 0,
"end": 18,
"operator": "*",
"left": {
"end": 22
},
"right": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 0,
"end": 12,
"operator": "*",
"left": {
"type": "Identifier",
"type": "Identifier",
"start": 0,
"end": 8,
"name": "distance"
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "sigmaAllow"
},
"start": 26,
"end": 36
},
"right": {
"type": "Identifier",
"type": "Identifier",
"start": 11,
"end": 12,
"name": "p"
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "width"
},
"start": 39,
"end": 44
}
},
"right": {
"type": "Identifier",
"type": "Identifier",
"start": 15,
"end": 18,
"name": "FOS"
}
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 21,
"end": 22,
"value": 6,
"raw": "6"
"start": 26,
"end": 44
}
},
"right": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 26,
"end": 44,
"operator": "*",
"left": {
"type": "Identifier",
"type": "Identifier",
"start": 26,
"end": 36,
"name": "sigmaAllow"
},
"right": {
"type": "Identifier",
"type": "Identifier",
"start": 39,
"end": 44,
"name": "width"
}
}
"start": 0,
"end": 44
}

View File

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

View File

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

View File

@ -1,44 +1,63 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3676
expression: actual
---
{
"start": 0,
"end": 17,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 17,
"declarations": [
{
"type": "VariableDeclarator",
"start": 6,
"end": 17,
"id": {
"type": "Identifier",
"start": 6,
"end": 8,
"name": "sg"
},
"init": {
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 11,
"end": 17,
"operator": "-",
"argument": {
"type": "Identifier",
"type": "Identifier",
"start": 12,
"end": 17,
"name": "scale"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "sg"
},
"start": 6,
"end": 8
},
"init": {
"type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression",
"operator": "-",
"argument": {
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"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
assertion_line: 3677
expression: actual
---
{
"start": 0,
"end": 23,
"body": [
{
"type": "ExpressionStatement",
"type": "ExpressionStatement",
"start": 0,
"end": 23,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 23,
"callee": {
"type": "Identifier",
"start": 0,
"end": 6,
"name": "lineTo"
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 22,
"properties": [
{
"type": "ObjectProperty",
"start": 9,
"end": 20,
"key": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"start": 9,
"end": 11,
"name": "to"
"name": "lineTo"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 20,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
"value": 0,
"raw": "0"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 17,
"end": 19,
"operator": "-",
"argument": {
"type": "Literal",
"type": "Literal",
"start": 18,
"end": 19,
"value": 1,
"raw": "1"
"start": 0,
"end": 6
},
"arguments": [
{
"type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression",
"properties": [
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty",
"key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "to"
},
"start": 9,
"end": 11
},
"value": {
"type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression",
"elements": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 0,
"raw": "0"
},
"start": 14,
"end": 15
},
{
"type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression",
"operator": "-",
"argument": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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
},
"start": 0,
"end": 23
}
],
"optional": false
},
"start": 0,
"end": 23
}
}
]
]
},
"start": 0,
"end": 23
}

View File

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

View File

@ -1,77 +1,111 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3679
expression: actual
---
{
"start": 0,
"end": 80,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 5,
"end": 57,
"declarations": [
{
"type": "VariableDeclarator",
"start": 8,
"end": 57,
"id": {
"type": "Identifier",
"start": 8,
"end": 24,
"name": "firstPrimeNumber"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 27,
"end": 57,
"params": [],
"body": {
"start": 33,
"end": 57,
"body": [
{
"type": "ReturnStatement",
"type": "ReturnStatement",
"start": 43,
"end": 51,
"argument": {
"type": "Literal",
"type": "Literal",
"start": 50,
"end": 51,
"value": 2,
"raw": "2"
}
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "firstPrimeNumber"
},
"start": 8,
"end": 24
},
"init": {
"type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression",
"params": [],
"body": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement",
"argument": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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"
},
{
"type": "ExpressionStatement",
"type": "ExpressionStatement",
"start": 62,
"end": 80,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 62,
"end": 80,
"callee": {
"type": "Identifier",
"start": 62,
"end": 78,
"name": "firstPrimeNumber"
],
"kind": "fn"
},
"arguments": [],
"optional": false
"start": 5,
"end": 57
},
{
"type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "firstPrimeNumber"
},
"start": 62,
"end": 78
},
"arguments": [],
"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
assertion_line: 3687
expression: actual
---
{
"start": 0,
"end": 66,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 49,
"declarations": [
{
"type": "VariableDeclarator",
"start": 3,
"end": 49,
"id": {
"type": "Identifier",
"start": 3,
"end": 8,
"name": "thing"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 11,
"end": 49,
"params": [
{
"type": "Parameter",
"identifier": {
"type": "Identifier",
"start": 12,
"end": 17,
"name": "param"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "thing"
},
"start": 3,
"end": 8
},
"optional": false
}
],
"body": {
"start": 22,
"end": 49,
"body": [
{
"type": "ReturnStatement",
"type": "ReturnStatement",
"start": 32,
"end": 43,
"argument": {
"type": "Literal",
"type": "Literal",
"start": 39,
"end": 43,
"value": true,
"raw": "true"
}
"init": {
"type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression",
"params": [
{
"type": "Parameter",
"identifier": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "param"
},
"start": 12,
"end": 17
},
"optional": false
}
],
"body": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement",
"argument": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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"
},
{
"type": "ExpressionStatement",
"type": "ExpressionStatement",
"start": 54,
"end": 66,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 54,
"end": 66,
"callee": {
"type": "Identifier",
"start": 54,
"end": 59,
"name": "thing"
],
"kind": "fn"
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 60,
"end": 65,
"value": false,
"raw": "false"
"start": 0,
"end": 49
},
{
"type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "thing"
},
"start": 54,
"end": 59
},
"arguments": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": false,
"raw": "false"
},
"start": 60,
"end": 65
}
],
"optional": false
},
"start": 54,
"end": 66
}
],
"optional": false
},
"start": 54,
"end": 66
}
}
]
]
},
"start": 0,
"end": 66
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,90 +1,127 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3719
expression: actual
---
{
"start": 0,
"end": 49,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 49,
"declarations": [
{
"type": "VariableDeclarator",
"start": 3,
"end": 49,
"id": {
"type": "Identifier",
"start": 3,
"end": 4,
"name": "f"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 7,
"end": 49,
"params": [
{
"type": "Parameter",
"identifier": {
"type": "Identifier",
"start": 8,
"end": 13,
"name": "angle"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "f"
},
"start": 3,
"end": 4
},
"optional": true
}
],
"body": {
"start": 19,
"end": 49,
"body": [
{
"type": "ReturnStatement",
"type": "ReturnStatement",
"start": 21,
"end": 47,
"argument": {
"type": "CallExpression",
"type": "CallExpression",
"start": 28,
"end": 47,
"callee": {
"type": "Identifier",
"start": 28,
"end": 35,
"name": "default"
},
"arguments": [
"init": {
"type": "FunctionExpression",
"type": "UnboxedNode",
"kind": {
"type": "FunctionExpression",
"params": [
{
"type": "Identifier",
"type": "Identifier",
"start": 36,
"end": 41,
"name": "angle"
},
{
"type": "Literal",
"type": "Literal",
"start": 43,
"end": 46,
"value": 360,
"raw": "360"
"type": "Parameter",
"identifier": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "angle"
},
"start": 8,
"end": 13
},
"optional": true
}
],
"optional": false
}
"body": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ReturnStatement",
"type": "UnboxedNode",
"kind": {
"type": "ReturnStatement",
"argument": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "default"
},
"start": 28,
"end": 35
},
"arguments": [
{
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "angle"
},
"start": 36,
"end": 41
},
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 360,
"raw": "360"
},
"start": 43,
"end": 46
}
],
"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
assertion_line: 3720
expression: actual
---
{
"start": 0,
"end": 91,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 91,
"declarations": [
{
"type": "VariableDeclarator",
"start": 4,
"end": 91,
"id": {
"type": "Identifier",
"start": 4,
"end": 11,
"name": "numbers"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
"value": 1,
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 79,
"end": 80,
"value": 3,
"raw": "3"
}
],
"nonCodeMeta": {
"nonCodeNodes": {
"1": [
{
"type": "NonCodeNode",
"start": 43,
"end": 48,
"value": {
"type": "blockComment",
"value": "A,",
"style": "line"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "numbers"
},
"start": 4,
"end": 11
},
"init": {
"type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression",
"elements": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 28,
"end": 29
},
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 79,
"end": 80
}
],
"nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": {
"1": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "A,",
"style": "line"
}
},
"start": 43,
"end": 48
}
],
"2": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "B,",
"style": "line"
}
},
"start": 61,
"end": 66
}
]
},
"start": []
},
"start": 0,
"end": 0
}
}
],
"2": [
{
"type": "NonCodeNode",
"start": 61,
"end": 66,
"value": {
"type": "blockComment",
"value": "B,",
"style": "line"
}
}
]
},
"start": 14,
"end": 91
}
},
"start": []
"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
assertion_line: 3729
expression: actual
---
{
"start": 0,
"end": 91,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 91,
"declarations": [
{
"type": "VariableDeclarator",
"start": 4,
"end": 91,
"id": {
"type": "Identifier",
"start": 4,
"end": 11,
"name": "numbers"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
"value": 1,
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 43,
"end": 44,
"value": 2,
"raw": "2"
}
],
"nonCodeMeta": {
"nonCodeNodes": {
"2": [
{
"type": "NonCodeNode",
"start": 58,
"end": 63,
"value": {
"type": "blockComment",
"value": "A,",
"style": "line"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "numbers"
},
"start": 4,
"end": 11
},
"init": {
"type": "ArrayExpression",
"type": "UnboxedNode",
"kind": {
"type": "ArrayExpression",
"elements": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 28,
"end": 29
},
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 43,
"end": 44
}
],
"nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": {
"2": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "A,",
"style": "line"
}
},
"start": 58,
"end": 63
}
],
"3": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "B,",
"style": "line"
}
},
"start": 76,
"end": 81
}
]
},
"start": []
},
"start": 0,
"end": 0
}
}
],
"3": [
{
"type": "NonCodeNode",
"start": 76,
"end": 81,
"value": {
"type": "blockComment",
"value": "B,",
"style": "line"
}
}
]
},
"start": 14,
"end": 91
}
},
"start": []
"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
assertion_line: 3738
expression: actual
---
{
"start": 0,
"end": 80,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 80,
"declarations": [
{
"type": "VariableDeclarator",
"start": 4,
"end": 80,
"id": {
"type": "Identifier",
"start": 4,
"end": 9,
"name": "props"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 80,
"properties": [
{
"type": "ObjectProperty",
"start": 26,
"end": 30,
"key": {
"type": "Identifier",
"start": 26,
"end": 27,
"name": "a"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "props"
},
"start": 4,
"end": 9
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 29,
"end": 30,
"value": 1,
"raw": "1"
}
},
{
"type": "ObjectProperty",
"start": 65,
"end": 69,
"key": {
"type": "Identifier",
"start": 65,
"end": 66,
"name": "c"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 68,
"end": 69,
"value": 3,
"raw": "3"
}
}
],
"nonCodeMeta": {
"nonCodeNodes": {
"1": [
{
"type": "NonCodeNode",
"start": 44,
"end": 52,
"value": {
"type": "blockComment",
"value": "b: 2,",
"style": "line"
"init": {
"type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression",
"properties": [
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty",
"key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "a"
},
"start": 26,
"end": 27
},
"value": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 29,
"end": 30
}
},
"start": 26,
"end": 30
},
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty",
"key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "c"
},
"start": 65,
"end": 66
},
"value": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 68,
"end": 69
}
},
"start": 65,
"end": 69
}
],
"nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": {
"1": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "b: 2,",
"style": "line"
}
},
"start": 44,
"end": 52
}
]
},
"start": []
},
"start": 0,
"end": 0
}
}
]
},
"start": 12,
"end": 80
}
},
"start": []
"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
assertion_line: 3746
expression: actual
---
{
"start": 0,
"end": 79,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 79,
"declarations": [
{
"type": "VariableDeclarator",
"start": 4,
"end": 79,
"id": {
"type": "Identifier",
"start": 4,
"end": 9,
"name": "props"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 79,
"properties": [
{
"type": "ObjectProperty",
"start": 26,
"end": 30,
"key": {
"type": "Identifier",
"start": 26,
"end": 27,
"name": "a"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "props"
},
"start": 4,
"end": 9
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 29,
"end": 30,
"value": 1,
"raw": "1"
}
},
{
"type": "ObjectProperty",
"start": 65,
"end": 69,
"key": {
"type": "Identifier",
"start": 65,
"end": 66,
"name": "c"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 68,
"end": 69,
"value": 3,
"raw": "3"
}
}
],
"nonCodeMeta": {
"nonCodeNodes": {
"1": [
{
"type": "NonCodeNode",
"start": 44,
"end": 52,
"value": {
"type": "blockComment",
"value": "b: 2,",
"style": "line"
"init": {
"type": "ObjectExpression",
"type": "UnboxedNode",
"kind": {
"type": "ObjectExpression",
"properties": [
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty",
"key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "a"
},
"start": 26,
"end": 27
},
"value": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"start": 29,
"end": 30
}
},
"start": 26,
"end": 30
},
{
"type": "UnboxedNode",
"kind": {
"type": "ObjectProperty",
"key": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "c"
},
"start": 65,
"end": 66
},
"value": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 68,
"end": 69
}
},
"start": 65,
"end": 69
}
],
"nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": {
"1": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "b: 2,",
"style": "line"
}
},
"start": 44,
"end": 52
}
]
},
"start": []
},
"start": 0,
"end": 0
}
}
]
},
"start": 12,
"end": 79
}
},
"start": []
"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
assertion_line: 3615
expression: actual
---
{
"start": 0,
"end": 36,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 36,
"declarations": [
{
"type": "VariableDeclarator",
"start": 6,
"end": 36,
"id": {
"type": "Identifier",
"start": 6,
"end": 11,
"name": "myVar"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 36,
"callee": {
"type": "Identifier",
"start": 14,
"end": 17,
"name": "min"
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 18,
"end": 19,
"value": 5,
"raw": "5"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 22,
"end": 35,
"operator": "-",
"argument": {
"type": "CallExpression",
"type": "CallExpression",
"start": 23,
"end": 35,
"callee": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"start": 23,
"end": 29,
"name": "legLen"
"name": "myVar"
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 30,
"end": 31,
"value": 5,
"raw": "5"
"start": 6,
"end": 11
},
"init": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "min"
},
"start": 14,
"end": 17
},
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 34,
"value": 4,
"raw": "4"
}
],
"optional": false
"arguments": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 5,
"raw": "5"
},
"start": 18,
"end": 19
},
{
"type": "UnaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "UnaryExpression",
"operator": "-",
"argument": {
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "legLen"
},
"start": 23,
"end": 29
},
"arguments": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 5,
"raw": "5"
},
"start": 30,
"end": 31
},
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 4,
"raw": "4"
},
"start": 33,
"end": 34
}
],
"optional": false
},
"start": 23,
"end": 35
}
},
"start": 22,
"end": 35
}
],
"optional": false
},
"start": 14,
"end": 36
}
}
],
"optional": false
}
}
],
"kind": "const"
}
]
},
"start": 6,
"end": 36
}
],
"kind": "const"
},
"start": 0,
"end": 36
}
]
},
"start": 0,
"end": 36
}

View File

@ -1,129 +1,180 @@
---
source: kcl/src/parser/parser_impl.rs
assertion_line: 3754
expression: actual
---
{
"start": 0,
"end": 133,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 1,
"end": 132,
"declarations": [
{
"type": "VariableDeclarator",
"start": 7,
"end": 132,
"id": {
"type": "Identifier",
"start": 7,
"end": 16,
"name": "sketch001"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 19,
"end": 132,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 19,
"end": 38,
"callee": {
"type": "Identifier",
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "sketch001"
},
"start": 7,
"end": 16
},
"init": {
"type": "PipeExpression",
"type": "UnboxedNode",
"kind": {
"type": "PipeExpression",
"body": [
{
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "startSketchOn"
},
"start": 19,
"end": 32
},
"arguments": [
{
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": "XY",
"raw": "'XY'"
},
"start": 33,
"end": 37
}
],
"optional": false
},
"start": 19,
"end": 38
},
{
"type": "CallExpression",
"type": "UnboxedNode",
"kind": {
"type": "CallExpression",
"callee": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "startProfileAt"
},
"start": 115,
"end": 129
},
"arguments": [
{
"type": "PipeSubstitution",
"type": "UnboxedNode",
"kind": {
"type": "PipeSubstitution"
},
"start": 130,
"end": 131
}
],
"optional": false
},
"start": 115,
"end": 132
}
],
"nonCodeMeta": {
"type": "UnboxedNode",
"kind": {
"nonCodeNodes": {
"0": [
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "|> arc({",
"style": "line"
}
},
"start": 41,
"end": 52
},
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "angleEnd: 270,",
"style": "line"
}
},
"start": 55,
"end": 74
},
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "angleStart: 450,",
"style": "line"
}
},
"start": 77,
"end": 98
},
{
"type": "UnboxedNode",
"kind": {
"type": "NonCodeNode",
"value": {
"type": "blockComment",
"value": "}, %)",
"style": "line"
}
},
"start": 101,
"end": 109
}
]
},
"start": []
},
"start": 0,
"end": 0
}
},
"start": 19,
"end": 32,
"name": "startSketchOn"
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 37,
"value": "XY",
"raw": "'XY'"
}
],
"optional": false
"end": 132
}
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 115,
"end": 132,
"callee": {
"type": "Identifier",
"start": 115,
"end": 129,
"name": "startProfileAt"
},
"arguments": [
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 130,
"end": 131
}
],
"optional": false
}
],
"nonCodeMeta": {
"nonCodeNodes": {
"0": [
{
"type": "NonCodeNode",
"start": 41,
"end": 52,
"value": {
"type": "blockComment",
"value": "|> arc({",
"style": "line"
}
},
{
"type": "NonCodeNode",
"start": 55,
"end": 74,
"value": {
"type": "blockComment",
"value": "angleEnd: 270,",
"style": "line"
}
},
{
"type": "NonCodeNode",
"start": 77,
"end": 98,
"value": {
"type": "blockComment",
"value": "angleStart: 450,",
"style": "line"
}
},
{
"type": "NonCodeNode",
"start": 101,
"end": 109,
"value": {
"type": "blockComment",
"value": "}, %)",
"style": "line"
}
}
]
},
"start": []
"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
assertion_line: 3765
expression: actual
---
{
"start": 0,
"end": 32,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 1,
"end": 31,
"declarations": [
{
"type": "VariableDeclarator",
"start": 7,
"end": 31,
"id": {
"type": "Identifier",
"start": 7,
"end": 11,
"name": "my14"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 14,
"end": 31,
"operator": "-",
"left": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 14,
"end": 19,
"operator": "^",
"left": {
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
"value": 4,
"raw": "4"
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 18,
"end": 19,
"value": 2,
"raw": "2"
}
},
"right": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 22,
"end": 31,
"operator": "*",
"left": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 22,
"end": 27,
"operator": "^",
"left": {
"type": "Literal",
"type": "Literal",
"start": 22,
"end": 23,
"value": 3,
"raw": "3"
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "my14"
},
"start": 7,
"end": 11
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 26,
"end": 27,
"value": 2,
"raw": "2"
"init": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "-",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "^",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 4,
"raw": "4"
},
"start": 14,
"end": 15
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 2,
"raw": "2"
},
"start": 18,
"end": 19
}
},
"start": 14,
"end": 19
},
"right": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "BinaryExpression",
"type": "UnboxedNode",
"kind": {
"type": "BinaryExpression",
"operator": "^",
"left": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 22,
"end": 23
},
"right": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 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
}
},
"right": {
"type": "Literal",
"type": "Literal",
"start": 30,
"end": 31,
"value": 2,
"raw": "2"
}
"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
assertion_line: 3771
expression: actual
---
{
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "VariableDeclaration",
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclaration",
"declarations": [
{
"type": "UnboxedNode",
"kind": {
"type": "VariableDeclarator",
"id": {
"type": "UnboxedNode",
"kind": {
"type": "Identifier",
"name": "x"
},
"start": 6,
"end": 7
},
"init": {
"type": "IfExpression",
"type": "UnboxedNode",
"kind": {
"type": "IfExpression",
"cond": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": true,
"raw": "true"
},
"start": 13,
"end": 17
},
"then_val": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement",
"expression": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 3,
"raw": "3"
},
"start": 32,
"end": 33
}
},
"start": 32,
"end": 33
}
]
},
"start": 32,
"end": 42
},
"else_ifs": [],
"final_else": {
"type": "UnboxedNode",
"kind": {
"body": [
{
"type": "ExpressionStatement",
"type": "UnboxedNode",
"kind": {
"type": "ExpressionStatement",
"expression": {
"type": "Literal",
"type": "UnboxedNode",
"kind": {
"type": "Literal",
"value": 4,
"raw": "4"
},
"start": 63,
"end": 64
}
},
"start": 63,
"end": 64
}
]
},
"start": 63,
"end": 73
},
"digest": null
},
"start": 10,
"end": 74
}
},
"start": 6,
"end": 74
}
],
"kind": "const"
},
"start": 0,
"end": 74
}
]
},
"start": 0,
"end": 74,
"body": [
{
"type": "VariableDeclaration",
"type": "VariableDeclaration",
"start": 0,
"end": 74,
"declarations": [
{
"type": "VariableDeclarator",
"start": 6,
"end": 74,
"id": {
"type": "Identifier",
"start": 6,
"end": 7,
"name": "x"
},
"init": {
"type": "IfExpression",
"type": "IfExpression",
"start": 10,
"end": 74,
"cond": {
"type": "Literal",
"type": "Literal",
"start": 13,
"end": 17,
"value": true,
"raw": "true"
},
"then_val": {
"start": 32,
"end": 42,
"body": [
{
"type": "ExpressionStatement",
"type": "ExpressionStatement",
"start": 32,
"end": 33,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
"value": 3,
"raw": "3"
}
}
]
},
"else_ifs": [],
"final_else": {
"start": 63,
"end": 73,
"body": [
{
"type": "ExpressionStatement",
"type": "ExpressionStatement",
"start": 63,
"end": 64,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 63,
"end": 64,
"value": 4,
"raw": "4"
}
}
]
},
"digest": null
}
}
],
"kind": "const"
}
]
"end": 74
}

View File

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

View File

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